diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /sw/qa/core | |
parent | Initial commit. (diff) | |
download | libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.tar.xz libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sw/qa/core')
372 files changed, 17655 insertions, 0 deletions
diff --git a/sw/qa/core/Test-BigPtrArray.cxx b/sw/qa/core/Test-BigPtrArray.cxx new file mode 100644 index 000000000..6754cda04 --- /dev/null +++ b/sw/qa/core/Test-BigPtrArray.cxx @@ -0,0 +1,636 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +//#define TIMELOG for measuring performance + +#include <bparr.hxx> + +namespace /* private */ +{ + const sal_Int32 NUM_ENTRIES = 10; + + class BigPtrEntryMock : public BigPtrEntry + { + public: + explicit BigPtrEntryMock(sal_Int32 count) : count_(count) + { + } + + sal_Int32 getCount() const + { + return count_; + } + + sal_Int32 Position() const + { + return GetPos(); + } + + private: + sal_Int32 count_; + }; + + void fillBigPtrArray(BigPtrArray& bparr, sal_Int32 numEntries) + { + for (sal_Int32 i = 0; i < numEntries; i++) + bparr.Insert(new BigPtrEntryMock(i), bparr.Count()); + } + + bool checkElementPositions(const BigPtrArray& bparr) + { + for (sal_Int32 i = 0; i < bparr.Count(); i++) + { + if (static_cast<BigPtrEntryMock*>(bparr[i])->Position() != i) + return false; + } + return true; + } + + void releaseBigPtrArrayContent(BigPtrArray const & bparr) + { + for (sal_Int32 i = 0; i < bparr.Count(); i++) + delete bparr[i]; + } +} + +class BigPtrArrayUnittest : public CppUnit::TestFixture +{ +public: + + BigPtrArrayUnittest() + { + } + + /** Test constructor/destructor + The size of the BigPtrArray + aka the 'Count' should be 0 + initially. + */ + void test_ctor() + { + BigPtrArray bparr; + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "BigPtrArray ctor failed", + static_cast<sal_Int32>(0), bparr.Count() + ); + } + + void test_insert_entries_at_front() + { + BigPtrArray bparr; + + for (sal_Int32 i = 0; i < NUM_ENTRIES; i++) + { + sal_Int32 oldCount = bparr.Count(); + bparr.Insert(new BigPtrEntryMock(i), 0); + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_entries_at_front failed", + oldCount + 1, bparr.Count() + ); + } + + for (sal_Int32 i = 0, j = NUM_ENTRIES - 1; i < NUM_ENTRIES; i++, j--) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_entries_at_front failed", + j, static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_insert_entries_at_front failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_insert_entries_in_the_middle() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + sal_Int32 oldCount = bparr.Count(); + + bparr.Insert(new BigPtrEntryMock(NUM_ENTRIES), bparr.Count() / 2); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_entries_in_the_middle failed", + oldCount + 1, bparr.Count() + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_entries_in_the_middle failed", + NUM_ENTRIES, static_cast<BigPtrEntryMock*>(bparr[bparr.Count() / 2])->getCount() + ); + + CPPUNIT_ASSERT_MESSAGE + ( + "test_insert_entries_in_the_middle failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_insert_at_already_used_index() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + const sal_Int32 oldCount = bparr.Count(); + + // insert 5 elements + for (sal_Int32 i = 0, j = 30; i < 5; i++, j++) + bparr.Insert(new BigPtrEntryMock(j), i); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_at_already_used_index failed", + oldCount + 5, bparr.Count() + ); + + // now, first 5 elements have counts: 30,31,..34 + // next 10 elements have counts: 0,1,..9 + for (sal_Int32 i = 0, j = 30; i < bparr.Count(); i++, j++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_at_already_used_index failed", + (i < 5 ? j : i - 5), static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_insert_at_already_used_index failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_insert_at_end() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + sal_Int32 oldCount = bparr.Count(); + bparr.Insert(new BigPtrEntryMock(NUM_ENTRIES), bparr.Count()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_at_end failed", + oldCount + 1, bparr.Count() + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_insert_at_end failed", + NUM_ENTRIES, static_cast<BigPtrEntryMock*>(bparr[bparr.Count()-1])->getCount() + ); + + CPPUNIT_ASSERT_MESSAGE + ( + "test_insert_at_end failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_remove_at_front() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (sal_Int32 i = 0; i < NUM_ENTRIES; i++) + { + sal_Int32 oldCount = bparr.Count(); + + delete bparr[0]; // release content + bparr.Remove(0); // remove item from container + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_at_front failed (wrong count)", + oldCount - 1, bparr.Count() + ); + + for (sal_Int32 j = 0, k = i + 1; j < bparr.Count(); j++, k++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_at_front failed", + k, static_cast<BigPtrEntryMock*>(bparr[j])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_remove_at_front failed", + checkElementPositions(bparr) + ); + } + } + + void test_remove_at_back() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (int i = NUM_ENTRIES - 1; i >= 0; i--) + { + sal_Int32 oldCount = bparr.Count(); + delete bparr[i]; + bparr.Remove(i); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_at_back failed (wrong count)", + (oldCount - 1), bparr.Count() + ); + + for (sal_Int32 j = 0; j < bparr.Count(); j++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_at_back failed", + j, static_cast<BigPtrEntryMock*>(bparr[j])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_remove_at_back failed", + checkElementPositions(bparr) + ); + } + } + + void test_remove_in_the_middle() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + while (bparr.Count()) + { + sal_Int32 oldCount = bparr.Count(); + sal_Int32 oldElement = static_cast<BigPtrEntryMock*>(bparr[bparr.Count() / 2])->getCount(); + + delete bparr[bparr.Count() / 2]; + bparr.Remove(bparr.Count() / 2); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_in_the_middle failed (wrong count)", + oldCount - 1, bparr.Count() + ); + + for (sal_Int32 i = 0; i < bparr.Count(); i++) + { + CPPUNIT_ASSERT_MESSAGE + ( + "test_remove_in_the_middle failed", + static_cast<BigPtrEntryMock*>(bparr[i])->getCount() != oldElement + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_remove_in_the_middle failed", + checkElementPositions(bparr) + ); + } + } + + void test_remove_multiple_elements_at_once() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + while(bparr.Count()) + { + sal_Int32 nRemove = std::min<sal_Int32>(bparr.Count(), 3); + sal_Int32 oldCount = bparr.Count(); + + for (sal_Int32 i = 0; i < nRemove; i++) + delete bparr[i]; + + bparr.Remove(0, nRemove); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_multiple_elements_at_once failed", + oldCount - nRemove, bparr.Count() + ); + + CPPUNIT_ASSERT_MESSAGE + ( + "test_remove_multiple_elements_at_once failed", + checkElementPositions(bparr) + ); + } + } + + void test_remove_all_elements_at_once() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + releaseBigPtrArrayContent(bparr); + bparr.Remove(0, bparr.Count()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_remove_all_elements_at_once failed", + static_cast<sal_Int32>(0), bparr.Count() + ); + } + + void test_move_elements_from_lower_to_higher_pos() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (sal_Int32 i = 0; i < NUM_ENTRIES - 1; i++) + { + bparr.Move(i, i + 2); + } + + for (sal_Int32 i = 0; i < (NUM_ENTRIES - 1); i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_move_elements_from_lower_to_higher_pos failed", + (i + 1), static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_move_elements_from_lower_to_higher_pos failed", + static_cast<sal_Int32>(0), static_cast<BigPtrEntryMock*>(bparr[NUM_ENTRIES -1])->getCount() + ); + + CPPUNIT_ASSERT_MESSAGE + ( + "test_move_elements_from_lower_to_higher_pos failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_move_elements_from_higher_to_lower_pos() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (int i = NUM_ENTRIES - 1; i >= 1; i--) + { + bparr.Move(i, i - 1); + } + + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_move_elements_from_higher_to_lower_pos failed", + (NUM_ENTRIES - 1), static_cast<BigPtrEntryMock*>(bparr[0])->getCount() + ); + + for (sal_Int32 i = 1; i < NUM_ENTRIES; i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_move_elements_from_higher_to_lower_pos failed", + (i - 1), static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_move_elements_from_higher_to_lower_pos failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_move_to_same_position() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (sal_Int32 i = 0; i < NUM_ENTRIES; i++) + { + bparr.Move(i, i); + } + + for (sal_Int32 i = 0; i < NUM_ENTRIES; i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_move_to_same_position failed", + i, static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_move_to_same_position failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + void test_replace_elements() + { + BigPtrArray bparr; + + fillBigPtrArray(bparr, NUM_ENTRIES); + + for (sal_Int32 i = 0, j = NUM_ENTRIES - 1; i < NUM_ENTRIES; i++, j--) + { + delete bparr[i]; + bparr.Replace(i, new BigPtrEntryMock(j)); + } + + for (sal_Int32 i = 0; i < NUM_ENTRIES; i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "test_replace_elements failed", + (NUM_ENTRIES - i - 1), static_cast<BigPtrEntryMock*>(bparr[i])->getCount() + ); + } + + CPPUNIT_ASSERT_MESSAGE + ( + "test_replace_elements failed", + checkElementPositions(bparr) + ); + + releaseBigPtrArrayContent(bparr); + } + + CPPUNIT_TEST_SUITE(BigPtrArrayUnittest); + CPPUNIT_TEST(test_ctor); + CPPUNIT_TEST(test_insert_entries_at_front); + CPPUNIT_TEST(test_insert_entries_in_the_middle); + CPPUNIT_TEST(test_insert_at_already_used_index); + CPPUNIT_TEST(test_insert_at_end); + CPPUNIT_TEST(test_remove_at_front); + CPPUNIT_TEST(test_remove_at_back); + CPPUNIT_TEST(test_remove_in_the_middle); + CPPUNIT_TEST(test_remove_multiple_elements_at_once); + CPPUNIT_TEST(test_remove_all_elements_at_once); + CPPUNIT_TEST(test_move_elements_from_lower_to_higher_pos); + CPPUNIT_TEST(test_move_elements_from_higher_to_lower_pos); + CPPUNIT_TEST(test_move_to_same_position); + CPPUNIT_TEST(test_replace_elements); + CPPUNIT_TEST_SUITE_END(); +}; + +#if defined TIMELOG + +const char* const START = "START: "; +const char* const END = "END: "; + +class PerformanceTracer +{ +public: + +public: + explicit PerformanceTracer(const string& methodName) : + startString_(START), + endString_(END) + { + startString_ += methodName; + endString_ += methodName; + } + + ~PerformanceTracer() + { + } + +private: + string startString_; + string endString_; +}; + +class BigPtrArrayPerformanceTest : public CppUnit::TestFixture +{ +public: + BigPtrArrayPerformanceTest() + { + } + + void test_insert_at_end_1000() + { test_insert_at_end("1000"); } + + void test_insert_at_end_10000() + { test_insert_at_end("10000"); } + + void test_insert_at_end_100000() + { test_insert_at_end("100000"); } + + void test_insert_at_end_1000000() + { test_insert_at_end("1000000"); } + + void test_insert_at_front_1000() + { test_insert_at_front("1000"); } + + void test_insert_at_front_10000() + { test_insert_at_front("10000"); } + + void test_insert_at_front_100000() + { test_insert_at_front("100000"); } + + void test_insert_at_front_1000000() + { test_insert_at_front("1000000"); } + + CPPUNIT_TEST_SUITE(BigPtrArrayPerformanceTest); + CPPUNIT_TEST(test_insert_at_end_1000); + CPPUNIT_TEST(test_insert_at_end_10000); + CPPUNIT_TEST(test_insert_at_end_100000); + CPPUNIT_TEST(test_insert_at_end_1000000); + CPPUNIT_TEST(test_insert_at_front_1000); + CPPUNIT_TEST(test_insert_at_front_10000); + CPPUNIT_TEST(test_insert_at_front_100000); + CPPUNIT_TEST(test_insert_at_front_1000000); + CPPUNIT_TEST_SUITE_END(); + +private: + void test_insert_at_end(const char* numElements) + { + OStringBuffer buff("test_insert_at_end "); + buff.append(numElements); + int n = atoi(numElements); + PerformanceTracer tracer(buff.getStr()); + BigPtrArray bparr; + for (int i = 0; i < n; i++) + bparr.Insert(new BigPtrEntryMock(i), bparr.Count()); + + releaseBigPtrArrayContent(bparr); + } + + void test_insert_at_front(const char* numElements) + { + OStringBuffer buff("test_insert_at_front "); + buff.append(numElements); + int n = atoi(numElements); + PerformanceTracer tracer(buff.getStr()); + BigPtrArray bparr; + for (int i = 0; i < n; i++) + bparr.Insert(new BigPtrEntryMock(i), 0); + + releaseBigPtrArrayContent(bparr); + } +}; + +#endif + +// register test suites +CPPUNIT_TEST_SUITE_REGISTRATION(BigPtrArrayUnittest); +#ifdef TIMELOG +CPPUNIT_TEST_SUITE_REGISTRATION(BigPtrArrayPerformanceTest); +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx new file mode 100644 index 000000000..169a3fa03 --- /dev/null +++ b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> +#include <AccessibilityCheck.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/accessibilitycheck/data/"; + +class AccessibilityCheckTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckDocumentIssues) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "DocumentTest.odt"); + CPPUNIT_ASSERT(pDoc); + sw::AccessibilityCheck aCheck(pDoc); + aCheck.check(); + auto& aIssues = aCheck.getIssueCollection().getIssues(); + CPPUNIT_ASSERT_EQUAL(size_t(2), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DOCUMENT_LANGUAGE, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DOCUMENT_TITLE, aIssues[1]->m_eIssueID); +} + +CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testTableSplitMergeAndAltText) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "AccessibilityTests1.odt"); + CPPUNIT_ASSERT(pDoc); + sw::AccessibilityCheck aCheck(pDoc); + aCheck.check(); + auto& aIssues = aCheck.getIssueCollection().getIssues(); + CPPUNIT_ASSERT_EQUAL(size_t(7), aIssues.size()); + + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_GRAPHIC, aIssues[0]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_OLE, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TABLE_MERGE_SPLIT, aIssues[2]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TABLE_MERGE_SPLIT, aIssues[3]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TABLE_MERGE_SPLIT, aIssues[4]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TABLE_MERGE_SPLIT, aIssues[5]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_SHAPE, aIssues[6]->m_eIssueID); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt b/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt Binary files differnew file mode 100644 index 000000000..2e319f58e --- /dev/null +++ b/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt diff --git a/sw/qa/core/accessibilitycheck/data/DocumentTest.odt b/sw/qa/core/accessibilitycheck/data/DocumentTest.odt Binary files differnew file mode 100644 index 000000000..65b9a7c2f --- /dev/null +++ b/sw/qa/core/accessibilitycheck/data/DocumentTest.odt diff --git a/sw/qa/core/attr/attr.cxx b/sw/qa/core/attr/attr.cxx new file mode 100644 index 000000000..0df9d9ef0 --- /dev/null +++ b/sw/qa/core/attr/attr.cxx @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <docsh.hxx> +#include <swdtflvr.hxx> +#include <swmodule.hxx> + +namespace +{ +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/attr/data/"; + +/// Covers sw/source/core/attr/ fixes. +class Test : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(Test, testSwAttrSet) +{ + // Given a document with track changes and the whole document is selected: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "attr-set.docx"); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + dispatchCommand(mxComponent, ".uno:SelectAll", {}); + dispatchCommand(mxComponent, ".uno:Cut", {}); + dispatchCommand(mxComponent, ".uno:SelectAll", {}); + rtl::Reference<SwTransferable> xTransferable(new SwTransferable(*pWrtShell)); + SwModule* pMod = SW_MOD(); + SwTransferable* pOldTransferable = pMod->m_pXSelection; + pMod->m_pXSelection = xTransferable.get(); + + // When getting the plain text version of the selection: + datatransfer::DataFlavor aFlavor; + aFlavor.MimeType = "text/plain;charset=utf-16"; + aFlavor.DataType = cppu::UnoType<OUString>::get(); + uno::Any aData = xTransferable->getTransferData(aFlavor); + + // Then make sure we get data without crashing: + CPPUNIT_ASSERT(aData.hasValue()); + pMod->m_pXSelection = pOldTransferable; +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/attr/data/attr-set.docx b/sw/qa/core/attr/data/attr-set.docx Binary files differnew file mode 100644 index 000000000..0cb8508aa --- /dev/null +++ b/sw/qa/core/attr/data/attr-set.docx diff --git a/sw/qa/core/crsr/crsr.cxx b/sw/qa/core/crsr/crsr.cxx new file mode 100644 index 000000000..3dc236c41 --- /dev/null +++ b/sw/qa/core/crsr/crsr.cxx @@ -0,0 +1,193 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/awt/FontWeight.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/view/XLineCursor.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> + +#include <comphelper/propertysequence.hxx> +#include <svl/srchitem.hxx> +#include <vcl/scheduler.hxx> + +#include <formatcontentcontrol.hxx> +#include <docsh.hxx> +#include <unotxdoc.hxx> +#include <wrtsh.hxx> +#include <ndtxt.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/crsr/data/"; + +/// Covers sw/source/core/crsr/ fixes. +class SwCoreCrsrTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreCrsrTest, testFindReplace) +{ + loadURL("private:factory/swriter", nullptr); + + // Given: a document with two "foo" in it, the second followed by a formatted soft hyphen. + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + // Create a document which has 2 lines: first line has foo in it, second line has the same, but + // followed by a formatted soft hyphen. + xText->insertString(xText->getEnd(), "foo xxx", /*bAbsorb=*/false); + xText->insertControlCharacter(xText->getEnd(), text::ControlCharacter::PARAGRAPH_BREAK, + /*bAbsorb=*/false); + xText->insertString(xText->getEnd(), OUString(u"foo xxx \xad after"), /*bAbsorb=*/false); + uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier( + xModel->getCurrentController(), uno::UNO_QUERY); + uno::Reference<text::XTextViewCursor> xViewCursor = xTextViewCursorSupplier->getViewCursor(); + xViewCursor->gotoEnd(/*bExpand=*/false); + xViewCursor->goLeft(/*nCount=*/6, /*bExpand=*/false); + xViewCursor->goLeft(/*nCount=*/1, /*bExpand=*/true); + uno::Reference<beans::XPropertySet> xViewCursorProps(xViewCursor, uno::UNO_QUERY); + xViewCursorProps->setPropertyValue("CharWeight", uno::Any(awt::FontWeight::BOLD)); + xViewCursor->gotoStart(/*bExpand=*/false); + + // When: doing search & replace 3 times. + uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence({ + { "SearchItem.SearchString", uno::Any(OUString("foo")) }, + { "SearchItem.ReplaceString", uno::Any(OUString("bar")) }, + { "SearchItem.Command", uno::Any(static_cast<sal_Int16>(SvxSearchCmd::REPLACE)) }, + })); + // Find the first foo. + dispatchCommand(mxComponent, ".uno:ExecuteSearch", aArgs); + // Replace the first foo. + dispatchCommand(mxComponent, ".uno:ExecuteSearch", aArgs); + // Replace the second foo. + dispatchCommand(mxComponent, ".uno:ExecuteSearch", aArgs); + + // Then: the second "foo" should be replaced as well. + xViewCursor->gotoEnd(/*bExpand=*/false); + uno::Reference<view::XLineCursor> xLineCursor(xViewCursor, uno::UNO_QUERY); + xLineCursor->gotoStartOfLine(/*bExpand=*/true); + OUString aActual = xViewCursor->getString(); + CPPUNIT_ASSERT_GREATEREQUAL(static_cast<sal_Int32>(3), aActual.getLength()); + OUString aActualStart = aActual.copy(0, 3); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: bar + // - Actual : foo + // i.e. the foo on the second line was not replaced. + CPPUNIT_ASSERT_EQUAL(OUString("bar"), aActualStart); +} + +CPPUNIT_TEST_FIXTURE(SwCoreCrsrTest, testSelAllStartsWithTable) +{ + load(DATA_DIRECTORY, "sel-all-starts-with-table.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwDoc* pDoc = pDocShell->GetDoc(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pDoc->GetTableFrameFormatCount(/*bUsed=*/true)); + + pWrtShell->SelAll(); + pWrtShell->SelAll(); + Scheduler::ProcessEventsToIdle(); + pWrtShell->DelLeft(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 + // - Actual : 1 + // i.e. the table selection was lost and the table was not deleted. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pDoc->GetTableFrameFormatCount(/*bUsed=*/true)); +} + +CPPUNIT_TEST_FIXTURE(SwCoreCrsrTest, testContentControlLineBreak) +{ + // Given a document with a (rich text) content control: + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // When pressing "enter" in the middle of that content control: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStt=*/true); + // Go after "t". + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, 2, /*bBasicCall=*/false); + dispatchCommand(mxComponent, ".uno:InsertPara", {}); + + // Then make sure that we only insert a line break, not a new paragraph: + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetMark()->nNode.GetNode().GetTextNode(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: t\nest + // - Actual : est + // i.e. a new paragraph was inserted, which is not allowed for inline content controls. + CPPUNIT_ASSERT_EQUAL(OUString("t\nest"), pTextNode->GetExpandText(pWrtShell->GetLayout())); +} + +CPPUNIT_TEST_FIXTURE(SwCoreCrsrTest, testContentControlReadOnly) +{ + // Given a document with a checkbox content control: + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, u"â˜", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + xContentControlProps->setPropertyValue("Checkbox", uno::Any(true)); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // When entering the content control: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStt=*/true); + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + + // Then make sure that the cursor is read-only: + // Without the accompanying fix in place, this test would have failed, it was possible to type + // into the checkbox content control, just to loose the typed content on the next click. + CPPUNIT_ASSERT(pWrtShell->HasReadonlySel()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreCrsrTest, testContentControlProtectedSection) +{ + // Given a document with a date content control in a protected section: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::DATE); + pWrtShell->SelAll(); + OUString aSectionName = pWrtShell->GetUniqueSectionName(); + SwSectionData aSection(SectionType::Content, aSectionName); + aSection.SetProtectFlag(true); + pWrtShell->InsertSection(aSection); + + // When entering the content control: + pWrtShell->SttEndDoc(/*bStt=*/true); + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + + // Then make sure that the cursor is read-only: + // Without the accompanying fix in place, this test would have failed, it was not possible to + // pick a date in a protected section (the new value was inserted, but the placeholder was not + // removed). + CPPUNIT_ASSERT(!pWrtShell->HasReadonlySel()); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/crsr/data/sel-all-starts-with-table.odt b/sw/qa/core/crsr/data/sel-all-starts-with-table.odt Binary files differnew file mode 100644 index 000000000..a368095a5 --- /dev/null +++ b/sw/qa/core/crsr/data/sel-all-starts-with-table.odt diff --git a/sw/qa/core/data/602/fail/.gitignore b/sw/qa/core/data/602/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/602/fail/.gitignore diff --git a/sw/qa/core/data/602/indeterminate/.gitignore b/sw/qa/core/data/602/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/602/indeterminate/.gitignore diff --git a/sw/qa/core/data/602/pass/.gitignore b/sw/qa/core/data/602/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/602/pass/.gitignore diff --git a/sw/qa/core/data/602/pass/Sample file zak.602 b/sw/qa/core/data/602/pass/Sample file zak.602 new file mode 100644 index 000000000..aaaed61a4 --- /dev/null +++ b/sw/qa/core/data/602/pass/Sample file zak.602 @@ -0,0 +1,641 @@ + 119
+
+ ZKON
+
+ ze dne 4. b©ezna 1992
+
+ o cestovn¡ch n hrad ch
+
+ ve znˆn¡ Opat©en¡ MPSV €R ze dne 9.prosince 1992, Opat©en¡ MPSV €R
+ ze dne 22.ledna 1993, Opat©en¡ MPSV ze dne 2.b©ezna 1993, Opat©en¡
+ MPSV ze dne 19.b©ezna 1993, Opat©en¡ MPSV ze dne 29.srpna 1993,
+ Opat©en¡ MPSV ze dne 19.listopadu 1993, Opat©en¡ MPSV ze dne 15.
+ prosince 1993,
+
+ a ve znˆn¡ z kona ‡. 44/1994 Sb.
+
+ Feder ln¡ shrom ‘dˆn¡ €esk‚ a Slovensk‚ Federativn¡ republiky
+ se usneslo na tomto z konˆ:
+
+
+ € S T P R V N ‹
+
+ Z kladn¡ ustanoven¡
+
+ 1
+
+ —‡el z kona
+
+ (1) Tento z kon upravuje poskytov n¡ n hrad v˜daj– p©i
+ pracovn¡ch cest ch, p©i jin˜ch zmˆn ch m¡sta v˜konu pr ce, p©i
+ p©ijet¡ do zamˆstn n¡ a p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡
+ (d le jen "n hrady")
+ a) pracovn¡k–m v pracovn¡m pomˆru,
+ b) ‡len–m dru‘stev, u nich‘ sou‡ st¡ ‡lenstv¡ je t‚‘ pracovn¡ vztah,
+ c) ob‡an–m ‡inn˜m na z kladˆ dohod o prac¡ch konan˜ch mimo pracovn¡
+ pomˆr, je-li to dohodnuto,
+ d) osob m, o nich‘ to stanov¡ tento z kon nebo jin˜ obecnˆ z vazn˜
+ pr vn¡ p©edpis,
+ (d le jen "zamˆstnanec").
+ (2) Tento z kon neupravuje poskytov n¡ n hrad ‡len–m pos dek
+ n mo©n¡ch lod¡ po dobu nalodˆn¡ {1}.
+
+
+
+ 2
+
+ Vymezen¡ pojm–
+
+ (1) Pracovn¡ cestou se pro £‡ely tohoto z kona rozum¡ doba od
+ n stupu zamˆstnance na cestu k v˜konu pr ce do jin‚ho m¡sta, ne‘ je
+ jeho pravideln‚ pracovi¨tˆ, v‡etnˆ v˜konu pr ce v tomto m¡stˆ, do
+ n vratu zamˆstnance z t‚to cesty.
+ (2) Zahrani‡n¡ pracovn¡ cestou se pro £‡ely tohoto z kona
+ rozum¡ doba pracovn¡ cesty (odstavec 1) z €esk‚ a Slovensk‚
+ Federativn¡ Republiky do zahrani‡¡, ze zahrani‡¡ do €esk‚
+ a Slovensk‚ Federativn¡ Republiky a doba pracovn¡ cesty
+ v zahrani‡¡.
+ (3) Pravideln˜m pracovi¨tˆm se pro £‡ely tohoto z kona rozum¡
+ m¡sto dohodnut‚ se zamˆstnancem; nen¡-li takov‚ m¡sto dohodnuto, je
+ pravideln˜m pracovi¨tˆm m¡sto v˜konu pr ce sjednan‚ v pracovn¡
+ smlouvˆ. U zamˆstnanc–, u nich‘ ‡ast zmˆna pracovi¨tˆ vypl˜v ze
+ zvl ¨tn¡ povahy povol n¡, je mo‘no jako pravideln‚ pracovi¨tˆ
+ dohodnout i m¡sto bydli¨tˆ.
+ (4) Za rodinu zamˆstnance se pro £‡ely tohoto z kona
+ pova‘uj¡, pokud maj¡ trval˜ pobyt na £zem¡ €esk‚ a Slovensk‚
+ Federativn¡ Republiky, jeho man‘el nebo druh, vlastn¡ dˆti,
+ osvojenci, dˆti svˆ©en‚ zamˆstnanci do pˆstounsk‚ p‚‡e nebo do
+ v˜chovy, vlastn¡ rodi‡e, osvojitel‚, opatrovn¡ci, pˆstouni,
+ pop©¡padˆ dal¨¡ osoby, ‘ij¡c¡ v dom cnosti {2} se zamˆstnancem.
+
+
+
+ € S T D R U H
+
+ Poskytov n¡ n hrad
+
+ N hrady p©i pracovn¡ cestˆ
+
+ 3
+
+ Zamˆstnavatel vys¡laj¡c¡ zamˆstnance na pracovn¡ cestu ur‡¡
+ m¡sto jej¡ho n stupu, m¡sto v˜konu pr ce, dobu trv n¡, zp–sob
+ dopravy a ukon‡en¡ pracovn¡ cesty; m–‘e ur‡it t‚‘ dal¨¡ podm¡nky
+ pracovn¡ cesty. Zamˆstnavatel je p©itom povinen p©ihl¡‘et
+ k opr vnˆn˜m z jm–m zamˆstnance.
+
+
+ 4
+
+ Zamˆstnanci vyslan‚mu na pracovn¡ cestu p©¡slu¨¡
+
+ a) n hrada prok zan˜ch j¡zdn¡ch v˜daj–,
+ b) n hrada prok zan˜ch v˜daj– za ubytov n¡,
+ c) stravn‚,
+ d) n hrada prok zan˜ch nutn˜ch vedlej¨¡ch v˜daj–,
+ e) n hrada prok zan˜ch j¡zdn¡ch v˜daj– za cesty k n v¨tˆvˆ rodiny
+ do m¡sta trval‚ho nebo mezi zamˆstnavatelem a zamˆstnancem
+ p©edem dohodnut‚ho pobytu rodiny, trv -li pracovn¡ cesta v¡ce
+ ne‘ sedm po sobˆ n sleduj¡c¡ch kalend ©n¡ch dn–, a to ka‘d˜
+ t˜den, nen¡-li v kolektivn¡ smlouvˆ, pop©¡padˆ v pracovn¡
+ smlouvˆ nebo jin‚ p¡semn‚ dohodˆ se zamˆstnancem dohodnuta tato
+ n hrada za del¨¡ dobu, nejd‚le v¨ak za jeden mˆs¡c.
+
+
+ 5
+
+ Stravn‚
+
+ (1) Za ka‘d˜ kalend ©n¡ den pracovn¡ cesty p©¡slu¨¡
+ zamˆstnanci stravn‚ v tomto dni ve v˜¨i
+ a) 34 K‡s, trv -li pracovn¡ cesta 5 a‘ 12 hodin,
+ b) 53 K‡s, trv -li pracovn¡ cesta d‚le ne‘ 12 hodin, nejv˜¨e v¨ak
+ 18 hodin,
+ c) 85 K‡s, trv -li pracovn¡ cesta d‚le ne‘ 18 hodin.
+ (2) Znemo‘n¡-li zamˆstnavatel vysl n¡m na pracovn¡ cestu,
+ kter trv m‚nˆ ne‘ 5 hodin, zamˆstnanci stravovat se obvykl˜m
+ zp–sobem, m–‘e mu poskytnout stravn‚ a‘ do v˜¨e 34 K‡s.
+ (3) Pro zamˆstnance, u nich‘ ‡ast zmˆna pracovi¨tˆ vypl˜v
+ ze zvl ¨tn¡ povahy povol n¡, lze sjednat v kolektivn¡ smlouvˆ
+ odchylnˆ od tohoto z kona podm¡nky pro poskytov n¡ stravn‚ho,
+ pop©¡padˆ ni‘¨¡ denn¡ sazby stravn‚ho p©i pracovn¡ cestˆ.
+ (4) Zabezpe‡¡-li zamˆstnavatel zamˆstnanci na pracovn¡ cestˆ
+ plnˆ bezplatn‚ stravov n¡, stravn‚ neposkytuje; zabezpe‡¡-li
+ bezplatn‚ stravov n¡ ‡ ste‡nˆ, stravn‚ £mˆrnˆ kr t¡.
+
+
+ 6
+
+ N hrady p©i p©elo‘en¡ a p©i p©ijet¡
+
+ (1) Zamˆstnanci p©¡slu¨¡ p©i p©elo‘en¡ z d–vod– nezbytn‚
+ provozn¡ pot©eby zamˆstnavatele n hrady jako p©i pracovn¡ cestˆ
+ nejd‚le po dobu t©¡ mˆs¡c–, pokud nen¡ dohodnuta doba del¨¡.
+ (2) Zamˆstnavatel m–‘e p©i p©ijet¡ zamˆstnance do zamˆstn n¡,
+ p©elo‘en¡ na ‘ dost zamˆstnance a do‡asn‚m p©idˆlen¡ zamˆstnance
+ k v˜konu pr ce u jin‚ho zamˆstnavatele {3} poskytovat zamˆstnanci
+ n hrady jako p©i pracovn¡ cestˆ a‘ v rozsahu a do v˜¨e stanoven‚
+ v 4 a 5.
+ (3) Zamˆstnanci, kter˜ pob¡r stravn‚ podle p©edchoz¡ch
+ odstavc– a je v t‚to dobˆ vysl n na pracovn¡ cestu, poskytuje
+ zamˆstnavatel n hradu, kter je pro zamˆstnance v˜hodnˆj¨¡.
+ (4) V p©¡padech uveden˜ch v odstavc¡ch 1 a 2 m–‘e
+ zamˆstnavatel poskytnout zamˆstnanci t‚‘ n hradu prok zan˜ch
+ stˆhovac¡ch v˜daj–.
+
+
+ 7
+
+ N hrady za pou‘¡v n¡ silni‡n¡ch motorov˜ch vozidel
+ p©i pracovn¡ch cest ch
+
+ (1) Dohodne-li se zamˆstnanec se zamˆstnavatelem, ‘e p©i
+ pracovn¡ cestˆ pou‘ije silni‡n¡ motorov‚ vozidlo, s v˜jimkou
+ vozidla zamˆstnavatele, p©¡slu¨¡ mu za ka‘d˜ 1 km j¡zdy sazba
+ z kladn¡ n hrady a n hrada za spot©ebovan‚ pohonn‚ hmoty.
+ (2) Sazba z kladn¡ n hrady za 1 km j¡zdy ‡in¡
+ a) u jednostop˜ch vozidel a t©¡kolek 0,75 K‡s,
+ b) u osobn¡ch silni‡n¡ch motorov˜ch vozidel 2,60 K‡s;
+ p©i pou‘it¡ p©¡vˆsu k silni‡n¡mu motorov‚mu vozidlu se sazba
+ z kladn¡ n hrady za 1 km j¡zdy zv˜¨¡ a‘ o 10%.
+ (3) Sazba z kladn¡ n hrady u n kladn¡ch automobil– a autobus–
+ se dohodne mezi zamˆstnancem a zamˆstnavatelem.
+ (4) N hrada v˜daj– za pohonn‚ hmoty p©¡slu¨¡ zamˆstnanci
+ podle cen pohonn˜ch hmot platn˜ch v dobˆ pou‘it¡ vozidla
+ a p©epo‡ten˜ch podle spot©eby vypo‡ten‚ aritmetick˜m pr–mˆrem
+ z £daj– uveden˜ch v technick‚m pr–kazu vozidla.
+ (5) Zamˆstnavatel m–‘e se zamˆstnancem sjednat t‚‘
+ poskytov n¡ n hrady za pou‘it¡ silni‡n¡ho motorov‚ho vozidla ve
+ v˜¨i odpov¡daj¡c¡ cenˆ j¡zdenky hromadn‚ho dopravn¡ho prost©edku
+ d lkov‚ p©epravy.
+
+
+ 8
+
+ P©izp–sobov n¡ sazeb n hrad
+
+ (1) V˜¨e sazeb n hrad stravn‚ho uveden v 5 odst. 1 a 2
+ a v˜¨e sazeb z kladn¡ch n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel uveden v 7 odst. 2 se upravuje podle statistick˜ch £daj–
+ o cen ch j¡del a nealkoholick˜ch n poj– ve ve©ejn‚m stravov n¡
+ a o cen ch a amortizaci vozidel. —prava sazeb se poprv‚ provede,
+ jestli‘e rozd¡l indexu cen podle vˆty prvn¡ vyhl ¨en‚ho
+ v p©¡slu¨n‚m kalend ©n¡m mˆs¡ci a indexu vyhl ¨en‚ho ke dni
+ £‡innosti tohoto z kona, ‡in¡ hodnotu alespo¤ 10 bod–; dal¨¡ £prava
+ se provede, jestli‘e rozd¡l indexu v p©¡slu¨n‚m kalend ©n¡m mˆs¡ci
+ a indexu v kalend ©n¡m mˆs¡ci, podle nˆho‘ byla naposled upravena
+ v˜¨e sazeb, ‡in¡ opˆt hodnotu alespo¤ 10 bod–. Upraven‚ sazby
+ n hrad podle vˆty prvn¡ p©¡slu¨¡ zamˆstnanc–m od prvn¡ho dne
+ kalend ©n¡ho mˆs¡ce n sleduj¡c¡ho po kalend ©n¡m mˆs¡ci, v nˆm‘
+ byly zve©ejnˆny.
+ (2) V˜¨i sazeb n hrad podle odstavce 1 stanov¡ a vyhl s¡
+ uve©ejnˆn¡m pln‚ho znˆn¡ ve Sb¡rce z kon– {4} feder ln¡
+ ministerstvo pr ce a soci ln¡ch vˆc¡ na z kladˆ £daj– Feder ln¡ho
+ statistick‚ho £©adu.
+ (3) Sazby stravn‚ho se zaokrouhluj¡ na cel‚ koruny do v˜¨e
+ 50 hal‚©– smˆrem dol– a od 50 hal‚©– v‡etnˆ smˆrem nahoru. Sazby
+ z kladn¡ch n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch vozidel se
+ zaokrouhluj¡ na pˆtihal‚©e.
+
+
+
+ 9
+
+ Jin‚ a vy¨¨¡ n hrady
+
+ Zamˆstnavatel, kter˜ nen¡ rozpo‡tovou nebo p©¡spˆvkovou
+ organizac¡ {5}, m–‘e poskytovat zamˆstnanc–m i jin‚ n hrady
+ souvisej¡c¡ s pracovn¡ cestou, s jin˜mi zmˆnami m¡sta v˜konu pr ce
+ a p©ijet¡m do zamˆstn n¡ nebo vy¨¨¡ n hrady, ne‘ stanov¡ tento
+ z kon; poskytov n¡ tˆchto n hrad lze sjednat v kolektivn¡ smlouvˆ
+ nebo v pracovn¡ch smlouv ch.
+
+
+
+ € S T T ž E T ‹
+
+ N hrady p©i zahrani‡n¡ch pracovn¡ch cest ch
+
+ 10
+
+ Na poskytov n¡ n hrad p©i zahrani‡n¡ch pracovn¡ch cest ch,
+ v‡etnˆ jin˜ch a vy¨¨¡ch n hrad, se vztahuje £prava stanoven
+ v 2 a‘ 9, pokud nen¡ d le stanoveno jinak.
+
+
+ 11
+
+ N hrada za cesty k n v¨tˆvˆ rodiny
+
+ P©i zahrani‡n¡ pracovn¡ cestˆ zamˆstnavatel dohodne se
+ zamˆstnancem poskytov n¡ n hrad za cesty k n v¨tˆvˆ rodiny do m¡sta
+ trval‚ho pobytu rodiny; ustanoven¡ 4 p¡sm. e) se nevztahuje na
+ cesty k n v¨tˆvˆ rodiny zamˆstnance vyslan‚ho na zahrani‡n¡
+ pracovn¡ cestu.
+
+
+ 12
+
+ Stravn‚
+
+ (1) Za ka‘d˜ kalend ©n¡ den zahrani‡n¡ pracovn¡ cesty a za
+ ka‘d˜ kalend ©n¡ den, v nˆm‘ zahrani‡n¡ pracovn¡ cesta trv d‚le
+ ne‘ 12 hodin, p©¡slu¨¡ zamˆstnanci stravn‚ v ciz¡ mˆnˆ. V˜¨i denn¡
+ sazby stravn‚ho v ciz¡ mˆnˆ stanov¡ a vyhl s¡ uve©ejnˆn¡m pln‚ho
+ znˆn¡ ve Sb¡rce z kon– 4) feder ln¡ ministerstvo financ¡.
+ (2) Trv -li zahrani‡n¡ pracovn¡ cesta v kalend ©n¡m dni m‚nˆ
+ ne‘ 12 hodin nebo trv -li celkovˆ m‚nˆ ne‘ 12 hodin, zamˆstnavatel
+ poskytuje stravn‚ v ciz¡ mˆnˆ nejv˜¨e do poloviny denn¡ sazby
+ ur‡en‚ podle p©edchoz¡ho odstavce.
+
+
+ 13
+
+ Kapesn‚
+
+ Zamˆstnavatel m–‘e zamˆstnanc–m p©i zahrani‡n¡ pracovn¡ cestˆ
+ poskytovat vedle stravn‚ho kapesn‚ v ciz¡ mˆnˆ do v˜¨e 40%
+ stravn‚ho ur‡en‚ho podle 12.
+
+
+ 14
+
+ N hrada v˜daj– za pohonn‚ hmoty
+
+ P©i poskytov n¡ n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel podle 7 p©¡slu¨¡ zamˆstnanci p©i zahrani‡n¡ pracovn¡
+ cestˆ n hrada za pohonn‚ hmoty v ciz¡ mˆnˆ za kilometry ujet‚
+ v zahrani‡¡ nad 350 km.
+
+
+ 15
+
+ Vylou‡en¡ soubˆhu n hrad poskytovan˜ch v ‡eskoslovensk‚
+ a ciz¡ mˆnˆ
+
+ (1) P©i zahrani‡n¡ pracovn¡ cestˆ p©¡slu¨¡ zamˆstnanci za
+ dobu pracovn¡ cesty na £zem¡ €esk‚ a Slovensk‚ Federativn¡
+ Republiky stravn‚ v ‡eskoslovensk‚ mˆnˆ v rozsahu a za podm¡nek
+ stanoven˜ch v 5 odst. 1.
+ (2) P©i zahrani‡n¡ pracovn¡ cestˆ je rozhodnou dobou pro
+ vznik n roku na n hrady poskytovan‚ v ciz¡ mˆnˆ p©echod
+ ‡eskoslovensk‚ st tn¡ hranice a p©i leteck‚ p©epravˆ odlet a p©¡let
+ letadla podle letov‚ho © du.
+
+
+ 16
+
+ Zahrani‡n¡ pracovn¡ cesty konan‚ na z kladˆ dohod
+ o vz jemn‚ v˜mˆnˆ zamˆstnanc–
+
+ (1) V dohodˆ o vz jemn‚ v˜mˆnˆ zamˆstnanc– m–‘e zamˆstnavatel
+ se zamˆstnavatelem, ke kter‚mu je zamˆstnanec vys¡l n, sjednat
+ poskytov n¡ bezplatn‚ho ubytov n¡, stravn‚ho, kapesn‚ho a n hradu
+ j¡zdn¡ch v˜daj– za cesty souvisej¡c¡ s v˜konem pr ce.
+ (2) J¡zdn¡ v˜daje za cesty ze s¡dla zamˆstnavatele, kter˜
+ zamˆstnance vys¡l na pracovn¡ cestu, do s¡dla zamˆstnavatele
+ v zahrani‡¡ a zpˆt hrad¡ vys¡laj¡c¡ zamˆstnavatel.
+ (3) Zamˆstnavatel‚ mohou dohodnout v˜¨i stravn‚ho
+ poskytovan‚ho ‡eskoslovensk‚mu zamˆstnanci v zahrani‡¡ maxim lnˆ do
+ v˜¨e stanoven‚ t¡mto z konem.
+ (4) Zahrani‡n¡mu zamˆstnanci vyslan‚mu do €esk‚ a Slovensk‚
+ Federativn¡ Republiky se poskytuje stravn‚ a‘ do v˜¨e 200 K‡s na
+ den a kapesn‚ do v˜¨e 40% stravn‚ho.
+ (5) Zamˆstnavatel‚, kte©¡ nejsou rozpo‡tov˜mi nebo
+ p©¡spˆvkov˜mi organizacemi, mohou poskytovat vy¨¨¡ stravn‚ hrazen‚
+ z pou‘iteln‚ho zisku.
+
+
+ 17
+
+ N hrady p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡
+
+ Zamˆstnanci p©idˆlen‚mu k v˜konu pr ce v zahrani‡¡, kter˜ je
+ odmˆ¤ov n podle zvl ¨tn¡ch p©edpis– {6}, p©¡slu¨¡ za dny cesty do
+ m¡sta p©idˆlen¡ a zpˆt a p©i pracovn¡ch cest ch v zahrani‡¡,
+ n hrady jako p©i zahrani‡n¡ pracovn¡ cestˆ. Pokud se zamˆstnancem
+ cestuje jeho rodinn˜ p©¡slu¨n¡k ( 2 odst.4), lze zamˆstnanci
+ poskytnout t‚‘ n hrady v˜daj–, kter‚ vznikly tomuto rodinn‚mu
+ p©¡slu¨n¡ku.
+
+
+
+ € S T € T V R T
+
+ Spole‡n , p©echodn a z vˆre‡n ustanoven¡
+
+ 18
+
+ (1) N hrady, na nˆ‘ vznik zamˆstnanc–m n rok, n hrady podle
+ 5 odst. 3, kapesn‚ do v˜¨e 40% stanoven‚ho stravn‚ho podle 13
+ a n hrady p©i p©ijet¡ zamˆstnance, kter˜ je uchaze‡em o zamˆstn n¡
+ {7}, se s v˜jimkou zamˆstnavatele, kter˜ je rozpo‡tovou nebo
+ p©¡spˆvkovou organizac¡, zahrnuj¡ do n klad– (v˜daj–). Ostatn¡
+ n hrady se hrad¡ z pou‘iteln‚ho zisku.
+ (2) N hrady poskytovan‚ zamˆstnanc–m vys¡lan˜m do zahrani‡¡
+ na mont ‘n¡ a obdobn‚ pr ce ke splnˆn¡ z vazk– ze smlouvy, kterou
+ zamˆstnavatel uzav©el se zahrani‡n¡m £‡astn¡kem p©i prov dˆn¡
+ zahrani‡n¡ hospod ©sk‚ ‡innosti, se zahrnuj¡ do zahrani‡n¡ch
+ p©¡m˜ch obchodn¡ch n klad–.
+
+
+ 19
+
+ N hrady podle tohoto z kona lze pau¨alizovat. P©i v˜po‡tu
+ pau¨ ln¡ ‡ stky vych z¡ zamˆstnavatel z pr–mˆrn˜ch podm¡nek
+ rozhodn˜ch pro poskytov n¡ n hrad zamˆstnanci nebo skupinˆ
+ zamˆstnanc–. Pokud se zmˆn¡ podm¡nky, za nich‘ byla pau¨ ln¡ ‡ stka
+ stanovena, je zamˆstnavatel povinen tuto ‡ stku p©ezkoumat
+ a upravit.
+
+
+ 20
+
+ Kde tento z kon po‘aduje prok z n¡ v˜daj– a zamˆstnanec je
+ neprok ‘e, m–‘e mu zamˆstnavatel poskytnout n hrady v j¡m uznan‚
+ v˜¨i s p©ihl‚dnut¡m k ur‡en˜m podm¡nk m pracovn¡ cesty ( 3).
+ Obdobnˆ lze postupovat i p©i poskytov n¡ n hrad j¡zdn¡ch v˜daj– za
+ mˆstskou hromadnou dopravu p©i pracovn¡ cestˆ na £zem¡ €esk‚
+ a Slovensk‚ Federativn¡ Republiky.
+
+
+ 21
+
+ (1) Po‘ d -li zamˆstnanec o poskytnut¡ z lohy na n hrady
+ podle tohoto z kona, je zamˆstnavatel povinen mu tuto z lohu do
+ v˜¨e p©edpokl dan‚ n hrady poskytnout.
+ (2) Zamˆstnavatel je povinen poskytnout zamˆstnanci p©i
+ zahrani‡n¡ pracovn¡ cestˆ z lohu v ciz¡ mˆnˆ v rozsahu a ve v˜¨i
+ podle p©edpokl dan‚ doby trv n¡ a podm¡nek zahrani‡n¡ pracovn¡
+ cesty.
+ (3) Zamˆstnanec je povinen do deseti pracovn¡ch dn– po dni
+ ukon‡en¡ pracovn¡ cesty p©edlo‘it zamˆstnavateli p¡semn‚ doklady
+ pot©ebn‚ k vy£‡tov n¡ pracovn¡ cesty a t‚‘ vr tit nevy£‡tovanou
+ z lohu.
+ (4) Zamˆstnavatel je povinen do deseti pracovn¡ch dn– ode dne
+ p©edlo‘en¡ p¡semn˜ch doklad– prov‚st vy£‡tov n¡ pracovn¡ cesty
+ zamˆstnance a uspokojit jeho n roky.
+
+
+ 22
+
+ Pokud ‡as str ven˜ na pracovn¡ cestˆ jinak ne‘ plnˆn¡m
+ pracovn¡ch £kol– spad do pracovn¡ doby zamˆstnance, pova‘uje se za
+ dobu zame¨kanou pro p©ek ‘ky v pr ci na stranˆ zamˆstnavatele. Za
+ tuto dobu n le‘¡ zamˆstnanci n hrada mzdy ve v˜¨i pr–mˆrn‚ho
+ v˜dˆlku {8}.
+
+
+
+ 23
+
+ Pracovnˆpr vn¡ vztahy podle tohoto z kona se ©¡d¡ z kon¡kem
+ pr ce, pokud v tomto z konˆ nen¡ stanoveno jinak.
+
+
+ 24
+
+ Vl da €esk‚ a Slovensk‚ Federativn¡ Republiky, vl da €esk‚
+ republiky a vl da Slovensk‚ republiky mohou v rozsahu sv‚
+ p–sobnosti stanovit na©¡zen¡m pro zamˆstnance zamˆstnavatel–, kte©¡
+ jsou rozpo‡tov˜mi nebo p©¡spˆvkov˜mi organizacemi, i jin‚ n hrady
+ souvisej¡c¡ s pracovn¡ cestou, jin˜mi zmˆnami m¡sta v˜konu pr ce,
+ p©ijet¡m do zamˆstn n¡ a p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡.
+
+
+ 25
+
+ (1) Zru¨uj¡ se:
+
+ 1. Vyhl ¨ka ministerstva financ¡ ‡. 18/1960 Sb., o n hrad ch
+ v˜daj– p©i zahrani‡n¡ch pracovn¡ch cest ch.
+
+ 2. Vyhl ¨ka feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 57/ 1979 Sb., o n hrad ch za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel p©i pracovn¡ch cest ch, ve znˆn¡ vyhl ¨ky ‡. 2/1984
+ Sb., vyhl ¨ky ‡. 251/1990 Sb., vyhl ¨ky ‡. 338/1990 Sb.,
+ vyhl ¨ky ‡. 430/1990 Sb. a vyhl ¨ky ‡. 480/1990 Sb.
+
+ 3. Vyhl ¨ka feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 33/1984 Sb., o cestovn¡ch n hrad ch, ve znˆn¡ vyhl ¨ky ‡.
+ 81/1988 Sb., vyhl ¨ky ‡. 241/1988 Sb. a vyhl ¨ky ‡. 251/1990
+ Sb.
+
+ 4. Vyhl ¨ka ministerstva pr ce a soci ln¡ch vˆc¡ €esk‚ republiky
+ ‡. 120/1991 Sb., kterou se dopl¤uj¡ nˆkter‚ pr vn¡ p©edpisy
+ o cestovn¡ch n hrad ch.
+
+ 5. Vyhl ¨ka ministerstva pr ce a soci ln¡ch vˆc¡ Slovensk‚
+ republiky ‡. 148/1991 Sb., kterou se dopl¤uje vyhl ¨ka
+ feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡. 33/1984
+ Sb., o cestovn¡ch n hrad ch, ve znˆn¡ pozdˆj¨¡ch p©edpis–,
+ a v˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ z 31.
+ srpna 1982 ‡.j. 315-5796-3161, o zvl ¨tn¡ £pravˆ n hrad
+ cestovn¡ch v˜daj– pracovn¡k– p©ijat˜ch ze Slovensk‚
+ socialistick‚ republiky do apar tu feder ln¡ch instituc¡, ve
+ znˆn¡ v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡
+ z 18. ‡ervna 1990 ‡.j. 225-18991-5157.
+
+ 6. Pokyny —st©edn¡ho svazu spot©ebn¡ch dru‘stev ze dne 7.dubna
+ 1965 ‡. 26/1965 Vˆst. —SSD pro poskytov n¡ n hrad pracovn¡k–m,
+ kte©¡ pravidelnˆ ve vˆt¨¡m rozsahu pou‘¡vaj¡ slu‘ebn¡ho
+ motocyklu, vlastn¡ho j¡zdn¡ho (motorov‚ho) kola nebo konaj¡
+ cesty pˆ¨ky (reg. ‡ stka 40/1965 Sb.).
+
+ 7. V˜nos ministerstva stavebnictv¡ ze dne 9.ledna 1968 ‡. 3/1968
+ Zpravodaje ministerstva stavebnictv¡ o ur‡en¡ pracovi¨Ÿ, na
+ kter se v podnic¡ch pr–myslov‚ v˜roby vztahuje zvl ¨tn¡ £prava
+ nocle‘n‚ho (reg. ‡ stka 10/1968 Sb.).
+
+ 8. V˜nos ministerstva zemˆdˆlstv¡ a v˜‘ivy ze dne 3.11. 1967
+ ‡j.VII/3-1747/1967, kter˜m se prov dˆj¡ nˆkter ustanoven¡
+ vyhl ¨ky ‡. 96/1967 Sb. (reg. ‡ stka 11/1968 SB.), ve znˆn¡
+ smˆrnice feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ze
+ 14. 1. 1972 ‡j. II/1-126/72-7501, v˜nosu feder ln¡ho
+ ministerstva zemˆdˆlstv¡ a v˜‘ivy, ministerstva zemˆdˆlstv¡
+ a v˜‘ivy €esk‚ socialistick‚ republiky a ministerstva
+ zemˆdˆlstv¡ a v˜‘ivy Slovensk‚ socialistick‚ republiky z 30.
+ 8. 1982 ‡j. FM 01-1263/82 a z 30. 5. 1984 ‡j. FM 04-244/84.
+
+ 9. V˜nos ‡. 2 ministerstva hornictv¡ ‡j. 42.3/657/68, kter˜m se
+ mˆn¡ ustanoven¡ ‡l. III a ‡l. V v˜nosu ‡. 9 ministerstva
+ hornictv¡ ‡j. 42.3/776/67 k proveden¡ z kon¡ku pr ce (reg.
+ ‡ stka 25/1968 Sb.), ve znˆn¡ v˜nosu Feder ln¡ho v˜boru pro
+ pr–mysl ‡. 1/1970 (reg. ‡ stka 13/1970 Sb.)
+
+ 10. V˜nos —st©edn¡ spr vy geod‚zie a kartografie ‡j. 6 158/1968-2,
+ kter˜m se stanov¡ z sady pro pau¨alizaci n hrad cestovn¡ch
+ v˜daj– (reg. ‡ stka 48/1968 Sb.).
+
+ 11. Smˆrnice feder ln¡ho ministerstva financ¡ ‡j. VII/4-8921/72,
+ o n hrad ch v˜daj– p©i zahrani‡n¡ch pracovn¡ch cest ch (reg.
+ ‡ stka 18/1971 Sb.), ve znˆn¡ v˜nosu feder ln¡ho ministerstva
+ financ¡ ‡j. VI/2-8900/88 (reg. ‡ stka 23/1988 Sb.).
+
+ 12. Z sady feder ln¡ho ministerstva dopravy ‡j. 20 808/75-09 pro
+ poskytov n¡ pau¨ ln¡ch n hrad cestovn¡ch v˜daj– (reg. ‡ stka
+ 3/l976 Sb.).
+
+ 13. V˜nos feder ln¡ho ministerstva financ¡ ze dne 20. b©ezna 1978
+ ‡j. II/6000/78, o odmˆ¤ov n¡ a hmotn‚ zabezpe‡en¡ nˆkter˜ch
+ pracovn¡k– po dobu jejich pobytu v zahrani‡¡ (reg. ‡ stka
+ 11/1978 Sb.).
+
+ 14. Smˆrnice feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ze
+ dne 10. srpna 1979 ‡j. 316-1238/79-7305, o odmˆ¤ov n¡
+ pracovn¡k–, kte©¡ v souvislosti s v˜konem povol n¡ ©¡d¡
+ slu‘ebn¡ silni‡n¡ motorov vozidla (reg. ‡ stka 25/1979 Sb.),
+ ve znˆn¡ vyhl ¨ka ‡. 251/1990 Sb.
+
+ 15. 4 a 5 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡
+ ‡j. 316-1099/81-7300, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch
+ n hrad vietnamsk˜m ob‡an–m do‡asnˆ zamˆstnan˜m v €eskoslovensk‚
+ socialistick‚ republice (reg. ‡ stka 34/1981 Sb.), ve znˆn¡
+ v˜nosu ze dne 31. 7. 1989 ‡j. 221-8747-5123, 060589 (reg.
+ ‡ stka 26/1989 Sb.).
+
+ 16. V˜nos feder ln¡ho ministerstva paliva a energetiky ‡.3
+ z 23.3.1982, kter˜m se stanov¡ stavby, na nich‘ se poskytuje
+ preferen‡n¡ odlu‡n‚ pracovn¡k–m stavebn¡ a stavebnˆ mont ‘n¡
+ ‡innosti (reg. ‡ stka 14/1982 Sb.), ve znˆn¡ v˜nosu feder ln¡ho
+ ministerstva paliv a energetiky ‡. 10 z 29. 10. 1982 (reg.
+ ‡ stka 3/1983 Sb.).
+
+ 17. V˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 315-5796-3161, o zvl ¨tn¡ £pravˆ n hrad cestovn¡ch v˜daj–
+ pracovn¡k– p©ijat˜ch ze Slovensk‚ socialistick‚ republiky do
+ apar tu feder ln¡ch instituc¡ (reg. ‡ stka 34/1982 Sb.), ve
+ znˆn¡ v˜nosu ‡j. 225/1899-5157 (reg. ‡ stka 45/1990 Sb.).
+
+ 18. Smˆrnice €esk‚ho svazu v˜robn¡ch dru‘stev ‡. 59/1982 Vˆstn¡ku
+ €esk‚ho svazu v˜robn¡ch dru‘stev, o n hrad ch cestovn¡ch
+ a jin˜ch v˜daj– komin¡k– (reg. ‡ stka 10/1983 Sb.).
+
+ 19. V˜nos feder ln¡ho ministerstva dopravy ze dne 12. ledna 1983
+ ‡j. 25 080/82-03, o poskytov n¡ leteck‚ stravn¡ normy ‡len–m
+ pos dek civiln¡ch letadel v organizac¡ch v p–sobnosti
+ feder ln¡ho ministerstva dopravy (reg. ‡ stka 9/1983 Sb.), ve
+ znˆn¡ v˜nosu ze dne 10. z ©¡ 1990 ‡j. 19 439/1990-320 (reg.
+ ‡ stka 75/1990 Sb.).
+
+ 20. V˜nos feder ln¡ho ministerstva n rodn¡ obrany ‡j.
+ 7440-FS/5-182, kter˜m se pro pracovn¡ky trustu podniku Vojensk‚
+ lesy a statky upravuj¡ nˆkter‚ n hrady podle vyhl ¨ky ‡.
+ 96/1967 Sb., o n hrad ch cestovn¡ch, stˆhovac¡ch a jin˜ch
+ v˜daj– (reg. ‡ stka 14/1983 Sb.), ve znˆn¡ vyhl ¨ky ‡. 91/1982
+ Sb.
+
+ 21. V˜nos feder ln¡ho ministerstva dopravy ze dne 27.©¡jna 1983 ‡j.
+ 20 324/1983-03, o poskytov n¡ leteck‚ stravn¡ normy ‡len–m
+ pos dek civiln¡ch letadel trvale vykon vaj¡c¡m ©¡d¡c¡ ‡innost
+ technickohospod ©sk‚ho charakteru v organizac¡ch v p–sobnosti
+ feder ln¡ho ministerstva dopravy (reg. ‡ stka 4/1984 Sb.), ve
+ znˆn¡ v˜nosu ze dne 10. z ©¡ 1990 ‡j. 19 439/1990-320 (reg.
+ ‡ stka 75/1990 Sb.).
+
+ 22. V˜nos feder ln¡ho ministerstva financ¡ ‡j. FMF VI/3-11 811/84
+ a feder ln¡ho ministerstva zahrani‡n¡ho obchodu ‡j. FMZO
+ 598/14/84, o n hrad ch v˜daj– p©i zahrani‡n¡ch pracovn¡ch
+ cest ch ‡len– pos dek dopravn¡ch prost©edk– (reg. ‡ stka
+ 22/1984 Sb.), ve znˆn¡ v˜nosu feder ln¡ho ministerstva financ¡
+ ‡j. VI/3-1840/87 a feder ln¡ho ministerstva zahrani‡n¡ho
+ obchodu ‡j. 86/14/87 (reg. ‡ stka 11/1987 Sb.).
+
+ 23. V˜nos ministerstva vnitra €esk‚ socialistick‚ republiky ‡j.
+ MH/13-6699/1939/85, o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch
+ cestovn‚ho pro komin¡ky a v˜kup‡¡ druhotn˜ch surovin
+ v organizac¡ch m¡stn¡ho hospod ©stv¡ (reg. ‡ stka 20/1985 Sb.),
+ ve znˆn¡ v˜nosu ze dne 18. 9. 1990 ‡j. MH/1-13980/720/1990
+ (reg. ‡ stka 67/1990 Sb.).
+
+ 24. V˜nos feder ln¡ho ministerstva financ¡ ‡j. VIII/4/16 986/85,
+ o stanoven¡ jednotn‚ zahrani‡n¡ diety pro ‡eskoslovensk‚
+ pracovn¡ky na integra‡n¡ch akc¡ch ve Svazu sovˆtsk˜ch
+ socialistick˜ch republika (reg. ‡ stka 30/1985 Sb.).
+
+ 25. Smˆrnice €esk‚ho svazu v˜robn¡ch dru‘stev ‡. 29/1985,
+ o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn‚ho pro komin¡ky (reg.
+ ‡ stka 4(1986 Sb.).
+
+ 26. V˜nos feder ln¡ho ministerstva dopravy ‡j. 6006/1986-03,
+ o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn¡ch v˜daj– pro nˆkter‚
+ pracovn¡ky dopravy, u nich‘ ‡ast zmˆna m¡sta v˜konu pr ce
+ vypl˜v ze zvl ¨tn¡ povahy povol n¡ (reg. ‡ stka 18/1986 Sb.),
+ ve znˆn¡ v˜nosu ze dne 10. 9. 1990 ‡j. 19 438/1990-32O (reg.
+ ‡ stka 70/1990 Sb.).
+
+ 27. V˜nos ministerstva vnitra €esk‚ socialistick‚ republiky ‡j.
+ SD/33-2728/1987, o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn¡ch
+ v˜daj– j¡zdn¡ch pracovn¡k– silni‡n¡ a mˆstsk‚ dopravy (reg.
+ ‡ stka 17/1987 Sb.), ve znˆn¡ v˜nosu ze dne 24. 7. 1990 ‡j.
+ SD/1-R-11 O21/90 (reg. ‡ stka 54/1990 Sb.).
+
+ 28. V˜nos feder ln¡ho ministerstva vnitra Slovensk‚ socialistick‚
+ republiky ‡. MH-41/203/1987, o zvl ¨tn¡ch pau¨ ln¡ch cestovn¡ch
+ n hrad ch pro komin¡ky a v˜kup‡¡ druhotn˜ch surovin
+ v organizac¡ch m¡stn¡ho hospod ©stv¡ (reg. ‡ stka 17/1987 Sb.),
+ ve znˆn¡ v˜nosu ministerstva vnitra Slovensk‚ republiky z 8.
+ ledna 1991 ‡. MH-5/1991-OE (reg. ‡ stka 1O/1991 Sb.).
+
+ 29. V˜nos feder ln¡ho ministerstva financ¡ ze dne 22. ‡ervna 1987
+ ‡j. III/11 000/87, o cestovn¡ch n hrad ch p©i zahrani‡n¡ch
+ bezdevizov˜ch pracovn¡ch cest ch (reg. ‡ stka 17/1987 Sb.).
+
+ 30. V˜nos ministerstva vnitra Slovensk‚ socialistick‚ republiky ze
+ dne 11. z ©¡ 1987 ‡. SD3138/1987-4, o zvl ¨tn¡ch pau¨ ln¡ch
+ cestovn¡ch n hrad ch pracovn¡k– silni‡n¡ a mˆstsk‚ dopravy,
+ silni‡n¡ho hospod ©stv¡ a automobilov‚ho oprav renstv¡ (reg.
+ ‡ stka 18/1987 Sb.), ve znˆn¡ v˜nosu z 3. ledna 1991 ‡.
+ SD-3-3003/1991.
+
+ 31. 5 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 515-31053-5123, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch n hrad
+ angolsk˜m ob‡an–m do‡asnˆ zamˆstnan˜m v ‡eskoslovensk˜ch
+ organizac¡ch (reg. ‡ stka 25/1987 Sb.).
+
+ 32. 4 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 515-37137-5123, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch n hrad
+ vedouc¡m skupin korejsk˜ch ob‡an– a korejsk˜m tlumo‡n¡k–m
+ zamˆstnan˜m v €eskoslovensk‚ socialistick‚ republice (reg.
+ ‡ stka 26/1987 Sb.).
+
+ 33. V˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 404/1991 Sb., o poskytov n¡ p©¡platku k £hradˆ cestovn¡ch
+ v˜daj– pracovn¡k–m p©ijat˜m z €esk‚ republiky do feder ln¡ch
+ org n– na £zem¡ Slovensk‚ republiky (reg. ‡ stka 76/1991 Sb.).
+
+ (2) Platnosti pozb˜vaj¡ v˜jimky, odchylky a dal¨¡ opat©en¡
+ stanoven‚ podle dosavadn¡ch pr vn¡ch p©edpis– o cestovn¡ch
+ n hrad ch.
+
+
+ 26
+
+ Tento z kon nab˜v £‡innosti dnem 1. kvˆtna 1992.
+
+
+
+ *1* Z kon ‡. 61/1952 Sb., o n mo©n¡ plavbˆ.
+ *2* 115 ob‡ansk‚ho z kon¡ku.
+ *3* 38 odst. 5 z kon¡ku pr ce.
+ 5 na©¡zen¡ vl dy €eskoslovensk‚ socialistick‚ republiky
+ ‡. 223/1988 Sb., kter˜m se prov d¡ z kon¡k pr ce.
+ *4* 8 z kona ‡. 131/1989 Sb., o Sb¡rce z kon–.
+ *5* 24 z kona ‡. 563/1990 Sb., o rozpo‡tov˜ch pravidlech federace.
+ 31 z kona €esk‚ n rodn¡ rady ‡. 576/1990 Sb., o pravidlech
+ hospoda©en¡ s rozpo‡tov˜mi prost©edky €esk‚ republiky a obc¡
+ v €esk‚ republice (rozpo‡tov pravidla republiky).
+ 28 z kona Slovensk‚ n rodn¡ rady ‡. 592/1990 Sb.,
+ o rozpo‡tov˜ch pravidlech Slovensk‚ republiky.
+ *6* Nap©¡klad
+ v˜nos ministra zahrani‡n¡ho obchodu ‡. 24/1962 ze dne
+ 23.‡ervna 1962 o £pravˆ platov˜ch pomˆr– zamˆstnanc–
+ ministerstva zahrani‡n¡ho obchodu p©idˆlen˜ch k v˜konu funkc¡
+ u obchodn¡ch oddˆlen¡ zastupitelsk˜ch £©ad– v zahrani‡¡, ve
+ znˆn¡ pozdˆj¨¡ch p©edpis–,
+ v˜nos ministra zahrani‡n¡ch vˆc¡ ‡. 013.147/62, z sady platov‚
+ £pravy pro zamˆstnance zahrani‡n¡ slu‘by.
+ *7* Z kon ‡. 1/1991 Sb., o zamˆstnanosti, ve znˆn¡ pozdˆj¨¡ch
+ p©edpis–.
+ *8* 17 z kona ‡. 1/1992 Sb., o mzdˆ, odmˆnˆ za pracovn¡
+ pohotovost a o pr–mˆrn‚m v˜dˆlku.
diff --git a/sw/qa/core/data/602/pass/cti_t602.602 b/sw/qa/core/data/602/pass/cti_t602.602 new file mode 100644 index 000000000..d22a2a23a --- /dev/null +++ b/sw/qa/core/data/602/pass/cti_t602.602 @@ -0,0 +1,146 @@ +@CT 1
+@LM 5
+@RM 75
+@PL 60
+@TB -----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T
+@MT 0
+@MB 2
+@PO 1
+@PN 1
+@LH 6
+
+
+ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+ ³ Textovì editor Text602 ³
+ ³ ³
+ ³ verze: 3.00 ³
+ ³ ³
+ ³ Software602, spol. s r.o. ³
+ ³ ³
+ ³ Pod pramenem 3, ³
+ ³ Praha 4, Nusle ³
+ ³ ³
+ ³ Objedn vky ................. P.O.Box 1, 140 00 Praha 4 ³
+ ³ Prodejny : ³
+ ³ Praha 1, Sp len 19 (Po-P 9,00-17,00) ³
+ ³ Praha 1, Biskupskì Dv…r (Po-P 10,00-18,00) ³
+ ³ ³
+ ³ éstýedna : (02)423817 nebo (02)421368 ³
+ ³ ³
+ ³ Hotline a z znam hovor… v mimopracovn¡ dobØ ³
+ ³ ³
+ ³ (02)422506 nebo (02)420905 ³
+ ³ ³
+ ³ Fax : (02)421105 Mail602 : (02)420448 ³
+ ³ ³
+ ³ Expedice : (02)421517 ³
+ ³ ³
+ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
+
+
+ Textovì editor Text602 verze 3.00 je souŸ st¡ dvou obchodn¡ch produkt…:
+
+ - Text602 verze 3.00
+ - Text602 KOMPLET
+
+ Doplåuj¡c¡ komponenty KOMPLETU jsou pops ny v kapitol ch informaŸn¡ho + souboru CTI_KOMP.602. SouŸ st¡ standardn¡ dod vky jsou v§dy tyto soubo + ry:
+
+ o T602.EXE, T602.KLV
+ ExekuŸn¡ soubor editoru Text602 a pýipraven‚ kl vesnice KL8 a KL9 pro + pý¡padnou redefinici.
+
+ o T602.HLP
+ Soubor s n povØdou pro Text602.
+
+ o *.FNT
+ Soubory font… pro standardn¡ grafick‚ drivery dev¡ti a Ÿtyýiadvaceti + jehliŸkovìch maticovìch tisk ren v kvalitØ: DRAFT, NLQ, LQ a pro trys + kov‚ a laserov‚ tisk rny.
+
+ o *.DST
+ DefiniŸn¡ soubory pro tisk rny. Podrobnì pýehled a popis vlastnost¡ DST + soubor… najdete v informaŸn¡m souboru CTI_MATD.602.
+
+ o PREVIEW.DST
+ DefiniŸn¡ soubor pro tisk zrcadlov‚ho obrazu tiskov‚ str nky (A4) na + obrazovku.
+
+ o FAX.DST
+ DefiniŸn¡ soubor pro vìstup do faxov‚ho souboru.
+
+ o SLOV.MNU
+ Soubor pro slovensk menu (aktivuje se pý¡kazem T602 /SLOV.MNU).
+
+ o HC602.COM, PCXTF602.EXE, LOGO602.TIF
+ Program na sn¡m n¡ obsahu obrazovky a ukl d n¡ do soubor… ve form tu + TIFF. Pýevodn¡ program pro obr zky ulo§en‚ ve form tu PCX (napý. + z programu PaintBrush (Windows)) do form tu TIFF. Jako vzor je pýilo§en + soubor LOGO602.TIF, kterì obsahuje znak naç¡ firmy
+
+ Vçechny soubory jsou dod v ny v komprimovan‚ podobØ a je nutn‚ je in + stalovat pomoc¡ programu INST602 (viz soubor CTI_1111.602).
+@LH 3
+
+@LH 6
+ZmØny a doplåky k manu lu
+
+ - spouçtØc¡ pý¡kaz rezidentnØ instalovan‚ho programu HC602 byl zmØnØn + z povelu <Ctrl O><L> na <Ctrl Alt><O>.
+
+ - pýi tisku v¡ce kopi¡ je mo§nost zvolit re§im "SpojitØ" nebo "Po + str nk ch". Bli§ç¡ informace najdete v n povØdØ k pý¡kazu poŸet + Kopi¡.
+
+ - Ka§d kl vesnice si "pamatuje" polohu pýep¡naŸe Z > Y. Pýep¡naŸ se + nastav¡ podle polohy, kterou mØl naposledy pýi pou§it¡ t‚ kter‚ kl + vesnice. N povØda k rozlo§en¡ kl ves je zobrazena v§dy pro standardn¡ + tvar; t.j. bez prohozen¡ "Z" a "Y".
+
+ - Vedle programu HC602 (Orion) je zaýazena dalç¡ grafick utilita: + program PCXTF602. Program je urŸen ke konverzi soubor… obsahuj¡c¡ch + obrazov‚ informace ve form tu PCX do form tu TIFF. Program se spouçt¡ + z pý¡kazov‚ ý dky operaŸn¡ho syst‚mu:
+
+ PCXTF602 PCX_SOUBOR TIFF_SOUBOR [/B|/C]
+
+ parametr /B znamen b¡l‚ pozad¡ (default), /C znamen Ÿern‚ pozad¡.
+
+ - Editor umo§åuje naŸ¡st soubory oznaŸen‚ atributem Read Only. Tyto + soubory jsou indikov ny hvØzdiŸkou, zobrazenou pýed n zvem souboru. + Soubor m…§ete pouze prohl¡§et, nem…§ete jej vçak ulo§it ! Pokud jste + vçak ji§ v souboru provedli "nenahraditeln‚" £pravy a t‚ hvØzdiŸky + jste si vçimli a§ pozdØ, porad¡me v m malì trik: oznaŸte text jako + blok a ulo§te jej do nov‚ho souboru.
+
+ - Pokud spust¡te Preview kl vesovìm povelem <Ctrl PrtScr>, ukazuje + aktu ln¡ str nku textu. Spust¡te-li jej pý¡kazem Preview z menu Tisk, + ukazuje str nky zvolen‚ pý¡kazy Od str nky a Do str nky.
+
+ - Budete-li cht¡t V ç Text602 trvale pou§¡vat ve slovensk‚m re§imu, + zadejte pý¡kaz:
+
+ COPY /B T602.EXE + SLOV.MNU T602.EXE
+
+@LH 3
+
+@LH 6
+Reklamace
+
+ Opr vnØn‚ reklamace budou vyý¡zeny vìmØnnìm zp…sobem. VymØåuje se z + sadnØ celì komplet dod vky (bez manu lu). Pýi telefonickìch dotazech + z sadnØ uv dØjte verzi editoru (3.00), sv‚ s‚riov‚ Ÿ¡slo (uveden‚ na + obalu diskety), pý¡padnØ verzi instalaŸn¡ho programu. Pýev §n vØtçina + reklamac¡ je zp…sobena nekompatibilitou disketovìch mechanik. Pýi prv + n¡m ne£spØchu proto nejprve zkuste instalovat z jin‚ disketov‚ mechani + ky nebo na jin‚m zaý¡zen¡. Pýed prvn¡m spuçtØn¡m instalaŸn¡ch disket je + zajistØte proti pýepisu a tedy i zavirov n¡ (zalepte nebo u 3.5" pýe + suåte çoup tko do "otevýen‚" polohy).
+
+ Pýi probl‚mech s instalac¡ (je hl çena hardwarov chyba apod.) je (pod + le naçich zkuçenost¡) mo§n‚ usuzovat na n kazu poŸ¡taŸe virem. Nepokra + Ÿujte v dalç¡ pr ci bez d…kladn‚ho otestov n¡ vçech diskovìch m‚di¡ + a pamØti poŸ¡taŸe !!!!!
+.ENDTEXT
+.STOP
\ No newline at end of file diff --git a/sw/qa/core/data/602/pass/zak.602 b/sw/qa/core/data/602/pass/zak.602 new file mode 100644 index 000000000..aaaed61a4 --- /dev/null +++ b/sw/qa/core/data/602/pass/zak.602 @@ -0,0 +1,641 @@ + 119
+
+ ZKON
+
+ ze dne 4. b©ezna 1992
+
+ o cestovn¡ch n hrad ch
+
+ ve znˆn¡ Opat©en¡ MPSV €R ze dne 9.prosince 1992, Opat©en¡ MPSV €R
+ ze dne 22.ledna 1993, Opat©en¡ MPSV ze dne 2.b©ezna 1993, Opat©en¡
+ MPSV ze dne 19.b©ezna 1993, Opat©en¡ MPSV ze dne 29.srpna 1993,
+ Opat©en¡ MPSV ze dne 19.listopadu 1993, Opat©en¡ MPSV ze dne 15.
+ prosince 1993,
+
+ a ve znˆn¡ z kona ‡. 44/1994 Sb.
+
+ Feder ln¡ shrom ‘dˆn¡ €esk‚ a Slovensk‚ Federativn¡ republiky
+ se usneslo na tomto z konˆ:
+
+
+ € S T P R V N ‹
+
+ Z kladn¡ ustanoven¡
+
+ 1
+
+ —‡el z kona
+
+ (1) Tento z kon upravuje poskytov n¡ n hrad v˜daj– p©i
+ pracovn¡ch cest ch, p©i jin˜ch zmˆn ch m¡sta v˜konu pr ce, p©i
+ p©ijet¡ do zamˆstn n¡ a p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡
+ (d le jen "n hrady")
+ a) pracovn¡k–m v pracovn¡m pomˆru,
+ b) ‡len–m dru‘stev, u nich‘ sou‡ st¡ ‡lenstv¡ je t‚‘ pracovn¡ vztah,
+ c) ob‡an–m ‡inn˜m na z kladˆ dohod o prac¡ch konan˜ch mimo pracovn¡
+ pomˆr, je-li to dohodnuto,
+ d) osob m, o nich‘ to stanov¡ tento z kon nebo jin˜ obecnˆ z vazn˜
+ pr vn¡ p©edpis,
+ (d le jen "zamˆstnanec").
+ (2) Tento z kon neupravuje poskytov n¡ n hrad ‡len–m pos dek
+ n mo©n¡ch lod¡ po dobu nalodˆn¡ {1}.
+
+
+
+ 2
+
+ Vymezen¡ pojm–
+
+ (1) Pracovn¡ cestou se pro £‡ely tohoto z kona rozum¡ doba od
+ n stupu zamˆstnance na cestu k v˜konu pr ce do jin‚ho m¡sta, ne‘ je
+ jeho pravideln‚ pracovi¨tˆ, v‡etnˆ v˜konu pr ce v tomto m¡stˆ, do
+ n vratu zamˆstnance z t‚to cesty.
+ (2) Zahrani‡n¡ pracovn¡ cestou se pro £‡ely tohoto z kona
+ rozum¡ doba pracovn¡ cesty (odstavec 1) z €esk‚ a Slovensk‚
+ Federativn¡ Republiky do zahrani‡¡, ze zahrani‡¡ do €esk‚
+ a Slovensk‚ Federativn¡ Republiky a doba pracovn¡ cesty
+ v zahrani‡¡.
+ (3) Pravideln˜m pracovi¨tˆm se pro £‡ely tohoto z kona rozum¡
+ m¡sto dohodnut‚ se zamˆstnancem; nen¡-li takov‚ m¡sto dohodnuto, je
+ pravideln˜m pracovi¨tˆm m¡sto v˜konu pr ce sjednan‚ v pracovn¡
+ smlouvˆ. U zamˆstnanc–, u nich‘ ‡ast zmˆna pracovi¨tˆ vypl˜v ze
+ zvl ¨tn¡ povahy povol n¡, je mo‘no jako pravideln‚ pracovi¨tˆ
+ dohodnout i m¡sto bydli¨tˆ.
+ (4) Za rodinu zamˆstnance se pro £‡ely tohoto z kona
+ pova‘uj¡, pokud maj¡ trval˜ pobyt na £zem¡ €esk‚ a Slovensk‚
+ Federativn¡ Republiky, jeho man‘el nebo druh, vlastn¡ dˆti,
+ osvojenci, dˆti svˆ©en‚ zamˆstnanci do pˆstounsk‚ p‚‡e nebo do
+ v˜chovy, vlastn¡ rodi‡e, osvojitel‚, opatrovn¡ci, pˆstouni,
+ pop©¡padˆ dal¨¡ osoby, ‘ij¡c¡ v dom cnosti {2} se zamˆstnancem.
+
+
+
+ € S T D R U H
+
+ Poskytov n¡ n hrad
+
+ N hrady p©i pracovn¡ cestˆ
+
+ 3
+
+ Zamˆstnavatel vys¡laj¡c¡ zamˆstnance na pracovn¡ cestu ur‡¡
+ m¡sto jej¡ho n stupu, m¡sto v˜konu pr ce, dobu trv n¡, zp–sob
+ dopravy a ukon‡en¡ pracovn¡ cesty; m–‘e ur‡it t‚‘ dal¨¡ podm¡nky
+ pracovn¡ cesty. Zamˆstnavatel je p©itom povinen p©ihl¡‘et
+ k opr vnˆn˜m z jm–m zamˆstnance.
+
+
+ 4
+
+ Zamˆstnanci vyslan‚mu na pracovn¡ cestu p©¡slu¨¡
+
+ a) n hrada prok zan˜ch j¡zdn¡ch v˜daj–,
+ b) n hrada prok zan˜ch v˜daj– za ubytov n¡,
+ c) stravn‚,
+ d) n hrada prok zan˜ch nutn˜ch vedlej¨¡ch v˜daj–,
+ e) n hrada prok zan˜ch j¡zdn¡ch v˜daj– za cesty k n v¨tˆvˆ rodiny
+ do m¡sta trval‚ho nebo mezi zamˆstnavatelem a zamˆstnancem
+ p©edem dohodnut‚ho pobytu rodiny, trv -li pracovn¡ cesta v¡ce
+ ne‘ sedm po sobˆ n sleduj¡c¡ch kalend ©n¡ch dn–, a to ka‘d˜
+ t˜den, nen¡-li v kolektivn¡ smlouvˆ, pop©¡padˆ v pracovn¡
+ smlouvˆ nebo jin‚ p¡semn‚ dohodˆ se zamˆstnancem dohodnuta tato
+ n hrada za del¨¡ dobu, nejd‚le v¨ak za jeden mˆs¡c.
+
+
+ 5
+
+ Stravn‚
+
+ (1) Za ka‘d˜ kalend ©n¡ den pracovn¡ cesty p©¡slu¨¡
+ zamˆstnanci stravn‚ v tomto dni ve v˜¨i
+ a) 34 K‡s, trv -li pracovn¡ cesta 5 a‘ 12 hodin,
+ b) 53 K‡s, trv -li pracovn¡ cesta d‚le ne‘ 12 hodin, nejv˜¨e v¨ak
+ 18 hodin,
+ c) 85 K‡s, trv -li pracovn¡ cesta d‚le ne‘ 18 hodin.
+ (2) Znemo‘n¡-li zamˆstnavatel vysl n¡m na pracovn¡ cestu,
+ kter trv m‚nˆ ne‘ 5 hodin, zamˆstnanci stravovat se obvykl˜m
+ zp–sobem, m–‘e mu poskytnout stravn‚ a‘ do v˜¨e 34 K‡s.
+ (3) Pro zamˆstnance, u nich‘ ‡ast zmˆna pracovi¨tˆ vypl˜v
+ ze zvl ¨tn¡ povahy povol n¡, lze sjednat v kolektivn¡ smlouvˆ
+ odchylnˆ od tohoto z kona podm¡nky pro poskytov n¡ stravn‚ho,
+ pop©¡padˆ ni‘¨¡ denn¡ sazby stravn‚ho p©i pracovn¡ cestˆ.
+ (4) Zabezpe‡¡-li zamˆstnavatel zamˆstnanci na pracovn¡ cestˆ
+ plnˆ bezplatn‚ stravov n¡, stravn‚ neposkytuje; zabezpe‡¡-li
+ bezplatn‚ stravov n¡ ‡ ste‡nˆ, stravn‚ £mˆrnˆ kr t¡.
+
+
+ 6
+
+ N hrady p©i p©elo‘en¡ a p©i p©ijet¡
+
+ (1) Zamˆstnanci p©¡slu¨¡ p©i p©elo‘en¡ z d–vod– nezbytn‚
+ provozn¡ pot©eby zamˆstnavatele n hrady jako p©i pracovn¡ cestˆ
+ nejd‚le po dobu t©¡ mˆs¡c–, pokud nen¡ dohodnuta doba del¨¡.
+ (2) Zamˆstnavatel m–‘e p©i p©ijet¡ zamˆstnance do zamˆstn n¡,
+ p©elo‘en¡ na ‘ dost zamˆstnance a do‡asn‚m p©idˆlen¡ zamˆstnance
+ k v˜konu pr ce u jin‚ho zamˆstnavatele {3} poskytovat zamˆstnanci
+ n hrady jako p©i pracovn¡ cestˆ a‘ v rozsahu a do v˜¨e stanoven‚
+ v 4 a 5.
+ (3) Zamˆstnanci, kter˜ pob¡r stravn‚ podle p©edchoz¡ch
+ odstavc– a je v t‚to dobˆ vysl n na pracovn¡ cestu, poskytuje
+ zamˆstnavatel n hradu, kter je pro zamˆstnance v˜hodnˆj¨¡.
+ (4) V p©¡padech uveden˜ch v odstavc¡ch 1 a 2 m–‘e
+ zamˆstnavatel poskytnout zamˆstnanci t‚‘ n hradu prok zan˜ch
+ stˆhovac¡ch v˜daj–.
+
+
+ 7
+
+ N hrady za pou‘¡v n¡ silni‡n¡ch motorov˜ch vozidel
+ p©i pracovn¡ch cest ch
+
+ (1) Dohodne-li se zamˆstnanec se zamˆstnavatelem, ‘e p©i
+ pracovn¡ cestˆ pou‘ije silni‡n¡ motorov‚ vozidlo, s v˜jimkou
+ vozidla zamˆstnavatele, p©¡slu¨¡ mu za ka‘d˜ 1 km j¡zdy sazba
+ z kladn¡ n hrady a n hrada za spot©ebovan‚ pohonn‚ hmoty.
+ (2) Sazba z kladn¡ n hrady za 1 km j¡zdy ‡in¡
+ a) u jednostop˜ch vozidel a t©¡kolek 0,75 K‡s,
+ b) u osobn¡ch silni‡n¡ch motorov˜ch vozidel 2,60 K‡s;
+ p©i pou‘it¡ p©¡vˆsu k silni‡n¡mu motorov‚mu vozidlu se sazba
+ z kladn¡ n hrady za 1 km j¡zdy zv˜¨¡ a‘ o 10%.
+ (3) Sazba z kladn¡ n hrady u n kladn¡ch automobil– a autobus–
+ se dohodne mezi zamˆstnancem a zamˆstnavatelem.
+ (4) N hrada v˜daj– za pohonn‚ hmoty p©¡slu¨¡ zamˆstnanci
+ podle cen pohonn˜ch hmot platn˜ch v dobˆ pou‘it¡ vozidla
+ a p©epo‡ten˜ch podle spot©eby vypo‡ten‚ aritmetick˜m pr–mˆrem
+ z £daj– uveden˜ch v technick‚m pr–kazu vozidla.
+ (5) Zamˆstnavatel m–‘e se zamˆstnancem sjednat t‚‘
+ poskytov n¡ n hrady za pou‘it¡ silni‡n¡ho motorov‚ho vozidla ve
+ v˜¨i odpov¡daj¡c¡ cenˆ j¡zdenky hromadn‚ho dopravn¡ho prost©edku
+ d lkov‚ p©epravy.
+
+
+ 8
+
+ P©izp–sobov n¡ sazeb n hrad
+
+ (1) V˜¨e sazeb n hrad stravn‚ho uveden v 5 odst. 1 a 2
+ a v˜¨e sazeb z kladn¡ch n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel uveden v 7 odst. 2 se upravuje podle statistick˜ch £daj–
+ o cen ch j¡del a nealkoholick˜ch n poj– ve ve©ejn‚m stravov n¡
+ a o cen ch a amortizaci vozidel. —prava sazeb se poprv‚ provede,
+ jestli‘e rozd¡l indexu cen podle vˆty prvn¡ vyhl ¨en‚ho
+ v p©¡slu¨n‚m kalend ©n¡m mˆs¡ci a indexu vyhl ¨en‚ho ke dni
+ £‡innosti tohoto z kona, ‡in¡ hodnotu alespo¤ 10 bod–; dal¨¡ £prava
+ se provede, jestli‘e rozd¡l indexu v p©¡slu¨n‚m kalend ©n¡m mˆs¡ci
+ a indexu v kalend ©n¡m mˆs¡ci, podle nˆho‘ byla naposled upravena
+ v˜¨e sazeb, ‡in¡ opˆt hodnotu alespo¤ 10 bod–. Upraven‚ sazby
+ n hrad podle vˆty prvn¡ p©¡slu¨¡ zamˆstnanc–m od prvn¡ho dne
+ kalend ©n¡ho mˆs¡ce n sleduj¡c¡ho po kalend ©n¡m mˆs¡ci, v nˆm‘
+ byly zve©ejnˆny.
+ (2) V˜¨i sazeb n hrad podle odstavce 1 stanov¡ a vyhl s¡
+ uve©ejnˆn¡m pln‚ho znˆn¡ ve Sb¡rce z kon– {4} feder ln¡
+ ministerstvo pr ce a soci ln¡ch vˆc¡ na z kladˆ £daj– Feder ln¡ho
+ statistick‚ho £©adu.
+ (3) Sazby stravn‚ho se zaokrouhluj¡ na cel‚ koruny do v˜¨e
+ 50 hal‚©– smˆrem dol– a od 50 hal‚©– v‡etnˆ smˆrem nahoru. Sazby
+ z kladn¡ch n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch vozidel se
+ zaokrouhluj¡ na pˆtihal‚©e.
+
+
+
+ 9
+
+ Jin‚ a vy¨¨¡ n hrady
+
+ Zamˆstnavatel, kter˜ nen¡ rozpo‡tovou nebo p©¡spˆvkovou
+ organizac¡ {5}, m–‘e poskytovat zamˆstnanc–m i jin‚ n hrady
+ souvisej¡c¡ s pracovn¡ cestou, s jin˜mi zmˆnami m¡sta v˜konu pr ce
+ a p©ijet¡m do zamˆstn n¡ nebo vy¨¨¡ n hrady, ne‘ stanov¡ tento
+ z kon; poskytov n¡ tˆchto n hrad lze sjednat v kolektivn¡ smlouvˆ
+ nebo v pracovn¡ch smlouv ch.
+
+
+
+ € S T T ž E T ‹
+
+ N hrady p©i zahrani‡n¡ch pracovn¡ch cest ch
+
+ 10
+
+ Na poskytov n¡ n hrad p©i zahrani‡n¡ch pracovn¡ch cest ch,
+ v‡etnˆ jin˜ch a vy¨¨¡ch n hrad, se vztahuje £prava stanoven
+ v 2 a‘ 9, pokud nen¡ d le stanoveno jinak.
+
+
+ 11
+
+ N hrada za cesty k n v¨tˆvˆ rodiny
+
+ P©i zahrani‡n¡ pracovn¡ cestˆ zamˆstnavatel dohodne se
+ zamˆstnancem poskytov n¡ n hrad za cesty k n v¨tˆvˆ rodiny do m¡sta
+ trval‚ho pobytu rodiny; ustanoven¡ 4 p¡sm. e) se nevztahuje na
+ cesty k n v¨tˆvˆ rodiny zamˆstnance vyslan‚ho na zahrani‡n¡
+ pracovn¡ cestu.
+
+
+ 12
+
+ Stravn‚
+
+ (1) Za ka‘d˜ kalend ©n¡ den zahrani‡n¡ pracovn¡ cesty a za
+ ka‘d˜ kalend ©n¡ den, v nˆm‘ zahrani‡n¡ pracovn¡ cesta trv d‚le
+ ne‘ 12 hodin, p©¡slu¨¡ zamˆstnanci stravn‚ v ciz¡ mˆnˆ. V˜¨i denn¡
+ sazby stravn‚ho v ciz¡ mˆnˆ stanov¡ a vyhl s¡ uve©ejnˆn¡m pln‚ho
+ znˆn¡ ve Sb¡rce z kon– 4) feder ln¡ ministerstvo financ¡.
+ (2) Trv -li zahrani‡n¡ pracovn¡ cesta v kalend ©n¡m dni m‚nˆ
+ ne‘ 12 hodin nebo trv -li celkovˆ m‚nˆ ne‘ 12 hodin, zamˆstnavatel
+ poskytuje stravn‚ v ciz¡ mˆnˆ nejv˜¨e do poloviny denn¡ sazby
+ ur‡en‚ podle p©edchoz¡ho odstavce.
+
+
+ 13
+
+ Kapesn‚
+
+ Zamˆstnavatel m–‘e zamˆstnanc–m p©i zahrani‡n¡ pracovn¡ cestˆ
+ poskytovat vedle stravn‚ho kapesn‚ v ciz¡ mˆnˆ do v˜¨e 40%
+ stravn‚ho ur‡en‚ho podle 12.
+
+
+ 14
+
+ N hrada v˜daj– za pohonn‚ hmoty
+
+ P©i poskytov n¡ n hrad za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel podle 7 p©¡slu¨¡ zamˆstnanci p©i zahrani‡n¡ pracovn¡
+ cestˆ n hrada za pohonn‚ hmoty v ciz¡ mˆnˆ za kilometry ujet‚
+ v zahrani‡¡ nad 350 km.
+
+
+ 15
+
+ Vylou‡en¡ soubˆhu n hrad poskytovan˜ch v ‡eskoslovensk‚
+ a ciz¡ mˆnˆ
+
+ (1) P©i zahrani‡n¡ pracovn¡ cestˆ p©¡slu¨¡ zamˆstnanci za
+ dobu pracovn¡ cesty na £zem¡ €esk‚ a Slovensk‚ Federativn¡
+ Republiky stravn‚ v ‡eskoslovensk‚ mˆnˆ v rozsahu a za podm¡nek
+ stanoven˜ch v 5 odst. 1.
+ (2) P©i zahrani‡n¡ pracovn¡ cestˆ je rozhodnou dobou pro
+ vznik n roku na n hrady poskytovan‚ v ciz¡ mˆnˆ p©echod
+ ‡eskoslovensk‚ st tn¡ hranice a p©i leteck‚ p©epravˆ odlet a p©¡let
+ letadla podle letov‚ho © du.
+
+
+ 16
+
+ Zahrani‡n¡ pracovn¡ cesty konan‚ na z kladˆ dohod
+ o vz jemn‚ v˜mˆnˆ zamˆstnanc–
+
+ (1) V dohodˆ o vz jemn‚ v˜mˆnˆ zamˆstnanc– m–‘e zamˆstnavatel
+ se zamˆstnavatelem, ke kter‚mu je zamˆstnanec vys¡l n, sjednat
+ poskytov n¡ bezplatn‚ho ubytov n¡, stravn‚ho, kapesn‚ho a n hradu
+ j¡zdn¡ch v˜daj– za cesty souvisej¡c¡ s v˜konem pr ce.
+ (2) J¡zdn¡ v˜daje za cesty ze s¡dla zamˆstnavatele, kter˜
+ zamˆstnance vys¡l na pracovn¡ cestu, do s¡dla zamˆstnavatele
+ v zahrani‡¡ a zpˆt hrad¡ vys¡laj¡c¡ zamˆstnavatel.
+ (3) Zamˆstnavatel‚ mohou dohodnout v˜¨i stravn‚ho
+ poskytovan‚ho ‡eskoslovensk‚mu zamˆstnanci v zahrani‡¡ maxim lnˆ do
+ v˜¨e stanoven‚ t¡mto z konem.
+ (4) Zahrani‡n¡mu zamˆstnanci vyslan‚mu do €esk‚ a Slovensk‚
+ Federativn¡ Republiky se poskytuje stravn‚ a‘ do v˜¨e 200 K‡s na
+ den a kapesn‚ do v˜¨e 40% stravn‚ho.
+ (5) Zamˆstnavatel‚, kte©¡ nejsou rozpo‡tov˜mi nebo
+ p©¡spˆvkov˜mi organizacemi, mohou poskytovat vy¨¨¡ stravn‚ hrazen‚
+ z pou‘iteln‚ho zisku.
+
+
+ 17
+
+ N hrady p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡
+
+ Zamˆstnanci p©idˆlen‚mu k v˜konu pr ce v zahrani‡¡, kter˜ je
+ odmˆ¤ov n podle zvl ¨tn¡ch p©edpis– {6}, p©¡slu¨¡ za dny cesty do
+ m¡sta p©idˆlen¡ a zpˆt a p©i pracovn¡ch cest ch v zahrani‡¡,
+ n hrady jako p©i zahrani‡n¡ pracovn¡ cestˆ. Pokud se zamˆstnancem
+ cestuje jeho rodinn˜ p©¡slu¨n¡k ( 2 odst.4), lze zamˆstnanci
+ poskytnout t‚‘ n hrady v˜daj–, kter‚ vznikly tomuto rodinn‚mu
+ p©¡slu¨n¡ku.
+
+
+
+ € S T € T V R T
+
+ Spole‡n , p©echodn a z vˆre‡n ustanoven¡
+
+ 18
+
+ (1) N hrady, na nˆ‘ vznik zamˆstnanc–m n rok, n hrady podle
+ 5 odst. 3, kapesn‚ do v˜¨e 40% stanoven‚ho stravn‚ho podle 13
+ a n hrady p©i p©ijet¡ zamˆstnance, kter˜ je uchaze‡em o zamˆstn n¡
+ {7}, se s v˜jimkou zamˆstnavatele, kter˜ je rozpo‡tovou nebo
+ p©¡spˆvkovou organizac¡, zahrnuj¡ do n klad– (v˜daj–). Ostatn¡
+ n hrady se hrad¡ z pou‘iteln‚ho zisku.
+ (2) N hrady poskytovan‚ zamˆstnanc–m vys¡lan˜m do zahrani‡¡
+ na mont ‘n¡ a obdobn‚ pr ce ke splnˆn¡ z vazk– ze smlouvy, kterou
+ zamˆstnavatel uzav©el se zahrani‡n¡m £‡astn¡kem p©i prov dˆn¡
+ zahrani‡n¡ hospod ©sk‚ ‡innosti, se zahrnuj¡ do zahrani‡n¡ch
+ p©¡m˜ch obchodn¡ch n klad–.
+
+
+ 19
+
+ N hrady podle tohoto z kona lze pau¨alizovat. P©i v˜po‡tu
+ pau¨ ln¡ ‡ stky vych z¡ zamˆstnavatel z pr–mˆrn˜ch podm¡nek
+ rozhodn˜ch pro poskytov n¡ n hrad zamˆstnanci nebo skupinˆ
+ zamˆstnanc–. Pokud se zmˆn¡ podm¡nky, za nich‘ byla pau¨ ln¡ ‡ stka
+ stanovena, je zamˆstnavatel povinen tuto ‡ stku p©ezkoumat
+ a upravit.
+
+
+ 20
+
+ Kde tento z kon po‘aduje prok z n¡ v˜daj– a zamˆstnanec je
+ neprok ‘e, m–‘e mu zamˆstnavatel poskytnout n hrady v j¡m uznan‚
+ v˜¨i s p©ihl‚dnut¡m k ur‡en˜m podm¡nk m pracovn¡ cesty ( 3).
+ Obdobnˆ lze postupovat i p©i poskytov n¡ n hrad j¡zdn¡ch v˜daj– za
+ mˆstskou hromadnou dopravu p©i pracovn¡ cestˆ na £zem¡ €esk‚
+ a Slovensk‚ Federativn¡ Republiky.
+
+
+ 21
+
+ (1) Po‘ d -li zamˆstnanec o poskytnut¡ z lohy na n hrady
+ podle tohoto z kona, je zamˆstnavatel povinen mu tuto z lohu do
+ v˜¨e p©edpokl dan‚ n hrady poskytnout.
+ (2) Zamˆstnavatel je povinen poskytnout zamˆstnanci p©i
+ zahrani‡n¡ pracovn¡ cestˆ z lohu v ciz¡ mˆnˆ v rozsahu a ve v˜¨i
+ podle p©edpokl dan‚ doby trv n¡ a podm¡nek zahrani‡n¡ pracovn¡
+ cesty.
+ (3) Zamˆstnanec je povinen do deseti pracovn¡ch dn– po dni
+ ukon‡en¡ pracovn¡ cesty p©edlo‘it zamˆstnavateli p¡semn‚ doklady
+ pot©ebn‚ k vy£‡tov n¡ pracovn¡ cesty a t‚‘ vr tit nevy£‡tovanou
+ z lohu.
+ (4) Zamˆstnavatel je povinen do deseti pracovn¡ch dn– ode dne
+ p©edlo‘en¡ p¡semn˜ch doklad– prov‚st vy£‡tov n¡ pracovn¡ cesty
+ zamˆstnance a uspokojit jeho n roky.
+
+
+ 22
+
+ Pokud ‡as str ven˜ na pracovn¡ cestˆ jinak ne‘ plnˆn¡m
+ pracovn¡ch £kol– spad do pracovn¡ doby zamˆstnance, pova‘uje se za
+ dobu zame¨kanou pro p©ek ‘ky v pr ci na stranˆ zamˆstnavatele. Za
+ tuto dobu n le‘¡ zamˆstnanci n hrada mzdy ve v˜¨i pr–mˆrn‚ho
+ v˜dˆlku {8}.
+
+
+
+ 23
+
+ Pracovnˆpr vn¡ vztahy podle tohoto z kona se ©¡d¡ z kon¡kem
+ pr ce, pokud v tomto z konˆ nen¡ stanoveno jinak.
+
+
+ 24
+
+ Vl da €esk‚ a Slovensk‚ Federativn¡ Republiky, vl da €esk‚
+ republiky a vl da Slovensk‚ republiky mohou v rozsahu sv‚
+ p–sobnosti stanovit na©¡zen¡m pro zamˆstnance zamˆstnavatel–, kte©¡
+ jsou rozpo‡tov˜mi nebo p©¡spˆvkov˜mi organizacemi, i jin‚ n hrady
+ souvisej¡c¡ s pracovn¡ cestou, jin˜mi zmˆnami m¡sta v˜konu pr ce,
+ p©ijet¡m do zamˆstn n¡ a p©i p©idˆlen¡ k v˜konu pr ce v zahrani‡¡.
+
+
+ 25
+
+ (1) Zru¨uj¡ se:
+
+ 1. Vyhl ¨ka ministerstva financ¡ ‡. 18/1960 Sb., o n hrad ch
+ v˜daj– p©i zahrani‡n¡ch pracovn¡ch cest ch.
+
+ 2. Vyhl ¨ka feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 57/ 1979 Sb., o n hrad ch za pou‘¡v n¡ silni‡n¡ch motorov˜ch
+ vozidel p©i pracovn¡ch cest ch, ve znˆn¡ vyhl ¨ky ‡. 2/1984
+ Sb., vyhl ¨ky ‡. 251/1990 Sb., vyhl ¨ky ‡. 338/1990 Sb.,
+ vyhl ¨ky ‡. 430/1990 Sb. a vyhl ¨ky ‡. 480/1990 Sb.
+
+ 3. Vyhl ¨ka feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 33/1984 Sb., o cestovn¡ch n hrad ch, ve znˆn¡ vyhl ¨ky ‡.
+ 81/1988 Sb., vyhl ¨ky ‡. 241/1988 Sb. a vyhl ¨ky ‡. 251/1990
+ Sb.
+
+ 4. Vyhl ¨ka ministerstva pr ce a soci ln¡ch vˆc¡ €esk‚ republiky
+ ‡. 120/1991 Sb., kterou se dopl¤uj¡ nˆkter‚ pr vn¡ p©edpisy
+ o cestovn¡ch n hrad ch.
+
+ 5. Vyhl ¨ka ministerstva pr ce a soci ln¡ch vˆc¡ Slovensk‚
+ republiky ‡. 148/1991 Sb., kterou se dopl¤uje vyhl ¨ka
+ feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡. 33/1984
+ Sb., o cestovn¡ch n hrad ch, ve znˆn¡ pozdˆj¨¡ch p©edpis–,
+ a v˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ z 31.
+ srpna 1982 ‡.j. 315-5796-3161, o zvl ¨tn¡ £pravˆ n hrad
+ cestovn¡ch v˜daj– pracovn¡k– p©ijat˜ch ze Slovensk‚
+ socialistick‚ republiky do apar tu feder ln¡ch instituc¡, ve
+ znˆn¡ v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡
+ z 18. ‡ervna 1990 ‡.j. 225-18991-5157.
+
+ 6. Pokyny —st©edn¡ho svazu spot©ebn¡ch dru‘stev ze dne 7.dubna
+ 1965 ‡. 26/1965 Vˆst. —SSD pro poskytov n¡ n hrad pracovn¡k–m,
+ kte©¡ pravidelnˆ ve vˆt¨¡m rozsahu pou‘¡vaj¡ slu‘ebn¡ho
+ motocyklu, vlastn¡ho j¡zdn¡ho (motorov‚ho) kola nebo konaj¡
+ cesty pˆ¨ky (reg. ‡ stka 40/1965 Sb.).
+
+ 7. V˜nos ministerstva stavebnictv¡ ze dne 9.ledna 1968 ‡. 3/1968
+ Zpravodaje ministerstva stavebnictv¡ o ur‡en¡ pracovi¨Ÿ, na
+ kter se v podnic¡ch pr–myslov‚ v˜roby vztahuje zvl ¨tn¡ £prava
+ nocle‘n‚ho (reg. ‡ stka 10/1968 Sb.).
+
+ 8. V˜nos ministerstva zemˆdˆlstv¡ a v˜‘ivy ze dne 3.11. 1967
+ ‡j.VII/3-1747/1967, kter˜m se prov dˆj¡ nˆkter ustanoven¡
+ vyhl ¨ky ‡. 96/1967 Sb. (reg. ‡ stka 11/1968 SB.), ve znˆn¡
+ smˆrnice feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ze
+ 14. 1. 1972 ‡j. II/1-126/72-7501, v˜nosu feder ln¡ho
+ ministerstva zemˆdˆlstv¡ a v˜‘ivy, ministerstva zemˆdˆlstv¡
+ a v˜‘ivy €esk‚ socialistick‚ republiky a ministerstva
+ zemˆdˆlstv¡ a v˜‘ivy Slovensk‚ socialistick‚ republiky z 30.
+ 8. 1982 ‡j. FM 01-1263/82 a z 30. 5. 1984 ‡j. FM 04-244/84.
+
+ 9. V˜nos ‡. 2 ministerstva hornictv¡ ‡j. 42.3/657/68, kter˜m se
+ mˆn¡ ustanoven¡ ‡l. III a ‡l. V v˜nosu ‡. 9 ministerstva
+ hornictv¡ ‡j. 42.3/776/67 k proveden¡ z kon¡ku pr ce (reg.
+ ‡ stka 25/1968 Sb.), ve znˆn¡ v˜nosu Feder ln¡ho v˜boru pro
+ pr–mysl ‡. 1/1970 (reg. ‡ stka 13/1970 Sb.)
+
+ 10. V˜nos —st©edn¡ spr vy geod‚zie a kartografie ‡j. 6 158/1968-2,
+ kter˜m se stanov¡ z sady pro pau¨alizaci n hrad cestovn¡ch
+ v˜daj– (reg. ‡ stka 48/1968 Sb.).
+
+ 11. Smˆrnice feder ln¡ho ministerstva financ¡ ‡j. VII/4-8921/72,
+ o n hrad ch v˜daj– p©i zahrani‡n¡ch pracovn¡ch cest ch (reg.
+ ‡ stka 18/1971 Sb.), ve znˆn¡ v˜nosu feder ln¡ho ministerstva
+ financ¡ ‡j. VI/2-8900/88 (reg. ‡ stka 23/1988 Sb.).
+
+ 12. Z sady feder ln¡ho ministerstva dopravy ‡j. 20 808/75-09 pro
+ poskytov n¡ pau¨ ln¡ch n hrad cestovn¡ch v˜daj– (reg. ‡ stka
+ 3/l976 Sb.).
+
+ 13. V˜nos feder ln¡ho ministerstva financ¡ ze dne 20. b©ezna 1978
+ ‡j. II/6000/78, o odmˆ¤ov n¡ a hmotn‚ zabezpe‡en¡ nˆkter˜ch
+ pracovn¡k– po dobu jejich pobytu v zahrani‡¡ (reg. ‡ stka
+ 11/1978 Sb.).
+
+ 14. Smˆrnice feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ze
+ dne 10. srpna 1979 ‡j. 316-1238/79-7305, o odmˆ¤ov n¡
+ pracovn¡k–, kte©¡ v souvislosti s v˜konem povol n¡ ©¡d¡
+ slu‘ebn¡ silni‡n¡ motorov vozidla (reg. ‡ stka 25/1979 Sb.),
+ ve znˆn¡ vyhl ¨ka ‡. 251/1990 Sb.
+
+ 15. 4 a 5 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡
+ ‡j. 316-1099/81-7300, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch
+ n hrad vietnamsk˜m ob‡an–m do‡asnˆ zamˆstnan˜m v €eskoslovensk‚
+ socialistick‚ republice (reg. ‡ stka 34/1981 Sb.), ve znˆn¡
+ v˜nosu ze dne 31. 7. 1989 ‡j. 221-8747-5123, 060589 (reg.
+ ‡ stka 26/1989 Sb.).
+
+ 16. V˜nos feder ln¡ho ministerstva paliva a energetiky ‡.3
+ z 23.3.1982, kter˜m se stanov¡ stavby, na nich‘ se poskytuje
+ preferen‡n¡ odlu‡n‚ pracovn¡k–m stavebn¡ a stavebnˆ mont ‘n¡
+ ‡innosti (reg. ‡ stka 14/1982 Sb.), ve znˆn¡ v˜nosu feder ln¡ho
+ ministerstva paliv a energetiky ‡. 10 z 29. 10. 1982 (reg.
+ ‡ stka 3/1983 Sb.).
+
+ 17. V˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 315-5796-3161, o zvl ¨tn¡ £pravˆ n hrad cestovn¡ch v˜daj–
+ pracovn¡k– p©ijat˜ch ze Slovensk‚ socialistick‚ republiky do
+ apar tu feder ln¡ch instituc¡ (reg. ‡ stka 34/1982 Sb.), ve
+ znˆn¡ v˜nosu ‡j. 225/1899-5157 (reg. ‡ stka 45/1990 Sb.).
+
+ 18. Smˆrnice €esk‚ho svazu v˜robn¡ch dru‘stev ‡. 59/1982 Vˆstn¡ku
+ €esk‚ho svazu v˜robn¡ch dru‘stev, o n hrad ch cestovn¡ch
+ a jin˜ch v˜daj– komin¡k– (reg. ‡ stka 10/1983 Sb.).
+
+ 19. V˜nos feder ln¡ho ministerstva dopravy ze dne 12. ledna 1983
+ ‡j. 25 080/82-03, o poskytov n¡ leteck‚ stravn¡ normy ‡len–m
+ pos dek civiln¡ch letadel v organizac¡ch v p–sobnosti
+ feder ln¡ho ministerstva dopravy (reg. ‡ stka 9/1983 Sb.), ve
+ znˆn¡ v˜nosu ze dne 10. z ©¡ 1990 ‡j. 19 439/1990-320 (reg.
+ ‡ stka 75/1990 Sb.).
+
+ 20. V˜nos feder ln¡ho ministerstva n rodn¡ obrany ‡j.
+ 7440-FS/5-182, kter˜m se pro pracovn¡ky trustu podniku Vojensk‚
+ lesy a statky upravuj¡ nˆkter‚ n hrady podle vyhl ¨ky ‡.
+ 96/1967 Sb., o n hrad ch cestovn¡ch, stˆhovac¡ch a jin˜ch
+ v˜daj– (reg. ‡ stka 14/1983 Sb.), ve znˆn¡ vyhl ¨ky ‡. 91/1982
+ Sb.
+
+ 21. V˜nos feder ln¡ho ministerstva dopravy ze dne 27.©¡jna 1983 ‡j.
+ 20 324/1983-03, o poskytov n¡ leteck‚ stravn¡ normy ‡len–m
+ pos dek civiln¡ch letadel trvale vykon vaj¡c¡m ©¡d¡c¡ ‡innost
+ technickohospod ©sk‚ho charakteru v organizac¡ch v p–sobnosti
+ feder ln¡ho ministerstva dopravy (reg. ‡ stka 4/1984 Sb.), ve
+ znˆn¡ v˜nosu ze dne 10. z ©¡ 1990 ‡j. 19 439/1990-320 (reg.
+ ‡ stka 75/1990 Sb.).
+
+ 22. V˜nos feder ln¡ho ministerstva financ¡ ‡j. FMF VI/3-11 811/84
+ a feder ln¡ho ministerstva zahrani‡n¡ho obchodu ‡j. FMZO
+ 598/14/84, o n hrad ch v˜daj– p©i zahrani‡n¡ch pracovn¡ch
+ cest ch ‡len– pos dek dopravn¡ch prost©edk– (reg. ‡ stka
+ 22/1984 Sb.), ve znˆn¡ v˜nosu feder ln¡ho ministerstva financ¡
+ ‡j. VI/3-1840/87 a feder ln¡ho ministerstva zahrani‡n¡ho
+ obchodu ‡j. 86/14/87 (reg. ‡ stka 11/1987 Sb.).
+
+ 23. V˜nos ministerstva vnitra €esk‚ socialistick‚ republiky ‡j.
+ MH/13-6699/1939/85, o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch
+ cestovn‚ho pro komin¡ky a v˜kup‡¡ druhotn˜ch surovin
+ v organizac¡ch m¡stn¡ho hospod ©stv¡ (reg. ‡ stka 20/1985 Sb.),
+ ve znˆn¡ v˜nosu ze dne 18. 9. 1990 ‡j. MH/1-13980/720/1990
+ (reg. ‡ stka 67/1990 Sb.).
+
+ 24. V˜nos feder ln¡ho ministerstva financ¡ ‡j. VIII/4/16 986/85,
+ o stanoven¡ jednotn‚ zahrani‡n¡ diety pro ‡eskoslovensk‚
+ pracovn¡ky na integra‡n¡ch akc¡ch ve Svazu sovˆtsk˜ch
+ socialistick˜ch republika (reg. ‡ stka 30/1985 Sb.).
+
+ 25. Smˆrnice €esk‚ho svazu v˜robn¡ch dru‘stev ‡. 29/1985,
+ o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn‚ho pro komin¡ky (reg.
+ ‡ stka 4(1986 Sb.).
+
+ 26. V˜nos feder ln¡ho ministerstva dopravy ‡j. 6006/1986-03,
+ o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn¡ch v˜daj– pro nˆkter‚
+ pracovn¡ky dopravy, u nich‘ ‡ast zmˆna m¡sta v˜konu pr ce
+ vypl˜v ze zvl ¨tn¡ povahy povol n¡ (reg. ‡ stka 18/1986 Sb.),
+ ve znˆn¡ v˜nosu ze dne 10. 9. 1990 ‡j. 19 438/1990-32O (reg.
+ ‡ stka 70/1990 Sb.).
+
+ 27. V˜nos ministerstva vnitra €esk‚ socialistick‚ republiky ‡j.
+ SD/33-2728/1987, o zvl ¨tn¡ch pau¨ ln¡ch n hrad ch cestovn¡ch
+ v˜daj– j¡zdn¡ch pracovn¡k– silni‡n¡ a mˆstsk‚ dopravy (reg.
+ ‡ stka 17/1987 Sb.), ve znˆn¡ v˜nosu ze dne 24. 7. 1990 ‡j.
+ SD/1-R-11 O21/90 (reg. ‡ stka 54/1990 Sb.).
+
+ 28. V˜nos feder ln¡ho ministerstva vnitra Slovensk‚ socialistick‚
+ republiky ‡. MH-41/203/1987, o zvl ¨tn¡ch pau¨ ln¡ch cestovn¡ch
+ n hrad ch pro komin¡ky a v˜kup‡¡ druhotn˜ch surovin
+ v organizac¡ch m¡stn¡ho hospod ©stv¡ (reg. ‡ stka 17/1987 Sb.),
+ ve znˆn¡ v˜nosu ministerstva vnitra Slovensk‚ republiky z 8.
+ ledna 1991 ‡. MH-5/1991-OE (reg. ‡ stka 1O/1991 Sb.).
+
+ 29. V˜nos feder ln¡ho ministerstva financ¡ ze dne 22. ‡ervna 1987
+ ‡j. III/11 000/87, o cestovn¡ch n hrad ch p©i zahrani‡n¡ch
+ bezdevizov˜ch pracovn¡ch cest ch (reg. ‡ stka 17/1987 Sb.).
+
+ 30. V˜nos ministerstva vnitra Slovensk‚ socialistick‚ republiky ze
+ dne 11. z ©¡ 1987 ‡. SD3138/1987-4, o zvl ¨tn¡ch pau¨ ln¡ch
+ cestovn¡ch n hrad ch pracovn¡k– silni‡n¡ a mˆstsk‚ dopravy,
+ silni‡n¡ho hospod ©stv¡ a automobilov‚ho oprav renstv¡ (reg.
+ ‡ stka 18/1987 Sb.), ve znˆn¡ v˜nosu z 3. ledna 1991 ‡.
+ SD-3-3003/1991.
+
+ 31. 5 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 515-31053-5123, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch n hrad
+ angolsk˜m ob‡an–m do‡asnˆ zamˆstnan˜m v ‡eskoslovensk˜ch
+ organizac¡ch (reg. ‡ stka 25/1987 Sb.).
+
+ 32. 4 v˜nosu feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡j.
+ 515-37137-5123, o odmˆ¤ov n¡ a poskytov n¡ cestovn¡ch n hrad
+ vedouc¡m skupin korejsk˜ch ob‡an– a korejsk˜m tlumo‡n¡k–m
+ zamˆstnan˜m v €eskoslovensk‚ socialistick‚ republice (reg.
+ ‡ stka 26/1987 Sb.).
+
+ 33. V˜nos feder ln¡ho ministerstva pr ce a soci ln¡ch vˆc¡ ‡.
+ 404/1991 Sb., o poskytov n¡ p©¡platku k £hradˆ cestovn¡ch
+ v˜daj– pracovn¡k–m p©ijat˜m z €esk‚ republiky do feder ln¡ch
+ org n– na £zem¡ Slovensk‚ republiky (reg. ‡ stka 76/1991 Sb.).
+
+ (2) Platnosti pozb˜vaj¡ v˜jimky, odchylky a dal¨¡ opat©en¡
+ stanoven‚ podle dosavadn¡ch pr vn¡ch p©edpis– o cestovn¡ch
+ n hrad ch.
+
+
+ 26
+
+ Tento z kon nab˜v £‡innosti dnem 1. kvˆtna 1992.
+
+
+
+ *1* Z kon ‡. 61/1952 Sb., o n mo©n¡ plavbˆ.
+ *2* 115 ob‡ansk‚ho z kon¡ku.
+ *3* 38 odst. 5 z kon¡ku pr ce.
+ 5 na©¡zen¡ vl dy €eskoslovensk‚ socialistick‚ republiky
+ ‡. 223/1988 Sb., kter˜m se prov d¡ z kon¡k pr ce.
+ *4* 8 z kona ‡. 131/1989 Sb., o Sb¡rce z kon–.
+ *5* 24 z kona ‡. 563/1990 Sb., o rozpo‡tov˜ch pravidlech federace.
+ 31 z kona €esk‚ n rodn¡ rady ‡. 576/1990 Sb., o pravidlech
+ hospoda©en¡ s rozpo‡tov˜mi prost©edky €esk‚ republiky a obc¡
+ v €esk‚ republice (rozpo‡tov pravidla republiky).
+ 28 z kona Slovensk‚ n rodn¡ rady ‡. 592/1990 Sb.,
+ o rozpo‡tov˜ch pravidlech Slovensk‚ republiky.
+ *6* Nap©¡klad
+ v˜nos ministra zahrani‡n¡ho obchodu ‡. 24/1962 ze dne
+ 23.‡ervna 1962 o £pravˆ platov˜ch pomˆr– zamˆstnanc–
+ ministerstva zahrani‡n¡ho obchodu p©idˆlen˜ch k v˜konu funkc¡
+ u obchodn¡ch oddˆlen¡ zastupitelsk˜ch £©ad– v zahrani‡¡, ve
+ znˆn¡ pozdˆj¨¡ch p©edpis–,
+ v˜nos ministra zahrani‡n¡ch vˆc¡ ‡. 013.147/62, z sady platov‚
+ £pravy pro zamˆstnance zahrani‡n¡ slu‘by.
+ *7* Z kon ‡. 1/1991 Sb., o zamˆstnanosti, ve znˆn¡ pozdˆj¨¡ch
+ p©edpis–.
+ *8* 17 z kona ‡. 1/1992 Sb., o mzdˆ, odmˆnˆ za pracovn¡
+ pohotovost a o pr–mˆrn‚m v˜dˆlku.
diff --git a/sw/qa/core/data/README b/sw/qa/core/data/README new file mode 100644 index 000000000..a147d4be4 --- /dev/null +++ b/sw/qa/core/data/README @@ -0,0 +1,23 @@ +Files with the string 'CVE' in their name are encrypted to avoid +problems with virus checkers on source code download.; use: + +mdecrypt --bare -a arcfour -o hex -k 435645 -s 3 foo.doc # to unencrypt +mcrypt --bare -a arcfour -o hex -k 435645 -s 3 foo.doc # to create new tests + +to get access to the plain files for manual testing. + + +The files in these subdirectories are tested to +ensure that they import without crashing or hanging. +Files that crash during export should go into exportdata. + +Both data and exportdata are tested with +make CppunitTest_sw_filters_test or +make CppunitTest_sw_filters_test2 for ww6. + +Files that hang interactively, but pass filters_test +might be failing because of layout issues. See core/layout. + +pass: these files now load - without the fix they crashed or hung. +fail: these files still fail to load, but not because of crashing or hanging. +indeterminate: untested temporary holding area - to be sorted as pass/fail. diff --git a/sw/qa/core/data/doc/testVba.doc b/sw/qa/core/data/doc/testVba.doc Binary files differnew file mode 100644 index 000000000..e8c87c6ee --- /dev/null +++ b/sw/qa/core/data/doc/testVba.doc diff --git a/sw/qa/core/data/html/fail/.gitignore b/sw/qa/core/data/html/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/html/fail/.gitignore diff --git a/sw/qa/core/data/html/fail/ofz5909-1.html b/sw/qa/core/data/html/fail/ofz5909-1.html new file mode 100644 index 000000000..9511b2bc1 --- /dev/null +++ b/sw/qa/core/data/html/fail/ofz5909-1.html @@ -0,0 +1 @@ +<table><td><a class="sdfootnoteanc"href=" sdfootnote1 "></a><div id="sdfootnote1"><table><td>
\ No newline at end of file diff --git a/sw/qa/core/data/html/fail/ofz6891-1.html b/sw/qa/core/data/html/fail/ofz6891-1.html new file mode 100644 index 000000000..7d767d72a --- /dev/null +++ b/sw/qa/core/data/html/fail/ofz6891-1.html @@ -0,0 +1 @@ +<table align=left><td><table><S STYLE="position:absolute;width: 6">
\ No newline at end of file diff --git a/sw/qa/core/data/html/indeterminate/.gitignore b/sw/qa/core/data/html/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/html/indeterminate/.gitignore diff --git a/sw/qa/core/data/html/pass/CVE-2005-4720-1.html b/sw/qa/core/data/html/pass/CVE-2005-4720-1.html new file mode 100644 index 000000000..4d2275dc2 --- /dev/null +++ b/sw/qa/core/data/html/pass/CVE-2005-4720-1.html @@ -0,0 +1,2 @@ +u”þo +=‰JÃ9ŒÕhVØý£*MxÓ
\ No newline at end of file diff --git a/sw/qa/core/data/html/pass/EDB-14503-1.html b/sw/qa/core/data/html/pass/EDB-14503-1.html Binary files differnew file mode 100644 index 000000000..e4de15a9a --- /dev/null +++ b/sw/qa/core/data/html/pass/EDB-14503-1.html diff --git a/sw/qa/core/data/html/pass/EDB-35279-1.html b/sw/qa/core/data/html/pass/EDB-35279-1.html Binary files differnew file mode 100644 index 000000000..77e476a85 --- /dev/null +++ b/sw/qa/core/data/html/pass/EDB-35279-1.html diff --git a/sw/qa/core/data/html/pass/fdo65932.html b/sw/qa/core/data/html/pass/fdo65932.html new file mode 100644 index 000000000..d17936dd1 --- /dev/null +++ b/sw/qa/core/data/html/pass/fdo65932.html @@ -0,0 +1,45 @@ +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <body class="en file-preview-body shmodel-body deferred-resources pdf-preview-pdf-embedded"> + <div id="outer-frame"> + <div id="page-content"> + <div class="nav-header"> + + + <div class="buttons"> + <a id="create-an-account-button" href="/register?signup_tag=shmodel" target="_blank" class="freshbutton-lightblue">Sign up for Dropbox</a> + </div> + </div> + <div style="display: none;" id="c2d-modal"> + <div id="create-account-content"> + <div> + <form novalidate="novalidate" id="c2d-register-form" method="post"> + <input type="hidden" name="signup_tag" value="copy_to_dropbox" /> + <input type="hidden" name="dl_redir" value="1" /> + </form> + </div> + </div> + <div style="display:none;" id="login-account-content"> + <div style="display: none;" id="c2d-twofactor-login"> + <form novalidate="novalidate" id="c2d-twofactor-login-form" method="post"> + <div id="c2d-twofactor-error" class="error-message"></div> + <div class="sick-input"> + <label for="email">6-digit code</label> + <input autocomplete="off" type="text" id="c2d-twofactor-code" name="twofactor_code" tabindex="13" /> + </div> + <input name="twofactor_login_submit" value="Submit code" class="freshbutton-blue" type="submit" id="twofactor_login_submit" tabindex="15" /> + <p class="resend-code"> + <a id="c2d-resend-link">Didn't receive one?</a> + </p> + </form> + </div> + </div> + </div> + <noscript> + <p class="center">The Dropbox website requires JavaScript.</p> + </noscript> + </div> + <div style="position: absolute; top: 0; left: 0; font-family: Courier" id="ieconsole"></div> + <div style="position:absolute; top:-10000px;width:0px; height:0px; left: 0;" id="FB_HiddenContainer"></div> + <div style="display:none;" id="notice-container" class="clearfix"></div> + </body> +</html> diff --git a/sw/qa/core/data/html/pass/fdo87601-1.html b/sw/qa/core/data/html/pass/fdo87601-1.html new file mode 100644 index 000000000..b33f11c1b --- /dev/null +++ b/sw/qa/core/data/html/pass/fdo87601-1.html @@ -0,0 +1,100 @@ + + <html xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:w="urn:schemas-microsoft-com:office:word" + xmlns:m="http://schemas.microsoft.com/office/2006/01/omml" + xmlns="http://www.w3.org/TR/REC-html40"> + <head> + <meta http-equiv=Content-Type content="text/html; charset=utf-8"> + <style> + v\:* {behavior:url(#default#VML);} + o\:* {behavior:url(#default#VML);} + w\:* {behavior:url(#default#VML);} + .shape {behavior:url(#default#VML);} + </style> + <style> + @page + { + mso-page-orientation: portrait; + size:21cm 29.7cm; margin:1cm 1cm 1cm 1cm; + } + @page Section1 { + mso-header-margin:.5in; + mso-footer-margin:.5in; + mso-header: h1; + mso-footer: f1; + mso-bidi-font:Arial; + } + div.Section1 { page:Section1; } + table { + border-spacing: 0; + border-collapse: collapse; + font-size: 10.0pt; + } + td + { + border: 1px solid #000; + font-size:10.0pt; + font-family:Verdana,sans-serif; + margin-bottom:0.000cm; + vertical-align:top; + } + p.MsoFooter, li.MsoFooter, div.MsoFooter + { + margin:0in; + margin-bottom:.0001pt; + mso-pagination:widow-orphan; + tab-stops:center 3.0in right 6.0in; + font-size:10.0pt; + } + </style> + <xml> + <w:WordDocument> + <w:View>Print</w:View> + <w:Zoom>100</w:Zoom> + <w:DoNotOptimizeForBrowsertc2ms/> + </w:WordDocument> + </xml> + </head> + <body style="width:21.001cm;"> + <div class="Section1"> + <br> + <br> + <h1 style="mso-element:header;font-size:24.0pt;font-weight:normal;font-family:Verdana,sans-serif;color:#f00;" id="h1"> + <p class="MsoHeader"> + Your bug here + </p> + </h1> + <br> + <table width="700" cellpadding="6" style="border-collapse:collapse;"> + <tr> + <td width="200" border="1" style="font-weight:bold;">x</td> + <td width="500" style="font-weight:bold;">x</td> + </tr> + <tr> + <td style="font-weight:bold;">x</td> + <td style="font-weight:bold;">x</td> + </tr> + <tr> + <td style="font-weight:bold;">x</td> + <td style="font-weight:bold;">x</td> + </tr> + <tr> + <td style="font-weight:bold;">x</td> + <td style="font-weight:bold;">x</td> + </tr> + </table> + <br> + <table width="700" cellpadding="6" style="border:1px solid #bbb; border-collapse:collapse;"> +<tr><td width="50" style="border-bottom:1px solid #bbb;"></td><td width="110" style="border:1px solid #fff; border-bottom:1px solid #bbb;"></td><td width="540" style="border:1px solid #fff;border-bottom:1px solid #bbb;"></td></tr> + <tr> + <td width="50" style="border:1px solid #bbb;vertical-align:top;text-align:center;font-weight:bold;color:#666;">x</td> + <td width="110" style="border:1px solid #bbb;vertical-align:top;text-align:center;font-weight:bold;color:#666;">x</td> + <td width="540" style="border:1px solid #bbb;vertical-align:top;text-align:center;font-weight:bold;color:#666;">x</td> + </tr> + <tr><td style="border:1px solid #bbb;vertical-align:top;" width="50">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="110">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="540">x</td></tr> +<tr><td style="border:1px solid #bbb;vertical-align:top;" width="50">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="110">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="540">x</td></tr> +<tr><td style="border:1px solid #bbb;vertical-align:top;" width="50">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="110">x</td><td style="border:1px solid #bbb;vertical-align:top;" width="540">x</td></tr> +</table> </div> + </body> + </html> diff --git a/sw/qa/core/data/html/pass/kde141510-1.html b/sw/qa/core/data/html/pass/kde141510-1.html new file mode 100644 index 000000000..a6aff52d8 --- /dev/null +++ b/sw/qa/core/data/html/pass/kde141510-1.html @@ -0,0 +1,744 @@ +<html><head>
+
+
+
+
+
+
+
+
+
+
+
+
+<title>Frontier Honda-New Vehicle Specials for Honda Accord, Civic, CR-V Dealership at Longmont, Colorado CO</title>
+<META NAME="description" CONTENT="New Vehicle Specials for Honda Accord, Honda Civic, Honda CR-V, Honda Element, Honda Fit, Honda Odyssey, Honda Pilot, Honda Ridgeline and Honda S2000 at Frontier Honda, Longmont, Colorado CO."><META NAME="keywords" CONTENT="new vehicle specials, honda, honda dealer, honda cars dealer, honda dealer longmont, honda dealer colorado, honda longmont co, honda dealership colorado, go honda, honda accord, honda civic, honda cr-v, honda element, honda fit, honda odyssey, honda pilot, honda ridgeline, honda s2000, coupe, sedan, hybrid, honda civic, price, certified, online finance, cost, pricing, wholesale, denver, fort collins, greeley, loveland, lyons, niwot, erie, dacono, mead, berthoud, johnstown, milliken, gilcrest, platteville, fort lupton, brighton, lafayette, louisville, frontier honda, longmont, colorado, co"><meta name="distribution" content="Global"> <meta name="email" content="support@izmocars.com"> <meta name="author" content="IZMOCARS"> <meta name="copyright" content="Copyright Frontier Honda ?? 2006"> <meta name="language" content="en"> <meta name="classification" content="automotive"> <meta name="rating" content="General">
+<script src="../scripts/commonscript.js"></script>
+<link href="../styles/mainstyle.css" rel="stylesheet" type="text/css">
+</head>
+<script>
+function OnlineSpecialObject(argOnlineSpecialId,argMakeYear,argMake,argModel,argImageFileName,argPrice,argStockNumber,argInterestRate,argDescription,argSpecialPix) +{ +var OnlineSpecialId = argOnlineSpecialId ; +var MakeYear = argMakeYear ; +var Make = argMake ; +var Model = argModel ; +var ImageFileName = argImageFileName ; +var Price = argPrice ; +var StockNumber = argStockNumber ; +var InterestRate = argInterestRate ; +var Description = argDescription ; +var SpecialPix = argSpecialPix ; +this.getOnlineSpecialId = getOnlineSpecialId ; +this.getMakeYear = getMakeYear ; +this.getMake = getMake ; +this.getModel = getModel ; +this.getImageFileName = getImageFileName ; +this.getPrice = getPrice ; +this.getStockNumber = getStockNumber ; +this.getInterestRate = getInterestRate ; +this.getDescription = getDescription ; +this.getSpecialPix = getSpecialPix ; +function getOnlineSpecialId() +{ +return OnlineSpecialId; +} +function getMakeYear() +{ +return MakeYear; +} +function getMake() +{ +return Make; +} +function getModel() +{ +return Model; +} +function getImageFileName() +{ +return ImageFileName; +} +function getPrice() +{ +return Price; +} +function getStockNumber() +{ +return StockNumber; +} +function getInterestRate() +{ +return InterestRate; +} +function getDescription() +{ +return Description; +} +function getSpecialPix() +{ +return SpecialPix; +} +} + function OnlineSpecialObjectWithTrim(argOnlineSpecialId, argMakeYear, argMake, argModel, argImageFileName, argPrice, argStockNumber, argInterestRate, argDescription, argSpecialPix, argTrim) +{ +var OnlineSpecialId = argOnlineSpecialId ; +var MakeYear = argMakeYear ; +var Make = argMake ; +var Model = argModel ; +var ImageFileName = argImageFileName ; +var Price = argPrice ; +var StockNumber = argStockNumber ; +var InterestRate = argInterestRate ; +var Description = argDescription ; +var SpecialPix = argSpecialPix ; +var Trim = argTrim; +this.getOnlineSpecialId = getOnlineSpecialId ; +this.getMakeYear = getMakeYear ; +this.getMake = getMake ; +this.getModel = getModel ; +this.getImageFileName = getImageFileName ; +this.getPrice = getPrice ; +this.getStockNumber = getStockNumber ; +this.getInterestRate = getInterestRate ; +this.getDescription = getDescription ; +this.getSpecialPix = getSpecialPix ; +this.getTrim = getTrim; +function getOnlineSpecialId() +{ +return OnlineSpecialId; +} +function getMakeYear() +{ +return MakeYear; +} +function getMake() +{ +return Make; +} +function getModel() +{ +return Model; +} +function getImageFileName() +{ +return ImageFileName; +} +function getPrice() +{ +return Price; +} +function getStockNumber() +{ +return StockNumber; +} +function getInterestRate() +{ +return InterestRate; +} +function getDescription() +{ +return Description; +} +function getSpecialPix() +{ +return SpecialPix; +} +function getTrim() +{ +return Trim; +} +} + +arrOnlineSpecial = new Array(); + +arrOnlineSpecialWithTrim = new Array(); + +var DataFound =0; +arrOnlineSpecial[1] = new OnlineSpecialObject(0,'','', '', '', '','','','',''); +arrOnlineSpecialWithTrim[1] = new OnlineSpecialObjectWithTrim(0,'','', '', '', '','','','','',''); +arrOnlineSpecial[2] = new OnlineSpecialObject(0,'','', '', '', '','','','',''); +arrOnlineSpecialWithTrim[2] = new OnlineSpecialObjectWithTrim(0,'','', '', '', '','','','','',''); +arrOnlineSpecial[3] = new OnlineSpecialObject(0,'','', '', '', '','','','',''); +arrOnlineSpecialWithTrim[3] = new OnlineSpecialObjectWithTrim(0,'','', '', '', '','','','','',''); +arrOnlineSpecial[4] = new OnlineSpecialObject(0,'','', '', '', '','','','',''); +arrOnlineSpecialWithTrim[4] = new OnlineSpecialObjectWithTrim(0,'','', '', '', '','','','','',''); + + var PreviousPageExist =true; + + var NextPageExist =false; + + var PreviousPageNo =0; + + var NextPageNo =0; + +
+</script>
+<body onLoad="MM_preloadImages('/images/menu/new_cars_mo.jpg','/images/menu/pre_owned_mo.jpg','/images/menu/research_mo.jpg','/images/menu/online_sp_mo.jpg','/images/menu/parts_service_mo.jpg','/images/menu/finance_mo.jpg','/images/menu/about_us_mo.jpg','/images/menu/home_mo.jpg')">
+<table width="1000" border="0" align="left" cellpadding="0" cellspacing="0" class="outer">
+ <tr align="left" valign="top"> <td colspan="3" align="center" class="header">
+<script language="javascript1.1">
+function disfin()
+ {
+ ss.style.display="";
+ }
+ function disfin1()
+ {
+ ss.style.display="none";
+ }
+</script>
+
+<table width="1000" height="124" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td height="102"><img src="/images/header/innerpage.jpg" width="1000" height="102" border="0" usemap="#Map" ></td>
+ </tr>
+ <tr>
+ <td valign="top"><table border="0" align="center" cellpadding="0" cellspacing="0">
+ <tr align="left">
+ <td width="142" height="22"><a href="javascript:;" onMouseOver="MM_swapImage('newcarimg','','/images/menu/innerpage/get_a_quote_mo.jpg',1);MM_showHideLayers('newcars','','show','preownedcars','','hide','research','','hide','onlinespecials','','hide','partsservice','','hide','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/get_a_quote.jpg" name="newcarimg" width="142" height="22" border="0" id="newcarimg"></a></td>
+ <td width="200"><a href="javascript:;" onMouseOver="MM_swapImage('preownedimg','','/images/menu/innerpage/search_our_inventory_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','show','research','','hide','onlinespecials','','hide','partsservice','','hide','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/search_our_inventory.jpg" name="preownedimg" width="200" height="22" border="0" id="preownedimg"></a></td>
+ <td width="160"><a href="javascript:;" onMouseOver="MM_swapImage('partsserviceimg','','/images/menu/innerpage/service_parts_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','partsservice','','show','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/service_parts.jpg" name="partsserviceimg" width="160" height="22" border="0" id="partsserviceimg"></a></td>
+ <td width="110"><a href="javascript:;" onMouseOver="MM_swapImage('onlinespecialsimg','','/images/menu/innerpage/specials_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','show','partsservice','','hide','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/specials.jpg" name="onlinespecialsimg" width="110" height="22" border="0" id="onlinespecialsimg"></a></td>
+ <td width="120"><a href="javascript:;" onMouseOver="MM_swapImage('researchimg','','/images/menu/innerpage/research_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','show','onlinespecials','','hide','partsservice','','hide','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/research.jpg" name="researchimg" width="120" height="22" border="0" id="researchimg"></a></td>
+ <td width="119"><a href="javascript:;" onMouseOver="MM_swapImage('aboutusimg','','/images/menu/innerpage/about_us_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','partsservice','','hide','aboutus','','show')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/about_us.jpg" name="aboutusimg" width="119" height="22" border="0" id="aboutusimg"></a></td>
+ <td width="149"><a href="/index.jsp" onMouseOver="MM_swapImage('homeimg','','/images/menu/innerpage/home_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','partsservice','','hide','aboutus','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')"><img src="/images/menu/innerpage/home.jpg" alt="Home" name="homeimg" width="149" height="22" border="0" id="homeimg"></a></td>
+ </tr>
+ </table></td>
+ </tr>
+</table>
+<div id="newcars" style="position:absolute; width:180px; height:45px; z-index:1; background-color:#8d8d8d; visibility: hidden; top: 124px; left:0px;"onMouseOver="MM_swapImage('newcarimg','','/images/menu/innerpage/get_a_quote_mo.jpg',1);MM_showHideLayers('newcars','','show','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+ <tr>
+ <td align="left" valign="middle" onMouseOut="disfin1();" onMouseOver="disfin1();"><a href="/newvehicles/selectamodel.jsp?menu=quote" class="block">Select a Model</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle" onMouseOut="disfin1();" onMouseOver="disfin1();"><a href="/newvehicles/quickquote.jsp" class="block">Quick Quote</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle" id="td1" ><a name="a1" href="#" class="blocknew" onMouseOver="disfin();" >Finance <img src="/images/menu/arrow.gif" border="0" width="7" height="4"></a>
+ </tr>
+
+ </table>
+
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" id="ss" style="padding-left:20px; display:none; border:1px solid #b8b8b8" onMouseOver="this.style.display='';a1.className='blocknew1'" onMouseOut="this.style.display='none';a1.className='blocknew'">
+ <tr bgcolor="#ffffff" height="1" >
+ <td align="left" valign="middle" >
+ <ul type="disc" style="background-color:#ffffff; margin-top:2px; margin-left:5px; margin-bottom:2px; ">
+ <li class="block" ><a href="/admin/leadmail/AutoPostForFinance.jsp?baseURL1=http://www.frontierhonda.com&fintype=FINANCE_INDIVIDUAL" class="hai">Finance Application</a></li>
+ <li class="block" ><a href="/admin/leadmail/AutoPostForFinance.jsp?baseURL1=http://www.frontierhonda.com&fintype=FINANCE_JOINT" class="hai">Joint Finance Application</a></li>
+ <!-- <li class="block" ><a href="/onlinespecials/onlinefinance.jsp?menu=onlinequote" class="hai" >Finance Specials</a></li> -->
+ <li class="block" ><a href="/loanleasecalc.jsp" class="hai">Payment Calculator</a></li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+
+</div>
+<div id="preownedcars" style="position:absolute; width:150px; height:45px; z-index:1; background-color:#8d8d8d; visibility: hidden; top:124px; left:144px;"onMouseOver="MM_swapImage('preownedimg','','/images/menu/innerpage/search_our_inventory_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','show','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+<!-- <tr>
+ <td align="left" valign="middle"><a href="/research/tradeinappraisal.jsp?menu=pre" class="block">Trade-in Value Appraisal</a></td>
+ </tr> -->
+ <tr>
+ <td align="left" valign="middle"><a href="/newvehicles/selectamodel.jsp?menu=invent" class="block" >New Vehicles</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a onClick="return thirdParty('www.getauto.com');" href="/templates/comingsoon1.jsp" class="block">Certified Pre-Owned</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a onClick="return thirdParty('www.getauto.com');" href="/inventory/preownedcarsearch.jsp" class="block" >Other Pre-Owned</a></td>
+ </tr>
+ </table>
+</div>
+<div id="partsservice" style="position:absolute; width:165px; height:45px; z-index:1; background-color:#8d8d8d; visibility: hidden; top:124px; left: 343px;"onMouseOver="MM_swapImage('partsserviceimg','','/images/menu/innerpage/service_parts_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','show')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+ <tr>
+ <td align="left" valign="middle"><a href="/partsservice/serviceappointment.jsp" class="block">Service Appointment</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/partsservice/orderparts.jsp" class="block">Order Parts</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/partsservice/printcoupon.jsp" class="block">Parts/Service Coupons</a></td>
+ </tr>
+
+ </table>
+</div>
+<div id="onlinespecials" style="position:absolute; width:150px; height:45px; z-index:1; background-color:#8d8d8d; visibility: hidden; left:503px; top:124px;"onMouseOver="MM_swapImage('onlinespecialsimg','','/images/menu/innerpage/specials_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','show','aboutus','','hide','partsservice','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+ <tr>
+ <td width="24%" align="left" valign="middle"><a href="/onlinespecials/onlinenewcar.jsp" class="block">New Vehicle Specials</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/onlinespecials/onlineusedcar.jsp" class="block">Pre-Owned Specials</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/onlinespecials/onlinefinance.jsp?menu=special" class="block">Finance Specials</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/onlinespecials/weekendspecials.jsp" class="block">Weekend Specials</a></td>
+ </tr>
+
+ </table>
+</div>
+<div id="research" style="position:absolute; width:170px; height:45px; z-index:2; background-color:#8d8d8d; visibility: hidden; top:124px; left:614px;"onMouseOver="MM_swapImage('researchimg','','/images/menu/innerpage/research_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','show','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+ <tr>
+ <td align="left" valign="middle"><a href="/research/tradeinappraisal.jsp" class="block">Trade-in Value</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle" width="100%" height="15" ><a href="/newvehicles/comparecar.jsp" class="block" >Compare Vehicle</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle" width="100%" height="15" ><a href="/research/virtualbrochure.jsp" class="block" >Virtual Brochure</a></td>
+ </tr>
+ </table>
+</div>
+
+<div id="aboutus" style="position:absolute; width:156px; height:60px; z-index:1; background-color:#8d8d8d; visibility: hidden; left: 732px; top:124px;"onMouseOver="MM_swapImage('aboutusimg','','/images/menu/innerpage/about_us_mo.jpg',1);MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','show','partsservice','','hide')" onMouseOut="MM_swapImgRestore();MM_showHideLayers('newcars','','hide','preownedcars','','hide','research','','hide','onlinespecials','','hide','aboutus','','hide','partsservice','','hide')">
+ <table width="100%" height="15" border="0" cellpadding="0" cellspacing="1">
+ <tr>
+ <td align="left" valign="middle"><a href="/aboutus/aboutus.jsp" class="block">About Us</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/aboutus/contactus.jsp" class="block">Contact Us</a></td>
+ </tr>
+ <tr>
+ <td><a href="/aboutus/meetstaff.jsp" class="block">Meet the Staff</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/aboutus/careers.jsp" class="block">Careers</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/aboutus/hoursanddirections.jsp" class="block" >Hours & Directions</a></td>
+ </tr>
+ <tr>
+ <td align="left" valign="middle"><a href="/aboutus/frontier_honda_colorado.jsp" class="block" >Frontier Honda in Your Vicinity</a></td>
+ </tr>
+ </table>
+</div>
+
+
+<map name="Map">
+ <area shape="rect" coords="34,27,422,78" href="/index.jsp" alt="Longmont's Honda dealership - Frontier Honda dealer at 710 South Main Street Longmont, Colorado (CO) 80501.">
+ <area shape="rect" coords="851,4,999,96" alt="Frontier Honda - Colorado Honda dealer offering new and used cars including Accord Coupe, Accord Sedan, Accord Hybrid, Civic Coupe, Civic Hybrid, Civic Sedan, Civic Si, Civic Si Sedan, CR-V, Element, Fit,Odyssey, Pilot, Ridgeline & S2000.">
+</map>
+</td> </tr>
+ <tr align="left" valign="top">
+ <td width="135" align="center" class="subheader"><img src="../images/subheader/online_specials.jpg" alt="Specials" width="134" height="152"></td>
+ <td width="716" align="center" class="form"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="form">
+ <tr>
+ <td width="3" align="left" valign="top" ><img src="../images/table_layout/left_top.jpg" width="4" height="4" ></td>
+ <td width="716" height="3"></td>
+ <td width="3" align="right" valign="top" ><img src="../images/table_layout/right_top.jpg" width="4" height="4"></td>
+ </tr>
+ <tr>
+ <td height="20" colspan="3" align="left" valign="top" class="pagetitle" style="padding-left:16;"><img src="../images/page-titles/new_veh_spcls.jpg" alt="New Vehicle Specials" width="167" height="27"></td>
+ </tr>
+ <tr align="left">
+ <td colspan="3" valign="top"><table align="center" width="700" border="0" cellspacing="0" cellpadding="0">
+ <!--if part begins here-->
+
+ <tr Id=DataToDisplay3 align="center" valign="middle">
+ <td height="30" colspan="9">Check out these great deals on selected New vehicles. For more info, click on the link below.</td>
+ </tr>
+
+
+ <tr Id=DataToDisplay align="center" valign="top">
+ <td valign="top" Id=DataBlock1 colspan="3"><div style="position:static; overflow:auto; width:95%; height:350px">
+ <table width="150" border="0" align="center" cellpadding="0" cellspacing="0">
+
+ <tr align="center">
+
+ <td valign="top"></td>
+ <td valign="top"> </td>
+ <td valign="top"> </td>
+ <td valign="top"><table width="196" height="356" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_top.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td width="2" height="2" align="right" valign="top"><img src="../images/onlinspecialoutline/right_top.jpg" width="2" height="2"></td>
+ </tr>
+ <tr>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="left" valign="top" bgcolor="#FFFFFF">
+ <table width="196" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
+ <tr valign="middle">
+ <td height="56" colspan="2" align="center">
+
+ <label id=Year_2><b>2007</b></label>
+ <label id=Make_2><b>HONDA</b></label>
+ <label id=Model_2><b>Accord Sedan </b></label>
+ <label id=Trim_2><b>Value Package Manual </b></label></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Price:</td>
+ <td rowspan="4" align="right" valign="middle" ><img src="../images/onlinspecialoutline/online_sp.jpg" width="123" height="65"></td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;">$ <strong>
+ <label id=Price_2><b>17545</b></label>
+ </strong></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Stock No: </td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;"><label id=Stock_2><b>70232</b></label></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <img src="http://www.izmoauto.com/newcaronlinespecial/2007/honda/CM5517EXW/desert_mist_metallic.jpg" width="220" height="140" onerror="this.src='../images/otherimages/img_not_avail.jpg'">
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
+ <tr>
+ <td height="10" bgcolor="#ffffff" align="center" valign="middle">Model No#
+ <label id=TrimID_2><b>CM5517EXW</b></label></td>
+ </tr>
+ <tr>
+ <td align="center" valign="middle" ><div align="center" style="height:60; width:230; overflow:auto; border:2px solid #46A0F6">
+ <label id=Description_2>Super sale on All Accord`s models!
+
+Please call Sammy or Jesse Valdez at 303-772-2900 for more info. and special internet pricing.
+plus dealer & handling of $379 plus tax.
+(MSRP$19,175)</label>
+ </div></td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" bgcolor="#46a0f6"> <a href="javascript: MM_openBrWindow('moreinfo.jsp?makeyear=2007&make=HONDA&trim=Value Package Manual&model=Accord Sedan&online_type=New Cars&stockno=70232&msrp=17545', 'Moreinfo', 'width=400,height=330,scrolling=no')" ><img src="../images/onlinspecialoutline/more_info.jpg" alt="More Info" name="Image301" width="193" height="42" border="0" id="more_info"></a> </td>
+ </tr>
+ </table></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ </tr>
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_botom.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="right" valign="top"width="2" height="2" ><img src="../images/onlinspecialoutline/right_bottom.jpg" width="2" height="2"></td>
+ </tr>
+ </table>
+ <br></td>
+ <td valign="top"></td>
+
+ <td valign="top"></td>
+ <td valign="top"> </td>
+ <td valign="top"> </td>
+ <td valign="top"><table width="196" height="356" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_top.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td width="2" height="2" align="right" valign="top"><img src="../images/onlinspecialoutline/right_top.jpg" width="2" height="2"></td>
+ </tr>
+ <tr>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="left" valign="top" bgcolor="#FFFFFF">
+ <table width="196" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
+ <tr valign="middle">
+ <td height="56" colspan="2" align="center">
+
+ <label id=Year_2><b>2007</b></label>
+ <label id=Make_2><b>HONDA</b></label>
+ <label id=Model_2><b>Accord Sedan </b></label>
+ <label id=Trim_2><b>LX Automatic </b></label></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Price:</td>
+ <td rowspan="4" align="right" valign="middle" ><img src="../images/onlinspecialoutline/online_sp.jpg" width="123" height="65"></td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;">$ <strong>
+ <label id=Price_2><b>19610</b></label>
+ </strong></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Stock No: </td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;"><label id=Stock_2><b>70376</b></label></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <img src="http://www.izmoauto.com/newcaronlinespecial/2007/honda/CM5647EW/royal_blue_pearl.jpg" width="220" height="140" onerror="this.src='../images/otherimages/img_not_avail.jpg'">
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
+ <tr>
+ <td height="10" bgcolor="#ffffff" align="center" valign="middle">Model No#
+ <label id=TrimID_2><b>CM5647EW</b></label></td>
+ </tr>
+ <tr>
+ <td align="center" valign="middle" ><div align="center" style="height:60; width:230; overflow:auto; border:2px solid #46A0F6">
+ <label id=Description_2>Super sale on All Accord`s models!
+Please call Sammy or Jesse Valdez at 303-772-2900 for more info. and special internet pricing.
+plus dealer & handling of $379 plus tax.
+(MSRP $21,475)</label>
+ </div></td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" bgcolor="#46a0f6"> <a href="javascript: MM_openBrWindow('moreinfo.jsp?makeyear=2007&make=HONDA&trim=LX Automatic&model=Accord Sedan&online_type=New Cars&stockno=70376&msrp=19610', 'Moreinfo', 'width=400,height=330,scrolling=no')" ><img src="../images/onlinspecialoutline/more_info.jpg" alt="More Info" name="Image301" width="193" height="42" border="0" id="more_info"></a> </td>
+ </tr>
+ </table></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ </tr>
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_botom.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="right" valign="top"width="2" height="2" ><img src="../images/onlinspecialoutline/right_bottom.jpg" width="2" height="2"></td>
+ </tr>
+ </table>
+ <br></td>
+ <td valign="top"></td>
+
+ </tr>
+
+ <tr align="center">
+
+ <td valign="top"></td>
+ <td valign="top"> </td>
+ <td valign="top"> </td>
+ <td valign="top"><table width="196" height="356" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_top.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td width="2" height="2" align="right" valign="top"><img src="../images/onlinspecialoutline/right_top.jpg" width="2" height="2"></td>
+ </tr>
+ <tr>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="left" valign="top" bgcolor="#FFFFFF">
+ <table width="196" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
+ <tr valign="middle">
+ <td height="56" colspan="2" align="center">
+
+ <label id=Year_2><b>2007</b></label>
+ <label id=Make_2><b>HONDA</b></label>
+ <label id=Model_2><b>Accord Sedan </b></label>
+ <label id=Trim_2><b>Special Edition Automatic </b></label></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Price:</td>
+ <td rowspan="4" align="right" valign="middle" ><img src="../images/onlinspecialoutline/online_sp.jpg" width="123" height="65"></td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;">$ <strong>
+ <label id=Price_2><b>20239</b></label>
+ </strong></td>
+ </tr>
+ <tr>
+ <td width="97" height="15" align="left" valign="middle" style="padding-left:3px;">Stock No: </td>
+ </tr>
+ <tr>
+ <td height="15" align="left" valign="middle" style="padding-left:3px;"><label id=Stock_2><b>70399</b></label></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <img src="http://www.izmoauto.com/newcaronlinespecial/2007/honda/CM5637EW/alabaster_silver_metallic.jpg" width="220" height="140" onerror="this.src='../images/otherimages/img_not_avail.jpg'">
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" valign="top" >
+ <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
+ <tr>
+ <td height="10" bgcolor="#ffffff" align="center" valign="middle">Model No#
+ <label id=TrimID_2><b>CM5637EW</b></label></td>
+ </tr>
+ <tr>
+ <td align="center" valign="middle" ><div align="center" style="height:60; width:230; overflow:auto; border:2px solid #46A0F6">
+ <label id=Description_2>Super sale on All Accord`s models!
+Please call Sammy or Jesse Valdez at 303-772-2900 for more info. and special internet pricing.
+plus dealer & handling of $379 plus tax. (MSRP $22,175)</label>
+ </div></td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center" bgcolor="#46a0f6"> <a href="javascript: MM_openBrWindow('moreinfo.jsp?makeyear=2007&make=HONDA&trim=Special Edition Automatic&model=Accord Sedan&online_type=New Cars&stockno=70399&msrp=20239', 'Moreinfo', 'width=400,height=330,scrolling=no')" ><img src="../images/onlinspecialoutline/more_info.jpg" alt="More Info" name="Image301" width="193" height="42" border="0" id="more_info"></a> </td>
+ </tr>
+ </table></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ </tr>
+ <tr>
+ <td width="2" height="2" align="left" valign="top"><img src="../images/onlinspecialoutline/left_botom.jpg" width="2" height="2"></td>
+ <td background="../images/onlinspecialoutline/mid_strip.jpg"><img src="../images/misc/spacer.gif" width="1" height="1"></td>
+ <td align="right" valign="top"width="2" height="2" ><img src="../images/onlinspecialoutline/right_bottom.jpg" width="2" height="2"></td>
+ </tr>
+ </table>
+ <br></td>
+ <td valign="top"></td>
+
+ </tr>
+
+ </table>
+ </div></td>
+ </tr>
+
+
+ <tr id="Price">
+ <td height="20" valign="middle"><div align="justify">
+ <table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>Prices plus government fees and taxes, any finance charges, any dealer document preparation charge, and any emission testing charge.</td>
+ </tr>
+ </table>
+ </div></td>
+ </tr>
+
+ <!--if part ends here-->
+ <!--else part begins here-->
+
+ <!--else part ends here-->
+ </table></td>
+ </tr>
+ <tr>
+ <td width="3" valign="top" align="left" id="left-bot"><img src="../images/table_layout/left_bottom.jpg" width="4" height="4"></td>
+ <td height="3" ></td>
+ <td width="3" align="right" valign="bottom" id="right-bot"><img src="../images/table_layout/right_bottom.jpg" width="4" height="4"></td>
+ </tr>
+ </table></td>
+ <td width="139" align="center" class="banner"><table width="139" border="0" cellspacing="0" cellpadding="0">
+<tr>
+ <td width="139" align="left" valign="top"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="139" height="447">
+ <param name="movie" value="../banner.swf">
+ <param name="wmode" value="transparent">
+ <param name="quality" value="high">
+ <embed src="../banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="139" height="450"></embed>
+ </object></td>
+ </tr>
+</table>
+</td>
+ </tr>
+ <tr align="left" valign="bottom">
+ <td colspan="3" align="center" class="address"><table width="1000" height="19" border="0" align="left" cellpadding="0" cellspacing="0" bgcolor="#000000">
+ <tr>
+ <td height="19" align="left" valign="middle" bgcolor="#000000" style="padding-left:12px; "><span class="address">710 South Main Street Longmont, CO 80501. Phone: (303) 772-2900 Fax: (303) 485-9092</strong> <a href="http://www.frontierhonda.com/sitemap.jsp" class="address">Site
+ Map</a> | <a href="#" class="address" onClick="MM_openBrWindow('https://secure.izmoauto.com/disclaimer/disclaimer.htm','disclaimer','scrollbars=no,width=520,height=430')">Disclaimer</a></span></td>
+ <td width="150" height="19" align="left" valign="top" bgcolor="#000000"><img src="/images/otherimages/powered_by.jpg" width="139" height="15"></td>
+ </tr>
+</table>
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1139600-1";
+urchinTracker();
+</script></td>
+ </tr>
+</table>
+</body>
+<script>
+ /*if(DataFound > 0)
+ {
+ var d1=document.getElementById('DataNotFound1');
+ d1.style.display='none';
+ var d1=document.getElementById('DataNotFound2');
+ d1.style.display='none';
+
+ if(PreviousPageExist == true)
+ {
+ var d1=document.getElementById('HrefForPreviousPage');
+ d1.href="onlinenewcar.jsp?currentPage="+PreviousPageNo;
+ var d1=document.getElementById('HrefForPreviousPage2');
+ d1.href="onlinenewcar.jsp?currentPage="+PreviousPageNo;
+ }
+ else
+ {
+ var d1=document.getElementById('NavigationPrevious_TD');
+ d1.style.display='none';
+ var d1=document.getElementById('NavigationPrevious_TD1');
+ d1.style.display='none';
+ }
+
+
+ if(NextPageExist == true)
+ {
+ var d1=document.getElementById('HrefForNextPage');
+ d1.href="onlinenewcar.jsp?currentPage="+NextPageNo;
+ var d1=document.getElementById('HrefForNextPage2');
+ d1.href="onlinenewcar.jsp?currentPage="+NextPageNo;
+ }
+ else
+ {
+ var d1=document.getElementById('NavigationNext_TD');
+ d1.style.display='none';
+ var d1=document.getElementById('NavigationNext_TD1');
+ d1.style.display='none';
+ }
+ var i=0;
+ for(i=1; i <= 4; i++)
+ {
+ d1=document.getElementById('Image_'+i);
+ //d1.src=arrOnlineSpecial[i].getImageFileName();
+ var imagePath = arrOnlineSpecial[i].getImageFileName();
+
+ if(imagePath.indexOf("http://") < 0)
+ {
+ imagePath = "../admin/onlinespecials/clientmedia/"+imagePath;
+ }
+ d1.src = imagePath;
+
+ d1=document.getElementById('Year_'+i);
+ d1.innerHTML = "<b>"+ arrOnlineSpecial[i].getMakeYear() +"</b>";
+
+ d1=document.getElementById('Make_'+i);
+ d1.innerHTML = "<b>"+ arrOnlineSpecial[i].getMake()+"</b>";
+
+ d1=document.getElementById('Model_'+i);
+ var tempModel = arrOnlineSpecial[i].getModel();
+ var trimid = '';
+ if(tempModel != null && tempModel.indexOf("|") >= 0)
+ {
+ trimid = tempModel.substring(tempModel.indexOf("|")+1);
+ tempModel = tempModel.substring(0, tempModel.indexOf("|"));
+ }
+ d1.innerHTML = "<b>"+tempModel+"</b>";
+
+ d1=document.getElementById('TrimID_'+i);
+ d1.innerHTML = "<b>"+trimid+"</b>";
+
+ d1=document.getElementById('Trim_'+i);
+ d1.innerHTML = "<b>"+arrOnlineSpecialWithTrim[i].getTrim()+"</b>";
+
+ d1=document.getElementById('Price_'+i);
+ d1.innerHTML = "<b>"+ arrOnlineSpecial[i].getPrice() +"</b>";
+
+ d1=document.getElementById('Stock_'+i);
+ d1.innerHTML = "<b>"+ arrOnlineSpecial[i].getStockNumber() +"</b>";
+
+ d1=document.getElementById('Description_'+i);
+ d1.innerHTML = "<div style='height:50px; width:100%; border:1px solid; border-color:#cccccc; overflow:auto;'>"+arrOnlineSpecial[i].getDescription()+"</div>";
+
+ var d1=document.getElementById('HrefMoreInfoPage_'+i);
+ d1.href="javascript:MM_openBrWindow('moreinfo.jsp?makeyear="+arrOnlineSpecial[i].getMakeYear()+"&model="+arrOnlineSpecial[i].getModel()+"&make="+arrOnlineSpecial[i].getMake()+"&trim="+arrOnlineSpecialWithTrim[i].getTrim()+"&online_type=New Cars&stockno="+arrOnlineSpecial[i].getStockNumber()+"&msrp="+arrOnlineSpecial[i].getPrice()+"','moreinfo','scrollbars=No,width=400,height=350, top=241, left=142')";
+
+ if(i > DataFound)
+ {
+ d1=document.getElementById('DataBlock'+i);
+ d1.style.display='none';
+
+ }
+
+ }
+
+
+ }
+ else
+ {
+ var d1=document.getElementById('DataToDisplay');
+ d1.style.display='none';
+
+ var d1=document.getElementById('Navigation');
+ d1.style.display='none';
+
+ var d1=document.getElementById('DataToDisplay3');
+ d1.style.display='none';
+
+
+ }*/
+</script>
+</html>
diff --git a/sw/qa/core/data/html/pass/ofz-msan-1.html b/sw/qa/core/data/html/pass/ofz-msan-1.html Binary files differnew file mode 100644 index 000000000..5237a3d1d --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz-msan-1.html diff --git a/sw/qa/core/data/html/pass/ofz20455.html b/sw/qa/core/data/html/pass/ofz20455.html Binary files differnew file mode 100644 index 000000000..6e5ca0aa7 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz20455.html diff --git a/sw/qa/core/data/html/pass/ofz39850-1.html b/sw/qa/core/data/html/pass/ofz39850-1.html Binary files differnew file mode 100644 index 000000000..ebe25683c --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz39850-1.html diff --git a/sw/qa/core/data/html/pass/ofz40593-1.html b/sw/qa/core/data/html/pass/ofz40593-1.html Binary files differnew file mode 100644 index 000000000..43510d5d0 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz40593-1.html diff --git a/sw/qa/core/data/html/pass/ofz40766-1.html b/sw/qa/core/data/html/pass/ofz40766-1.html Binary files differnew file mode 100644 index 000000000..c0dff9de7 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz40766-1.html diff --git a/sw/qa/core/data/html/pass/ofz43310-1.html b/sw/qa/core/data/html/pass/ofz43310-1.html Binary files differnew file mode 100644 index 000000000..e84d1cccf --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz43310-1.html diff --git a/sw/qa/core/data/html/pass/ofz5353-1.html b/sw/qa/core/data/html/pass/ofz5353-1.html new file mode 100644 index 000000000..25cff17de --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz5353-1.html @@ -0,0 +1 @@ + <table><td></tr> <big> <td>ÿ<table> <td></td><S STYLE= float:left;width:3 ><a STYLE="float:left; width:3 ">
\ No newline at end of file diff --git a/sw/qa/core/data/html/pass/ofz5535-1.html b/sw/qa/core/data/html/pass/ofz5535-1.html new file mode 100644 index 000000000..5439e009b --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz5535-1.html @@ -0,0 +1 @@ +<table><td SDVALSDNUM=;0;MrS)000000000000000000000000000000000000;>
\ No newline at end of file diff --git a/sw/qa/core/data/html/pass/ofz5855-1.html b/sw/qa/core/data/html/pass/ofz5855-1.html new file mode 100644 index 000000000..a24f6cff0 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz5855-1.html @@ -0,0 +1 @@ +<div title="header"><Table><td><table>ÿ<td></table><style>@page:first</style> diff --git a/sw/qa/core/data/html/pass/ofz8255-1.html b/sw/qa/core/data/html/pass/ofz8255-1.html new file mode 100644 index 000000000..7bad71504 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz8255-1.html @@ -0,0 +1 @@ +<MULTICOL GUTTER=4228 COLS=48346>
\ No newline at end of file diff --git a/sw/qa/core/data/html/pass/ofz9733-1.html b/sw/qa/core/data/html/pass/ofz9733-1.html new file mode 100644 index 000000000..3da9bdb80 --- /dev/null +++ b/sw/qa/core/data/html/pass/ofz9733-1.html @@ -0,0 +1 @@ +<div title="footer"><div>ÿ</ol></div><p ID=ÿ></div><div title="footer">
\ No newline at end of file diff --git a/sw/qa/core/data/html/pass/tdf93971-1.html b/sw/qa/core/data/html/pass/tdf93971-1.html new file mode 100644 index 000000000..f516556dc --- /dev/null +++ b/sw/qa/core/data/html/pass/tdf93971-1.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<!-- saved from url=(0266)file:///home/yanpas/%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8/%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%83%20%D0%BC%D1%8B%D1%81%D0%B0%20%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0%20%E2%80%94%20%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F.html --> +<html lang="ru" dir="ltr" class="client-js ve-available"> +<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Сражение_у_мыÑа_Тендра skin-vector action-view"> + + + <div id="content" class="mw-body" role="main"> + <a id="top"></a> + + <div id="siteNotice"><div id="centralNotice"></div><!-- CentralNotice --></div> + <div class="mw-indicators"> +</div> + <h1 id="firstHeading" class="firstHeading" lang="ru">Сражение у мыÑа Тендра</h1> + <div id="bodyContent" class="mw-body-content"> + + <div id="contentSub"></div> + + <div id="mw-content-text" lang="ru" dir="ltr" class="mw-content-ltr"> + + + +<p></p> +<div id="toc" class="toc"> +<div id="toctitle"> +<h2>Содержание</h2> +<span class="toctoggle"> [<a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#" id="togglelink">убрать</a>] </span></div> +<ul> +<li class="toclevel-1 tocsection-1"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#.D0.9F.D1.80.D0.B5.D0.B4.D1.8B.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F"><span class="tocnumber">1</span> <span class="toctext">ПредыÑториÑ</span></a></li> +<li class="toclevel-1 tocsection-2"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#28_.D0.B0.D0.B2.D0.B3.D1.83.D1.81.D1.82.D0.B0"><span class="tocnumber">2</span> <span class="toctext">28 авгуÑта</span></a></li> +<li class="toclevel-1 tocsection-3"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#29_.D0.B0.D0.B2.D0.B3.D1.83.D1.81.D1.82.D0.B0"><span class="tocnumber">3</span> <span class="toctext">29 авгуÑта</span></a></li> +<li class="toclevel-1 tocsection-4"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#.D0.98.D1.82.D0.BE.D0.B3"><span class="tocnumber">4</span> <span class="toctext">Итог</span></a></li> +<li class="toclevel-1 tocsection-5"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#.D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5"><span class="tocnumber">5</span> <span class="toctext">См. также</span></a></li> +<li class="toclevel-1 tocsection-6"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.87.D0.B0.D0.BD.D0.B8.D1.8F"><span class="tocnumber">6</span> <span class="toctext">ПримечаниÑ</span></a></li> +<li class="toclevel-1 tocsection-7"><a href="https://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83_%D0%BC%D1%8B%D1%81%D0%B0_%D0%A2%D0%B5%D0%BD%D0%B4%D1%80%D0%B0&printable=yes#.D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"><span class="tocnumber">7</span> <span class="toctext">СÑылки</span></a></li> +</ul> +</div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</div> + <div class="visualClear"></div> + </div> + </div> + + + + + + + +</body></html>
\ No newline at end of file diff --git a/sw/qa/core/data/odt/fail/.gitignore b/sw/qa/core/data/odt/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/odt/fail/.gitignore diff --git a/sw/qa/core/data/odt/fail/82fff64a-0a21-4b09-bbdc-2914a5a150f0.odt b/sw/qa/core/data/odt/fail/82fff64a-0a21-4b09-bbdc-2914a5a150f0.odt Binary files differnew file mode 100644 index 000000000..7d823df75 --- /dev/null +++ b/sw/qa/core/data/odt/fail/82fff64a-0a21-4b09-bbdc-2914a5a150f0.odt diff --git a/sw/qa/core/data/odt/fail/c2dfc5bd-8366-40e7-b862-55e13fdc52dc.odt b/sw/qa/core/data/odt/fail/c2dfc5bd-8366-40e7-b862-55e13fdc52dc.odt Binary files differnew file mode 100644 index 000000000..7cafa8d5e --- /dev/null +++ b/sw/qa/core/data/odt/fail/c2dfc5bd-8366-40e7-b862-55e13fdc52dc.odt diff --git a/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt b/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt Binary files differnew file mode 100644 index 000000000..6442200cd --- /dev/null +++ b/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt diff --git a/sw/qa/core/data/odt/fail/forcepoint-xstor-1.odt b/sw/qa/core/data/odt/fail/forcepoint-xstor-1.odt Binary files differnew file mode 100644 index 000000000..1844d7882 --- /dev/null +++ b/sw/qa/core/data/odt/fail/forcepoint-xstor-1.odt diff --git a/sw/qa/core/data/odt/fail/tdf102018.odt b/sw/qa/core/data/odt/fail/tdf102018.odt Binary files differnew file mode 100644 index 000000000..d804aec11 --- /dev/null +++ b/sw/qa/core/data/odt/fail/tdf102018.odt diff --git a/sw/qa/core/data/odt/fdo68983.odt b/sw/qa/core/data/odt/fdo68983.odt Binary files differnew file mode 100644 index 000000000..01df10440 --- /dev/null +++ b/sw/qa/core/data/odt/fdo68983.odt diff --git a/sw/qa/core/data/odt/indeterminate/.gitignore b/sw/qa/core/data/odt/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/odt/indeterminate/.gitignore diff --git a/sw/qa/core/data/odt/pass/.gitignore b/sw/qa/core/data/odt/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/odt/pass/.gitignore diff --git a/sw/qa/core/data/odt/pass/CVE-2012-4233-1.odt b/sw/qa/core/data/odt/pass/CVE-2012-4233-1.odt Binary files differnew file mode 100644 index 000000000..9d3c3dc97 --- /dev/null +++ b/sw/qa/core/data/odt/pass/CVE-2012-4233-1.odt diff --git a/sw/qa/core/data/odt/pass/fdo84692.odt b/sw/qa/core/data/odt/pass/fdo84692.odt Binary files differnew file mode 100644 index 000000000..db5c878c9 --- /dev/null +++ b/sw/qa/core/data/odt/pass/fdo84692.odt diff --git a/sw/qa/core/data/odt/pass/ooo95711-1.odt b/sw/qa/core/data/odt/pass/ooo95711-1.odt Binary files differnew file mode 100644 index 000000000..4bcb3b446 --- /dev/null +++ b/sw/qa/core/data/odt/pass/ooo95711-1.odt diff --git a/sw/qa/core/data/odt/pass/tdf112017.odt b/sw/qa/core/data/odt/pass/tdf112017.odt Binary files differnew file mode 100644 index 000000000..02a24d9db --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf112017.odt diff --git a/sw/qa/core/data/odt/pass/tdf112101.odt b/sw/qa/core/data/odt/pass/tdf112101.odt Binary files differnew file mode 100644 index 000000000..ca29bd732 --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf112101.odt diff --git a/sw/qa/core/data/odt/pass/tdf112122.odt b/sw/qa/core/data/odt/pass/tdf112122.odt Binary files differnew file mode 100644 index 000000000..83f602a80 --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf112122.odt diff --git a/sw/qa/core/data/odt/pass/tdf112123.odt b/sw/qa/core/data/odt/pass/tdf112123.odt Binary files differnew file mode 100644 index 000000000..c5d2195b9 --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf112123.odt diff --git a/sw/qa/core/data/odt/pass/tdf122599-1.odt b/sw/qa/core/data/odt/pass/tdf122599-1.odt Binary files differnew file mode 100644 index 000000000..4bbb2dfea --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf122599-1.odt diff --git a/sw/qa/core/data/odt/pass/tdf97879.odt b/sw/qa/core/data/odt/pass/tdf97879.odt Binary files differnew file mode 100644 index 000000000..b34526763 --- /dev/null +++ b/sw/qa/core/data/odt/pass/tdf97879.odt diff --git a/sw/qa/core/data/odt/test.odt b/sw/qa/core/data/odt/test.odt Binary files differnew file mode 100644 index 000000000..5688df4f9 --- /dev/null +++ b/sw/qa/core/data/odt/test.odt diff --git a/sw/qa/core/data/odt/testControlShapeGrouping.odt b/sw/qa/core/data/odt/testControlShapeGrouping.odt Binary files differnew file mode 100644 index 000000000..f1caf0593 --- /dev/null +++ b/sw/qa/core/data/odt/testControlShapeGrouping.odt diff --git a/sw/qa/core/data/ooxml/fail/.gitignore b/sw/qa/core/data/ooxml/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/.gitignore diff --git a/sw/qa/core/data/ooxml/fail/EDB-36788-1.docx b/sw/qa/core/data/ooxml/fail/EDB-36788-1.docx Binary files differnew file mode 100644 index 000000000..ed710be68 --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/EDB-36788-1.docx diff --git a/sw/qa/core/data/ooxml/fail/LIBREOFFICE-DBDAZAEC.docx b/sw/qa/core/data/ooxml/fail/LIBREOFFICE-DBDAZAEC.docx Binary files differnew file mode 100644 index 000000000..add554ae9 --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/LIBREOFFICE-DBDAZAEC.docx diff --git a/sw/qa/core/data/ooxml/fail/ofz14422-1.docx b/sw/qa/core/data/ooxml/fail/ofz14422-1.docx Binary files differnew file mode 100644 index 000000000..8284f6afc --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/ofz14422-1.docx diff --git a/sw/qa/core/data/ooxml/fail/ofz37458-1.docx b/sw/qa/core/data/ooxml/fail/ofz37458-1.docx Binary files differnew file mode 100644 index 000000000..04e7d6062 --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/ofz37458-1.docx diff --git a/sw/qa/core/data/ooxml/fail/ofz4825-1.docx b/sw/qa/core/data/ooxml/fail/ofz4825-1.docx Binary files differnew file mode 100644 index 000000000..ce8e6493a --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/ofz4825-1.docx diff --git a/sw/qa/core/data/ooxml/fail/ofz9934-1.docx b/sw/qa/core/data/ooxml/fail/ofz9934-1.docx Binary files differnew file mode 100644 index 000000000..b97afaee8 --- /dev/null +++ b/sw/qa/core/data/ooxml/fail/ofz9934-1.docx diff --git a/sw/qa/core/data/ooxml/indeterminate/.gitignore b/sw/qa/core/data/ooxml/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ooxml/indeterminate/.gitignore diff --git a/sw/qa/core/data/ooxml/pass/fdo63164-1.docx b/sw/qa/core/data/ooxml/pass/fdo63164-1.docx Binary files differnew file mode 100644 index 000000000..768ec6ce3 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo63164-1.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo64256.docx b/sw/qa/core/data/ooxml/pass/fdo64256.docx Binary files differnew file mode 100644 index 000000000..e8e901dd1 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo64256.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-1.docx b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx Binary files differnew file mode 100644 index 000000000..d3cc84a6e --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-2.docx b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx Binary files differnew file mode 100644 index 000000000..f5588782c --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo78885.docx b/sw/qa/core/data/ooxml/pass/fdo78885.docx Binary files differnew file mode 100644 index 000000000..558d71ee1 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo78885.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo78904_fileHang.docx b/sw/qa/core/data/ooxml/pass/fdo78904_fileHang.docx Binary files differnew file mode 100644 index 000000000..dce50f3dc --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo78904_fileHang.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo78906.docx b/sw/qa/core/data/ooxml/pass/fdo78906.docx Binary files differnew file mode 100644 index 000000000..1a6c6ea17 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo78906.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo79129.docx b/sw/qa/core/data/ooxml/pass/fdo79129.docx Binary files differnew file mode 100644 index 000000000..46ff0f5ee --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo79129.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo79131.docx b/sw/qa/core/data/ooxml/pass/fdo79131.docx Binary files differnew file mode 100644 index 000000000..5f10d9c86 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo79131.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo79838.docx b/sw/qa/core/data/ooxml/pass/fdo79838.docx Binary files differnew file mode 100644 index 000000000..eef1e5997 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo79838.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo79940.docx b/sw/qa/core/data/ooxml/pass/fdo79940.docx Binary files differnew file mode 100644 index 000000000..8d17489e8 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo79940.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo79973.docx b/sw/qa/core/data/ooxml/pass/fdo79973.docx Binary files differnew file mode 100644 index 000000000..48bf51096 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo79973.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo80514.docx b/sw/qa/core/data/ooxml/pass/fdo80514.docx Binary files differnew file mode 100644 index 000000000..5ea2ce759 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo80514.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo80580.docx b/sw/qa/core/data/ooxml/pass/fdo80580.docx Binary files differnew file mode 100644 index 000000000..90793fe9b --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo80580.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo81380.docx b/sw/qa/core/data/ooxml/pass/fdo81380.docx Binary files differnew file mode 100644 index 000000000..52458448f --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo81380.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo81491.docx b/sw/qa/core/data/ooxml/pass/fdo81491.docx Binary files differnew file mode 100644 index 000000000..0da621514 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo81491.docx diff --git a/sw/qa/core/data/ooxml/pass/fill.docx b/sw/qa/core/data/ooxml/pass/fill.docx Binary files differnew file mode 100644 index 000000000..b9a4501b2 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fill.docx diff --git a/sw/qa/core/data/ooxml/pass/liststyle-gridbefore.docx b/sw/qa/core/data/ooxml/pass/liststyle-gridbefore.docx Binary files differnew file mode 100644 index 000000000..60dae2aad --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/liststyle-gridbefore.docx diff --git a/sw/qa/core/data/ooxml/pass/ofz20801-1.docx b/sw/qa/core/data/ooxml/pass/ofz20801-1.docx Binary files differnew file mode 100644 index 000000000..0e1647ae2 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/ofz20801-1.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf108272.docx b/sw/qa/core/data/ooxml/pass/tdf108272.docx Binary files differnew file mode 100644 index 000000000..8ee707c5b --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf108272.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf119136.docx b/sw/qa/core/data/ooxml/pass/tdf119136.docx Binary files differnew file mode 100644 index 000000000..2baa624bb --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf119136.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf123001.docx b/sw/qa/core/data/ooxml/pass/tdf123001.docx Binary files differnew file mode 100644 index 000000000..e94a66208 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf123001.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf89088.docx b/sw/qa/core/data/ooxml/pass/tdf89088.docx Binary files differnew file mode 100644 index 000000000..fc6718569 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf89088.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf92157-1-minimized.docx b/sw/qa/core/data/ooxml/pass/tdf92157-1-minimized.docx Binary files differnew file mode 100644 index 000000000..6edbe1809 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf92157-1-minimized.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf93284.docx b/sw/qa/core/data/ooxml/pass/tdf93284.docx Binary files differnew file mode 100644 index 000000000..aedc026e8 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf93284.docx diff --git a/sw/qa/core/data/ooxml/pass/tdf96749.docx b/sw/qa/core/data/ooxml/pass/tdf96749.docx Binary files differnew file mode 100644 index 000000000..c7b79eec0 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/tdf96749.docx diff --git a/sw/qa/core/data/ooxml/pass/vml-path.docx b/sw/qa/core/data/ooxml/pass/vml-path.docx Binary files differnew file mode 100644 index 000000000..6369783f5 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/vml-path.docx diff --git a/sw/qa/core/data/rtf/README b/sw/qa/core/data/rtf/README new file mode 100644 index 000000000..cd109d3fa --- /dev/null +++ b/sw/qa/core/data/rtf/README @@ -0,0 +1,3 @@ +Put RTF crash-test files here only in case the crash is in Writer core. If the +crash is in the RTF import itself, use the writerfilter RTF testsuite instead, +that's faster. diff --git a/sw/qa/core/data/rtf/fail/.gitignore b/sw/qa/core/data/rtf/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/rtf/fail/.gitignore diff --git a/sw/qa/core/data/rtf/fail/UnoCursor-1.rtf b/sw/qa/core/data/rtf/fail/UnoCursor-1.rtf Binary files differnew file mode 100644 index 000000000..8b816bdd2 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/UnoCursor-1.rtf diff --git a/sw/qa/core/data/rtf/fail/forcepoint-4.rtf b/sw/qa/core/data/rtf/fail/forcepoint-4.rtf new file mode 100644 index 000000000..ccd04d451 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/forcepoint-4.rtf @@ -0,0 +1,1779 @@ +{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f0\froman\fcharset0\fprq2 Tms Rmn;}{\f1\froman\fcharset2\fprq2 Symbol;}{\f2\fswiss\fcharset0\fprq2 Helv{\*\falt Arial};}{\f3\fmodern\fcharset0\fprq1 Courier;} +{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial;}{\f6\froman\fcharset0\fprq2 MS Serif;}{\f7\fswiss\fcharset0\fprq2 MS Sans Serif;}{\f8\froman\fcharset0\fprq2 Times;}{\f9\fswiss\fcharset0\fprq2 Helvetica;} +{\f10\fswiss\fcharset0\fprq2 System;}{\f11\fmodern\fcharset0\fprq1 Courier New;}{\f12\froman\fcharset0\fprq2 New York;}{\f13\fswiss\fcharset0\fprq2 Geneva;}{\f14\fnil\fcharset2\fprq2 Marlett;}{\f15\fnil\fcharset2\fprq2 Wingdings;} +{\f16\fswiss\fcharset0\fprq2 Arial Narrow;}{\f17\fswiss\fcharset0\fprq2 Arial Black;}{\f18\froman\fcharset0\fprq2 Book Antiqua;}{\f19\froman\fcharset0\fprq2 Bookman Old Style;}{\f20\froman\fcharset0\fprq2 Century Schoolbook;} +{\f21\fnil\fcharset2\fprq2 Monotype Sorts;}{\f22\fswiss\fcharset0\fprq2 Haettenschweiler;}{\f23\froman\fcharset0\fprq2 Garamond;}{\f24\fmodern\fcharset2\fprq1 MS LineDraw;}{\f25\fswiss\fcharset0\fprq2 Helvetica-Narrow;} +{\f26\froman\fcharset255\fprq2 Roman;}{\f27\fscript\fcharset255\fprq2 Script;}{\f28\fmodern\fcharset255\fprq2 Modern;}{\f29\fswiss\fcharset0\fprq1 MS Dialog;}{\f30\froman\fcharset0\fprq2 Bookman{\*\falt Bookman Old Style};} +{\f31\fnil\fcharset0\fprq0 Times New Roman Monotype{\*\falt Times New Roman};}{\f32\fnil\fcharset0\fprq0 Stone Sans{\*\falt Times New Roman};}{\f33\froman\fcharset0\fprq2 Palatino;}{\f34\fnil\fcharset0\fprq0 Arial Monotype;}}{\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;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 +\sbasedon0\snext0 heading 1,H1;}{\s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 \sbasedon15\snext0 heading 2,H2;}{\s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 \sbasedon2\snext16 heading 3,H3;}{\s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\i\f9\fs20\kerning28 \sbasedon0\snext16 heading 4,H4;}{\s5\sb240\sa60\widctlpar{\*\pn \pnlvl5\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\f5\fs22 \sbasedon0\snext0 heading 5,H5;}{\s6\sb240\sa60\widctlpar{\*\pn \pnlvl6\pndec\pnprev1\pnstart1\pnsp144 +{\pntxtb .}}\i\f5\fs22 \sbasedon0\snext0 heading 6,H6;}{\s7\sb240\sa60\widctlpar{\*\pn \pnlvl7\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\f5\fs20 \sbasedon0\snext0 heading 7;}{\s8\sb240\sa60\widctlpar{\*\pn \pnlvl8\pndec\pnprev1\pnstart1\pnsp144 +{\pntxtb .}}\i\f5\fs20 \sbasedon0\snext0 heading 8;}{\s9\sb240\sa60\widctlpar{\*\pn \pnlvl9\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\i\f5\fs18 \sbasedon0\snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\s15\li864\sb100\sl-260\slmult0 +\nowidctlpar \f8\fs20\cf1 \snext15 T1.Text1;}{\s16\sa120\widctlpar \f4\fs20 \sbasedon0\snext16 Body Text;}{\s17\fi-288\li1655\sb100\sa100\sl-260\slmult0\keepn\nowidctlpar\tx1655 \f8\fs20\cf1 \snext17 A.A+List;}{ +\s18\fi-288\li1655\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1655\tx1958 \f8\fs20\cf1 \snext18 A.AList;}{\s19\li1655\sb100\sa100\sl-260\slmult0\keepn\nowidctlpar\tx1655 \f31\fs20\cf1 \snext19 A.AList_nonum;}{\s20\qc\nowidctlpar \f8\fs4\cf1 \snext20 +anchorhldr;}{\s21\fi-792\li2015\sb100\sa100\sl-260\slmult0\nowidctlpar\tx2015 \f8\fs20\cf1 \snext21 b1.Bul_list;}{\s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 \snext22 b1.Bullet1;}{ +\s23\fi-289\li1584\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1584\tldot\tx3685 \f8\fs20\cf1 \snext23 b2.Bullet2;}{\s24\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 \snext24 chptr_title;}{\s25\li1224\sb100\sl-200\slmult0 +\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 \snext25 Code;}{\s26\fi-1008\li1007\sb100\sl-200\slmult0\nowidctlpar\tx1007 +\f3\fs18\cf1 \snext26 EN.EdNote;}{\s27\fi-1008\li1871\sb120\sa100\sl-200\slmult0\nowidctlpar\brdrb\brdrs\brdrw15 \tx1871 \f9\fs18\cf1 \snext27 Fg.Figure;}{\s28\fi-288\li1007\sa60\sl-180\slmult0\nowidctlpar\brdrt\brdrs\brdrw15 \tx1007 \f8\fs16\cf1 +\snext28 FN.Footnote;}{\s29\widctlpar\tqc\tx4320\tqr\tx8640 \f4\fs20 \sbasedon0\snext29 footer;}{\s30\fi-288\li1152\ri1152\sa60\sl200\slmult0\nowidctlpar\tx1152 \f8\fs16\cf1 \snext30 Footnote;}{\s31\li1295\sb100\sa100\sl-260\slmult0\nowidctlpar +\f8\fs20\cf1 \snext31 glosry_nxt;}{\s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 \snext32 glossary;}{\s33\sb120\sa120\sl-220\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs20\cf1 \snext33 H1.Heading1;}{ +\s34\fi-865\li864\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs28\cf1 \snext34 H2.Heading2;}{\s35\fi-865\li864\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\cf1 \snext35 H3.Heading3;}{ +\s36\fi-865\li864\sb320\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs28\cf1 \snext36 H3.Heading3_top;}{\s37\fi-865\li864\sb240\sa160\sl-200\slmult0\keepn\nowidctlpar\tqr\tx432\tx864\tqr\tx8567 \b\f9\fs20\cf1 \snext37 H4.Heading4;}{ +\s38\li864\sb160\sa100\sl-180\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs18\cf1 \snext38 H5.Heading5;}{\s39\li1440\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 \snext39 indent1;}{\s40\li864\sb100\sl-260\slmult0 +\nowidctlpar\brdrt\brdrs\brdrw15 \f8\fs20\cf1 \snext40 IR.Impl_Rec;}{\s41\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224 \f8\fs20\cf1 \snext41 N.NList;}{\s42\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1440 \f31\fs20\cf1 \snext42 +N.NList_nonum;}{\s43\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224 \f8\fs20\cf1 \snext43 N/.NList=1;}{\s44\li576\sb120\sa200\sl-479\slmult0\keepn\nowidctlpar\tx576 \f31\fs43\cf1 \snext44 PrT.PrfcTitle;}{ +\s45\fi-288\li1152\ri1152\sa80\sl-200\slmult0\nowidctlpar\tx1152\tx1871 \f8\fs16\cf1 \snext45 TableFootnote;}{\s46\fi-1008\li1871\sb200\sa200\sl-200\slmult0\nowidctlpar\tx1871 \f9\fs18\cf1 \snext46 Tb.Table;}{\s47\qc\sb120\sl-180\slmult0 +\keepn\nowidctlpar \b\f9\fs16\cf1 \snext47 TbH.TblHdctr;}{\s48\sb140\sl-200\slmult0\keepn\nowidctlpar \b\f9\fs18\cf1 \snext48 TbH.TblHdLft;}{\s49\qr\sb140\sl-200\slmult0\keepn\nowidctlpar \b\f9\fs18\cf1 \snext49 TbH.TblHdRt;}{ +\s50\qc\sb180\sa120\sl-220\slmult0\nowidctlpar \f8\fs16\cf1 \snext50 TbT.TblTxtCtr;}{\s51\sb180\sa120\sl-220\slmult0\nowidctlpar\tx144 \f8\fs16\cf1 \snext51 TbT.TblTxtLft;}{\s52\qr\sb180\sa120\sl-220\slmult0\nowidctlpar \f8\fs16\cf1 \snext52 +TbT.TblTxtRt;}{\s53\fi-289\li288\sb180\sa120\sl-220\slmult0\nowidctlpar\tx288 \f8\fs16\cf1 \snext53 TbTxt.N+;}{\s54\fi-289\li288\sb180\sa120\sl-220\slmult0\nowidctlpar\tx288 \f8\fs16\cf1 \snext54 TbTxt.N=1;}{\s55\sl-240\slmult0\nowidctlpar \f32\fs20\cf1 +\snext55 temp;}{\s56\fi-1081\li3120\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 \snext56 Table1LOT;}{\s57\fi-360\li540\sl-200\slmult0\nowidctlpar \f31\fs18 \snext57 Level2IX;}{\s58\sb80\sa140\sl-220\slmult0 +\nowidctlpar\tx2520\tx4200\tx6480 \f33\fs20\cf1 \snext58 ML.ColsList;}{\s59\qj\sl-220\slmult0\nowidctlpar \f31\fs18\cf1 \snext59 IndexIX;}{\s60\fi-1081\li3120\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20\cf1 \snext60 +Table-pageLOT;}{\s61\fi-1200\li3240\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 \snext61 Figure1-pageLOF;}{\s62\qj\sl-240\slmult0\nowidctlpar\tqr\tx9240 \f32\fs20\cf8 \snext62 HeaderRight;}{\s63\qj\sl-220\slmult0\nowidctlpar +\f31\fs18 \snext63 SortOrderIX;}{\s64\fi-720\li2700\sb120\sl-320\slmult0\nowidctlpar\tqr\tx2520\tx2700 \f31\fs28\cf1 \snext64 1HeadingTOC;}{\s65\fi-1081\li3120\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 \snext65 +Table-page1LOT;}{\s66\qj\sl-100\slmult0\nowidctlpar\tx540\tqr\tx9240 \f33\fs8\cf1 \snext66 spacer;}{\s67\sb180\sl-180\slmult0\keepn\nowidctlpar \f34\fs18\cf1 \snext67 GroupTitlesIX;}{\s68\fi-1200\li3240\sl-240\slmult0 +\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20\cf1 \snext68 FigureLOF;}{\s69\sb259\sl-200\slmult0\keepn\nowidctlpar\tx2520\tx4200\tx6480 \b\f9\fs18\cf1 \snext69 MH.ColsHd;}{\s70\sb80\sa80\sl-200\slmult0\nowidctlpar \f31\fs18 \snext70 +TbT2.TblText2;}{\s71\fi-1200\li3240\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 \snext71 Figure-pageLOF;}{\s72\sb140\sl-200\slmult0\keepn\nowidctlpar \f31\fs18\cf1 \snext72 TbH.TblHd;}{\s73\li1320\sl-240\slmult0\nowidctlpar +\f33\fs20\cf1 \snext73 T0.Text0;}{\s74\qj\fi-455\li3154\sl-280\slmult0\nowidctlpar\tqr\tx2700\tx3154 \f31\cf1 \snext74 2HeadingTOC;}{\s75\fi-360\li360\sl-200\slmult0\nowidctlpar \f31\fs18 \snext75 Level1IX;}{\s76\fi-360\li720\sl-200\slmult0\nowidctlpar +\f31\fs18 \snext76 Level3IX;}{\s77\fi-1140\li3179\sl-220\slmult0\nowidctlpar\tx3179\tqr\tldot\tx9119\tqr\tx9600 \f31\fs18\cf1 \snext77 Figure-page1LOF;}{\s78\qj\sl-220\slmult0\nowidctlpar \f31\fs18\cf1 \snext78 SeparatorsIX;}{\s79\sl200\slmult0 +\nowidctlpar \f8\fs16\cf1 \snext79 CellBody;}{\s80\fi-1081\li3120\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 \snext80 TableLOT;}{\s81\fi-1200\li3240\sl-240\slmult0\nowidctlpar\tx3240\tqr\tldot\tx9119\tqr\tx9551 \f31\fs20 +\snext81 Figure1LOF;}{\s82\qj\fi-540\li3694\sl-240\slmult0\nowidctlpar\tqr\tx3154\tx3694 \f31\fs20\cf1 \snext82 3HeadingTOC;}{\s83\li1224\sb80\sl-200\slmult0 +\nowidctlpar\tx1440\tx1620\tx1800\tx1980\tx2160\tx2340\tx2520\tx2700\tx2880\tx3060\tx3240\tx3420\tx3600\tx3780\tx3960 \f3\fs16\cf1 \snext83 TuCv.TutCode4;}{\s84\qj\sl-280\slmult0\nowidctlpar \f8\cf1 \snext84 Body;}{\s85\fi-1260\li3240\sl-240\slmult0 +\nowidctlpar\tx3240 \f31\fs20 \snext85 TableTitleLOT;}{\s86\fi-1140\li3179\sl-220\slmult0\nowidctlpar\tx3179\tqr\tldot\tx9119\tqr\tx9600 \f31\fs18\cf1 \snext86 Table1-pageLOT;}{\*\cs87 \additive\super \sbasedon10 endnote reference;}{\*\cs88 \additive +\super \sbasedon10 footnote reference;}{\s89\widctlpar\tqc\tx4320\tqr\tx8640 \f4\fs20 \sbasedon0\snext89 header;}{\s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 \snext90 Pr.Preface;}{\s91\sb120\keep\widctlpar \f4\fs20 +\sbasedon0\snext0 Definition item;}{\*\cs92 \additive\fs16 \sbasedon10 annotation reference;}{\s93\widctlpar \f4\fs20 \sbasedon0\snext93 annotation text;}{\s94\qc\sb720\sa160\keep\keepn\widctlpar \b\f5\fs48\kerning28 \sbasedon0\snext95 Title Cover;}{ +\s95\qc\sb240\sa160\keep\keepn\widctlpar \i\f5\fs36\kerning28 \sbasedon94\snext16 Subtitle Cover;}{\s96\fi-360\li720\widctlpar{\*\pn \pnlvl11\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\f4\fs20 \sbasedon0\snext96 List Bullet 2;}{ +\s97\li864\sb100\sl-260\slmult0\nowidctlpar \b\i\f30\fs18\cf1 \sbasedon15\snext97 bman;}{\s98\li360\ri360\sb120\sa120\widctlpar \f11\fs20 \sbasedon0\snext98 Syntax;}{\s99\sb360\widctlpar\tqr\tx8640 \b\f5 \sbasedon0\snext0 toc 1;}{ +\s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 \sbasedon0\snext0 toc 2;}{\s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 \sbasedon0\snext0 toc 3;}{\s102\li480\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 4;}{ +\s103\li720\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 5;}{\s104\li960\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 6;}{\s105\li1200\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 7;}{ +\s106\li1440\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 8;}{\s107\li1680\widctlpar\tqr\tldot\tx8640 \f4\fs18 \sbasedon0\snext0 toc 9;}{\s108\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \v\f8\fs36 \sbasedon24\snext108 +noTOC1;}{\s109\li864\sb100\sl-260\slmult0\nowidctlpar \b\i\f8\fs20\cf6 \sbasedon15\snext109 attent;}{\s110\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \v\f8\fs36 \sbasedon24\snext110 noTOC;}{\*\cs111 \additive\sbasedon10 +page number;}{\s112\fi-288\li288\sa60\widctlpar \f8\fs20 \sbasedon0\snext112 footnote text;}{\s113\li576\sb60\widctlpar \f11\fs20 \sbasedon0\snext113 c1.Code 1;}{\s114\li360\ri360\sb240\sl240\slmult0 +\widctlpar\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4406\tx4680\tx5400\tx6120\tx6840\tx7560\tx8280\tx9000\tx9720 \f3\fs20\cf1 \sbasedon0\snext114 Code Example;}{\s115\fi-360\li1080\ri720\sb120\widctlpar{\*\pn \pnlvl10 +\pndec\uldashdd\pnstart1\pnindent360\pnhang{\pntxta )}}\fs20 \sbasedon0\snext115 Numbered List;}{\s116\li720\ri720\sb120\widctlpar \fs20 \sbasedon0\snext116 Simple List;}{\s117\sb240\keepn\widctlpar \b\f25 \sbasedon6\snext0 Highlighted Paragraph 1;}{ +\s118\fi-1440\li1872\ri432\sb120\keep\widctlpar \fs20 \sbasedon0\snext118 Definition List,DL;}}{\*\revtbl {Unknown;}{Frank Dawson;}}{\info{\title vCalendar Specification, v0.4}{\subject Versit vCalendar Specification V0.4}{\author Frank Dawson} +{\keywords VERSIT vCalendar Calendaring Scheduling}{\operator Frank Dawson}{\creatim\yr1996\mo9\dy3\hr10\min1}{\revtim\yr1995\mo9\dy18\hr7\min10}{\printim\yr1996\mo9\dy12\hr12\min25}{\version30}{\edmins218}{\nofpages62}{\nofwords15938}{\nofchars90851} +{\*\company }{\vern57431}}\margl2160\margr1440\margt2160\margb1627 \facingp\widowctrl\ftnbj\aenddoc\margmirror\linkstyles\hyphcaps0 \fet0{\*\template D:\\PERSONAL\\0122\\0122_2\\DAVECHAP.DOT}\sectd \psz1\pgnrestart\pgnlcrm\linex0\colsx0\titlepg +{\headerl \pard\plain \s55\sl-240\slmult0\widctlpar \f32\fs20\cf1 +\par \pard \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 +\par }{\headerr \pard\plain \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 \f32\fs20\cf1 +\par +\par }{\footerl \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4320\tqr\tx8640 \f4\fs20 \chpgn \tab \tab {\field{\*\fldinst TITLE \\* MERGEFORMAT }{\fldrslt vCalendar Specification, v0.4}} +\par }{\footerr \pard\plain \s29\widctlpar\tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst STYLEREF "Pr.Preface" \\* MERGEFORMAT }{\fldrslt {\lang1024 Copyrights}}}{\f8 \tab \tab }\chpgn +\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5 +\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \qc\sb1600\widctlpar \f4\fs20 {\b\i\f19\fs56 vCalendar}{\b\i\fs40 +\par }\pard \qc\sb120\widctlpar {\i\fs48 The Electronic Calendaring and Scheduling +\par }\pard \qc\sb120\widctlpar {\i\fs48 Exchange Format}{\b\fs48 +\par }\pard \qc\sb120\widctlpar {\fs40 Version 1.0 +\par }\pard \qc\sb1200\widctlpar {\b {\pict\wmetafile8\picw1693\pich1693\picwgoal960\pichgoal960 \picscalex276\picscaley276\picbmp\picbpp8 +010009000003760600000000520600000000050000000b0200000000050000000c023000300005000000090200000000050000000102ffffff00040000000701030052060000430f2000cc00000030003000000000003000300000000000280000003000000030000000010008000000000000000000120b0000120b0000d8 +000000d8000000ffffff00ceffff009cffff0063ffff0031ffff0000ffff00ffccff00ccccff0099ccff0066ccff0033ccff0000ccff00ff99ff00cc99ff009999ff006699ff003399ff000099ff00ff66ff00cc66ff009966ff006666ff003366ff000066ff00ff33ff00cc33ff009933ff006633ff003333ff000033ff00 +ff00ff00cc00ff009900ff006600ff003300ff000000ff00ffffcc00ccffcc0099ffcc0066ffcc0033ffcc0000ffcc00ffcccc00cccccc0099cccc0066cccc0033cccc0000cccc00ff99cc00cc99cc009999cc006699cc003399cc000099cc00ff66cc00cc66cc009966cc006666cc003366cc000066cc00ff33cc00cc33cc +009933cc006633cc003333cc000033cc00ff00cc00cc00cc009900cc006600cc003300cc000000cc00ffff9900ccff990099ff990066ff990033ff990000ff9900ffcc9900cccc990099cc990066cc990033cc990000cc9900ff999900cc99990099999900669999003399990000999900ff669900cc669900996699006666 +99003366990000669900ff339900cc33990099339900663399003333990000339900ff009900cc00990099009900660099003300990000009900ffff6600ccff660099ff660066ff660033ff660000ff6600ffcc6600cccc660099cc660066cc660033cc660000cc6600ff996600cc99660099996600699966003399660000 +996600ff666600cc66660099666600666666003366660000666600ff336600cc33660099336600663366003333660000336600ff006600cc00660099006600660066003300660000006600ffff3300ccff330099ff330066ff330033ff330000ff3300ffcc3300cccc330099cc330066cc330033cc330000cc3300ff993300 +cc99330099993300669933003399330000993300ff663300cc66330099663300666633003366330000663300ff333300cc33330099333300663333003333330000333300ff003300cc00330099003300660033003300330000003300ffff0000ccff000099ff000066ff000033ff000000ff0000ffcc0000cccc000099cc00 +0066cc000033cc000000cc0000ff990000cc99000099990000669900003399000000990000ff660000cc66000099660000666600003366000000660000ff330000cc33000099330000663300003333000000330000ff000000cc00000099000000660000003300000000000000000000000000000000000000000000000007 +07151b1c1b15070700000000000000000000000000000000000000000000000000000000000000000000000000000707151b1c221c1b1507070000000000000000000000000000000000000000000000000000000000000000000000000707151b1c2247221c1b150707000000000000000000000000000000000000000000 +000000000000000000000000000707151b1c226bd76b221c1b15070700000000000000000000000000000000000000000000000000000000000000000707151b1c226bd7d7d76b221c1b1507070000000000000000000000000000000000000000000000000000000000000707151b1c226bd7d7d7d7d76b221c1b15070700 +0000000000000000000000000000000000000000000000000000000707151b1c226bd7d7d756d7d7d76b221c1b15070700000000000000000000000000000000000000000000000000000707151b1c226bd7d7d7562b56d7d7d76b221c1b1507070000000000000000000000000000000000000000000000000707151b1c22 +6bd7d7d7562b000056d7d7d76b221c1b150707000000000000000000000000000000000000000000000707151b1c226bd7d7d7562b0000000056d7d7d76b221c1b15070700000000000000000000000000000000000000000707151b1c226bd7d7d7562b56000000002b56d7d7d76b221c1b15070700000000000000000000 +00000000000000000707151b1c226bd7d7d7562b000056000056000056d7d7d76b221c1b150707000000000000000000000000000000000707151b1c226bd7d7d7562b000000002b560000000056d7d7d76b221c1b15070700000000000000000000000000000707151b1c226bd7d7d7562b5600000000562b000000002b56 +d7d7d76b221c1b1507070000000000000000000000000707151b1c226bd7d7d7562b000056000056000056000056000056d7d7d76b221c1b150707000000000000000000000007151b1c226bd7d7d7562b000000002b56000000002b560000000056d7d7d76b221c1b15070700000000000000000007151b1c226bd7d7d756 +2b5600000000562b00000000562b000000000056d7d7d76b221c1b1507070000000000000000071b1c226bd7d7d7562b0000560000560000560000560000560000562b2b56d7d7d76b221c1b150707000000000000000715226bd7d7d7562b000000002b56000000002b56000000002b56002bd70056d7d7d76b221c1b1507 +0700000000000000076bd7d7d7562b5600000000562b00000000562b00000000562b000000000056d7d7d76b221c1b1507000000000000000007d7d7562b002b56000056000056000056000056000056000056000000000056d7d7d76b221c1b1507000000000000d7d7d7562b00d756002b56000000002b56000000002b56 +000000002b560000000056d7d7d76b221c1b07000000000056d7d7562b0000562b00562b00000000562b00000000562b00000000562b000000000056d7d7d76b2215070000000056d700d7d72b0000000000002b56000056000056000056000056000056000056000000000056d7d7d76b07000000000000d7d75600d75600 +000056d756002b56000000002b56000000002b56000000002b560000000056d7d7d75600000000000000565656d7d756000000562b00562b00000000562b00000000562b00000000562b000000000056d7d7d7560000000000000056d700d7d72b0000000000002b560000560000560000560000560000561c1c5600000000 +0056d7d7d70000000000000000d7d75600d75600d75600d756002b56000000002b56000000002b561c1c1c1c2b5600000000d7d700000000000810090100565656d7d756d75600562b00562b00000000562b00000000562b1c1c1c1c562b00002b56d700000000000910101007000056d700d7d7562b00000000002b560000 +560000560000560000561c1c560000002b56d70000000000001010100800000000d7d75600d75600000056d756002b56000000002b56000000002b560000002b56d7000000000000000f090f010000000000565656d7d756000000562b00562b00000000562b00000000562b00002b56d70000000000000000090f01000000 +0000000056d700d7d72b0000000000002b560000560000560000560000562b56d70000000000000000000105000000000000000000d7d75600d75600000056d756002b56000000002b560000002b56d700000007090901000000000000000000000000000000565656d7d756000000562b00562b00000000562b00002b56d7 +000000000810100f0800000000000000010909070000000056d700d7d72b0000000000002b560000560000562b56d700000000000810100a0f080000000000080f1010080000000000d7d75600d75600d75600d756002b560000002b56d70000000000000109100f0f0900000000080f0a101008000000000000565656d7d7 +56d75600562b00562b00002b56d7000000000000000008090f0f0f08000008090f0f1009010000000000000056d700d7d7562b000000000000562b56d7000000000000000000000709090f0700010809090f0908000000000000000000d7d75600d75600000056d7002b56d700000000000000000000000000070808000107 +080909070000000008080100000000565656d7d756000000002b56d700000000000001080800000000000808000000010807000000000008101009000000000056d700d7d72b00002b56d70000000000000009101008000000000000000000000000000000000710101009000000000000d7d75600d7562b56d70000000000 +00000009101010070000000000000000000000000000010f0a10100800000000000000565656d7d756d70000080801000000000810100a0f010000000000000000000000000008090f100907000000000808010056d700d7d70000000f1009010000000709100f090800000000000000000000000007090f090f0900000000 +081010090000d7d756000000000910100800000000090f090f0907000000000000000000000001080809080700000007101010090000005600000000000910100f0800000007080908080100000000000000000000000001080801000000010f0a101008000000000000000000080f10090801000000010808010000000000 +030000000000}}{\b +\par }\pard \qc\sb1600\widctlpar {\fs40 A}{\i\fs40 }{\b\i\f19\fs40 versit}{\i\fs40 }{\fs40 Consortium Specification +\par }\pard \qc\sb480\widctlpar {\fs40 September 18, 1996 +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 \sect \sectd \psz1\pgnlcrm\linex0\colsx0 \pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 Copyrights +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 \'a9, 1996, International Business Machines Corp., Lucent Technologies, Inc., and Siemens. All rights reserved. +\par \pard \s15\li864\sb100\sl-260\slmult0\widctlpar Permission is granted to copy and distribute this publication provided that it is reproduced in its entirety without modification and includes the above copyright notice and this permission notice. +\par \pard \s15\li864\sb100\sl-260\slmult0\widctlpar +No licenses, express or implied, are granted with respect to any of the technology described in this publication. International Business Machines Corp., Lucent Technologies, Inc., and Siemens retain all their intellectual property rights in the technology + described in this publication. +\par \pard \s15\li864\sb100\sl-260\slmult0\widctlpar Even though International Business Machines Corp., Lucent Technologies, Inc., and Siemens have reviewed this specification, {\b\fs18 +INTERNATIONAL BUSINESS MACHINES CORP., LUCENT TECHNOLOGIES, INC., AND SIEMENS, MAKE NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS PUBLICATION, ITS QUALITY OR ACCURACY, NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR a PAR +TICULAR PURPOSE. AS a RESULT, THIS SPECIFICATION IS DELIVERED \ldblquote AS IS\rdblquote AND THE READER ASSUMES THE ENTIRE RISK AS TO ITS QUALITY, ACCURACY OR SUITABILITY FOR ANY PARTICULAR PURPOSE.. +\par }\pard \s15\li864\sb100\sl-260\slmult0\widctlpar {\b\fs18 +IN NO EVENT WILL INTERNATIONAL BUSINESS MACHINES CORP., LUCENT TECHNOLOGIES, INC., AND SIEMENS, be LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS PUBLICATION, EVEN IF ADVISED OF T +HE POSSIBILITY OF SUCH DAMAGES. +\par }\pard \s15\li864\sb100\sl-260\slmult0\widctlpar This publication is provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by the Government are subject to restrictions set forth in DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar \sect \sectd \psz1\pgnlcrm\linex0\colsx0 {\headerl \pard\plain \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 \f32\fs20\cf1 +\par \pard \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 +\par }{\headerr \pard\plain \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 \f32\fs20\cf1 +\par \pard \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 +\par }{\footerl \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4320\tqr\tx8640 \f4\fs20 \chpgn \tab \tab {\field{\*\fldinst TITLE \\* MERGEFORMAT }{\fldrslt vCalendar Specification, v0.4}} +\par }{\footerr \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst STYLEREF "Pr.Preface" \\* MERGEFORMAT }{\fldrslt {\lang1024 Trademarks}}}\tab \tab \chpgn +\par }\pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 Trademarks +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\b\i\f19\fs18 versit}, the {\b\i\f30\fs18 versit } + logo, versitcard, vCard, vCalendar are trademarks of Apple Computer, Inc., AT&T Corp., International Business Machines Corp., and Siemens. +\par Apple and the Apple Logo are trademarks of Apple Computer, Inc. registered in the U.S. and other countries. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar AT&T is a registered trademarks of AT&T Corp. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar IBM is a registered trademarks of International Business Machines Corporation. +\par \pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 \sect \sectd \psz1\pgnlcrm\linex0\colsx0 \pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 Contributors +\par \trowd \trgaph108\trleft-108 \cellx4320\cellx8748 \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Roland H. Alden\cell Stephen J. Bartlett\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft-108 \cellx4320\cellx8748 + \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Jay Batson, ON Technology\cell John Binici, Iris Associates\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Stev +e Carter, Novell\cell Liang-Jye Chang, Starfish Software\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Andre Courtemanche, CS&T\cell Jim Cunnie, AT&T EasyCommerce\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Frank Dawson, IBM Corporation\cell Rik Drummond, The Drummond Group\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0 +\widctlpar\intbl \f8\fs20\cf1 Gavin Eadie, University of Michigan\cell Pat Egen, Provident Life and Accident\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Randell Flint, Sundial Systems +\cell Ben Forta, OnTime/Division of FTP\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Anik Ganguly, OnTime/Division of FTP.\cell Arvind Goyal, Lotus Development Corporation\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 David Goodhand, Microsoft\cell Steve Hanna, ON Technology\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0 +\widctlpar\intbl \f8\fs20\cf1 John Hansen, Starfish Software\cell Niraj Jain, Oracle Corporation\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Del Jensen, Novell\cell \pard +\s15\sb100\sl-260\slmult0\widctlpar\intbl Bruce M. Johnston, Lotus Development Corporation\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Dr. Mark K. Joseph, Attachmate Corporation{ +\f2\fs24 \cell }Bruce Kahn, Iris Associates\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Don Lavange, Novell\cell Larry Mason, Microsystems Software, Inc.\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Skip Montanaro, Automatrix, Inc.\cell Pete O\rquote Leary, Clear Blue Networking Systems, Inc.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Ron Rassner, Creative Networks, Inc.\cell Vinod Seraphin, Lotus Development Corporation\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl +\f8\fs20\cf1 Uppili Srivivasan, Oracle Corporation\cell Tom Steppe, OnTime/Divison of FTP Software\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Dean Stevens, Now Software, Inc.\cell +Budi Sutardja\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Robert Tatar, Automatrix, Inc.\cell Yvonne Tso, SunSoft\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd +\trgaph108\trleft-108 \cellx4320\cellx8748 \pard\plain \s15\sb100\sl-260\slmult0\widctlpar\intbl \f8\fs20\cf1 Mike Weston, Netscape Communications Corporation.\cell \pard \s15\sb100\sl-260\slmult0\widctlpar\intbl Steve Wincor, Lockheed Martin\cell +\pard\plain \widctlpar\intbl \f4\fs20 {\f8\cf1 \row }\pard\plain \s15\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 +\par \pard \s15\li864\sb100\sl-260\slmult0\widctlpar \sect \sectd \psz1\pgnlcrm\linex0\colsx0 {\footerl \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp40 \tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst PAGE \\* roman \\* MERGEFORMAT }{\fldrslt { +\lang1024 vi}}}\tab \tab {\field{\*\fldinst TITLE \\* MERGEFORMAT }{\fldrslt vCalendar Specification, v0.4}} +\par }{\footerr \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst STYLEREF "Pr.Preface" \\* MERGEFORMAT }{\fldrslt {\lang1024 Reference Information}}}\tab \tab {\field{\*\fldinst PAGE \\* roman \\ +* MERGEFORMAT }{\fldrslt {\lang1024 v}}} +\par }\pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 {\cchs256 Reference Information +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The cited references contain provisions which, through reference in this specification, constitute provisions of this specification. At the time of publication, the indicated versions in the following references were valid. Parties to agreements based on +this specification are encouraged to research the possibility of revised standards. +\par \pard\plain \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\widctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 {\f31\fs14 \bullet \tab }ANSI X3.4-1977, {\i Code for Information Interchange}, American National Standards Institute, 1977. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\widctlpar\tx1224\tldot\tx3685 \bullet \tab IETF RFC 1738, {\i Universal Resource Locator}, December 1994. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\widctlpar\tx1224\tldot\tx3685 \bullet \tab IETF Network Working Group RFC 1766, {\i Tags for the Identification of Languages,} March 1995. +\par {\f31\fs14 \bullet \tab }ISO 639, {\i Code for The Representation of names of languages}, International Organization for Standardization, April, 1988. +\par {\f31\fs14 \bullet \tab }ISO 3166, {\i Codes for The Representation of names of countries}, International Organization for Standardization, December, 1993. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\widctlpar\tx1224\tldot\tx3685 {\f31\fs14 \bullet \tab }ISO 8601, {\i Data elements and interchange formats\emdash Information interchange\emdash Representation of dates and times} +, International Organization for Standardization, June, 1988. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 {\f31\fs14 \bullet \tab }ISO 8601, {\i Technical Corrigendum 1, Data elements and interchange formats\emdash Information interchange\emdash +Representation of dates and tmes}, International Organization for Standardization, May, 1991. +\par \bullet \tab ISO 8859-1, {\i Information Processing\emdash 8-Bit single-byte coded graphic character sets\emdash Part 1: Latin Alphabet No. 1,} International Organization for Standardization, February, 1987. +\par \bullet \tab ISO/IEC 9070, {\i Information Technology\emdash SGML Support Facilities\emdash Registration Procedures for Public Text Owner Identifiers,} Second Edition, International Organization for Standardization, April, 1991. +\par \bullet \tab RFC1521, {\i MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies,} Network Working Group, September, 1993. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \bullet \tab XAPIA CSA, {\i Calendaring and Scheduling Application Programming Interface (CSA) Version 1.0,} X.400 API Association, November 15, 1994. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\widctlpar\tx1224\tldot\tx3685 \sect \sectd \margtsxn2520\psz1\pgnlcrm\linex0\colsx0 {\headerl \pard\plain \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 \f32\fs20\cf1 +\par \pard \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 +\par }{\headerr \pard\plain \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 \f32\fs20\cf1 +\par \pard \s55\sl-240\slmult0\widctlpar\brdrb\brdrth\brdrw45\brsp20 +\par }{\footerl \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp40 \tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst PAGE \\* MERGEFORMAT }{\fldrslt {\lang1024 viii}}}\tab \tab {\field{\*\fldinst TITLE \\* MERGEFORMAT }{\fldrslt +vCalendar Specification, v0.4}} +\par }{\footerr \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4320\tqr\tx8640 \f4\fs20 {\field{\*\fldinst STYLEREF "Pr.Preface" \\* MERGEFORMAT }{\fldrslt {\lang1024 Contents}}}\tab \tab {\field{\*\fldinst PAGE \\* MERGEFORMAT }{\fldrslt { +\lang1024 vii}}} +\par }\pard\plain \s90\li864\sa240\sl-400\slmult0\keepn\widctlpar\tx864 \b\f9\fs36\cf1 {\i\f30 versit}{\b0 Update +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\b\i\f30\fs18 versit } is a multivendor development initiative of the communication and computer industries, founded by Apple, AT&T, IBM and Siemens. The {\b\i\f30\fs18 versit } +parties believe that great potential exists in improving the nature of communications in the business world\emdash +permitting companies to better manage their quality, productivity, customer satisfaction and cost of operations, while expanding the market opportunities for a variety of product and service vendors. {\b\i\f30\fs18 versit } +parties will jointly define and support open specifications that facilitate and promote the interoperability of advanced personal information and communication devices, networks and services. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The {\b\i\f30\fs18 versit } +vision is to enable diverse communication and computing devices, applications and services from competing vendors to interoperate in all environments. Through developing a series of specifications for interoperability among diverse communications and comp +uting devices, applications, networks and services, {\b\i\f30\fs18\cchs256 versit }\rquote s vision will become a reality. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar {\b\i\f30\fs18 versit }\rquote s primary development areas are in: +\par \pard\plain \s22\fi-288\li1224\sb100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 \bullet \tab Personal Data Interchange (PDI) +\par \bullet \tab Computer Telephone Integration (CTI) +\par \bullet \tab Conferencing and Messaging (C&M) +\par \bullet \tab Wired and Wireless connectivity +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\b\i\f30\fs18 versit }specifications are directed at both the decision makers and the implementation teams of: +\par \pard\plain \s22\fi-288\li1224\sb100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 \bullet \tab Equipment Manufacturers +\par \bullet \tab Independent Software Vendors +\par \bullet \tab Information Service Providers +\par \bullet \tab Online Service Providers +\par \bullet \tab Software Houses +\par \bullet \tab Users +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\b\i\f30\fs18 versit }specifications are made available to any interested party. In turn, {\b\i\f30\fs18 versit }encourages the support of our goals by soliciting feedback on { +\b\i\f30\fs18 versit }specifications.{\cchs256 +\par }All comments relating to {\b\i\f30\fs18 versit }or the material within this specification should be submitted to: +\par \pard \s15\qc\li864\sb100\sl-260\slmult0\widctlpar {\b\i\f30\fs18 versit } \line (800) 803-6240\line (201) 327-2803 (Outside USA)\line pdi@v{\cchs256 ersit.com\line http://www.versit.com} +\par \pard\plain \widctlpar \f4\fs20 +\par \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\strike \sect }\sectd \margtsxn2520\psz1\pgnlcrm\linex0\colsx0 {\*\pnseclvl1\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl2\pndec\pnprev1\pnstart1 +{\pntxta .}}{\*\pnseclvl3\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl4\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl5\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl6\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl7\pndec\pnprev1\pnstart1 +{\pntxta .}}{\*\pnseclvl8\pndec\pnprev1\pnstart1 {\pntxta .}}{\*\pnseclvl9\pndec\pnprev1\pnstart1 {\pntxta .}}\pard\plain \s90\li864\sb100\sa240\sl-400\slmult0\keepn\nowidctlpar\tx864 \b\f9\fs36\cf1 Contents +\par \pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\field\fldedit{\*\fldinst TOC \\o "2-4" \\t "chptr_title,1" }{\fldrslt {\lang1024 Section 1 : Introduction\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165325 }{\field{\*\fldinst {\lang1024 + PAGEREF _Toc367165325 }}{\fldrslt {\lang1024 1}}}}}{\lang1024 +\par }\pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\field\fldedit{\*\fldinst TOC \\o "2-4" \\t "chptr_title,1" }{\fldrslt {\lang1024 Section 1 : Introduction\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165325 }{\field{\*\fldinst {\lang1024 + PAGEREF _Toc367165 }}{\fldrslt {\lang1024 1}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 1.1 Overview\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165326 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165326 }}{\fkdrslt {\lang1024 1}}}}}{\lang1024 +\par }\pard \s100\sb240\widctlpar\tqr\tldot\tx8640 {\lang1024 1.2 Scope\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165327 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165327 }}{\fldrslt {\lang1024 2}}}}}{\lang1024 +\par 1.3 Contents\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165328 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165328 }}{\fldrslt {\lang1024 3}}}}}{\lang1024 +\par 1.4 Definitions and Abbreviations\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165329 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165329 }}{\fldrslt {\lang1024 3}}}}}{\lang1024 +\par }\pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\lang1024 Section 2 : vCalendar\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165330 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165330 }}{\fldrslt {\lang1024 5}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.1 Encoding Characteristics\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165331 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165331 }}{\fldrslt {\lang1024 5}}}}}{ +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.1 Encoding Characteristics\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165331 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165331 }}{\fldrslt {\lang1024 5}}}}}{ +\lang1024 +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.1.1 vCalendar Object\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165332 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165332 }}{\fldrslt {\lang1024 5}}}}}{\lang1024 + +\par }\pard\plain \s102\li480\widctlpar\tqr\tldot\tx8640 \f4\fs18 {\lang1024 2.1.1.1 vEvent Object\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165333 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165333 }}{\fldrslt {\lang1024 5}}}}}{\lang1024 + +\par 2.1.1.2 vTodo Object\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165334 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165334 }}{\fldrslt {\lang1024 6}}}}}{\lang1024 +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.1.2 Property\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165335 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165335 }}{\fldrslt {\lang1024 6}}}}}{\lang1024 +\par }\pard \s101\li240\widctlpar\tqr\tldot\tx8640 {\lang1024 2.1.3 Delimiters\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165336 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165336 }}{\fldrslt {\lang1024 7}}}}}{\lang1024 +\par 2.1.4 Encodings\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165337 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165337 }}{\fldrslt {\lang1024 7}}}}}{\lang1024 +\par 2.1.5 Character Set\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165338 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165338 }}{\fldrslt {\lang1024 8}}}}}{\lang1024 +\par 2.1.6 Language\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165339 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165339 }}{\fldrslt {\lang1024 8}}}}}{\lang1024 +\par 2.1.7 Date and Time\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165340 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165340 }}{\fldrslt {\lang1024 8}}}}}{\lang1024 +\par 2.1.8 Time Duration\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165341 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165341 }}{\fldrslt {\lang1024 9}}}}}{\lang1024 +\par 2.1.9 Value Location\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165342 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165342 }}{\fldrslt {\lang1024 9}}}}}{\lang1024 +\par 2.1.10 Binary Values\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165343 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165343 }}{\fldrslt {\lang1024 10}}}}}{\lang1024 +\par 2.1.11 Basic Recurrence Rule Grammar\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165344 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165344 }}{\fldrslt {\lang1024 10}}}}}{\lang1024 +\par }\pard\plain \s102\li480\widctlpar\tqr\tldot\tx8640 \f4\fs18 {\lang1024 2.1.11.1 Daily Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165345 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165345 }}{\fldrslt {\lang1024 10}}}}}{\lang1024 + +\par 2.1.11.2 Weekly Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165346 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165346 }}{\fldrslt {\lang1024 11}}}}}{\lang1024 +\par 2.1.11.3 Monthly Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165347 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165347 }}{\fldrslt {\lang1024 11}}}}}{\lang1024 +\par 2.1.11.4 Yearly Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165348 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165348 }}{\fldrslt {\lang1024 12}}}}}{\lang1024 +\par 2.1.11.5 Grammar\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165349 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165349 }}{\fldrslt {\lang1024 12}}}}}{\lang1024 +\par 2.1.11.6 Glossary\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165350 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165350 }}{\fldrslt {\lang1024 13}}}}}{\lang1024 +\par 2.1.11.7 Policies\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165351 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165351 }}{\fldrslt {\lang1024 14}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.2 vCalendar Properties\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165352 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165352 }}{\fldrslt {\lang1024 15}}}}}{\lang1024 + +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.2.1 Daylight Savings Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165353 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165353 }}{\fldrslt {\lang1024 15}}}}}{ +\lang1024 +\par }\pard \s101\li240\widctlpar\tqr\tldot\tx8640 {\lang1024 2.2.2 Geographic Position\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165354 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165354 }}{\fldrslt {\lang1024 15}}}}}{\lang1024 +\par 2.2.3 Product Identifier\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165355 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165355 }}{\fldrslt {\lang1024 16}}}}}{\lang1024 +\par 2.2.4 Time Zone\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165356 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165356 }}{\fldrslt {\lang1024 16}}}}}{\lang1024 +\par 2.2.5 Version\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165357 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165357 }}{\fldrslt {\lang1024 16}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.3 vEvent and vTodo Properties\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165358 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165358 }}{\fldrslt {\lang1024 17}}}}}{ +\lang1024 +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.3.1 Attachment\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165359 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165359 }}{\fldrslt {\lang1024 17}}}}}{\lang1024 +\par }\pard \s101\li240\widctlpar\tqr\tldot\tx8640 {\lang1024 2.3.2 Attendee\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165360 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165360 }}{\fldrslt {\lang1024 17}}}}}{\lang1024 +\par 2.3.3 Audio Reminder\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165361 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165361 }}{\fldrslt {\lang1024 19}}}}}{\lang1024 +\par 2.3.4 Categories\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165362 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165362 }}{\fldrslt {\lang1024 20}}}}}{\lang1024 +\par 2.3.5 Classification\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165363 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165363 }}{\fldrslt {\lang1024 20}}}}}{\lang1024 +\par 2.3.6 Date/Time Created\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165364 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165364 }}{\fldrslt {\lang1024 21}}}}}{\lang1024 +\par 2.3.7 Date/Time Completed\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165365 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165365 }}{\fldrslt {\lang1024 21}}}}}{\lang1024 +\par 2.3.8 Description\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165366 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165366 }}{\fldrslt {\lang1024 22}}}}}{\lang1024 +\par 2.3.9 Display Reminder\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165367 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165367 }}{\fldrslt {\lang1024 22}}}}}{\lang1024 +\par 2.3.10 Due Date/Time\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165368 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165368 }}{\fldrslt {\lang1024 22}}}}}{\lang1024 +\par 2.3.11 End Date/Time\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165369 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165369 }}{\fldrslt {\lang1024 23}}}}}{\lang1024 +\par 2.3.12 Exception Date/Times\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165370 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165370 }}{\fldrslt {\lang1024 23}}}}}{\lang1024 +\par 2.3.13 Exception Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165371 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165371 }}{\fldrslt {\lang1024 23}}}}}{\lang1024 +\par 2.3.14 Last Modified\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165372 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165372 }}{\fldrslt {\lang1024 23}}}}}{\lang1024 +\par 2.3.15 Location\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165373 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165373 }}{\fldrslt {\lang1024 24}}}}}{\lang1024 +\par 2.3.16 Mail Reminder\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165374 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165374 }}{\fldrslt {\lang1024 24}}}}}{\lang1024 +\par 2.3.17 Number Recurrences\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165375 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165375 }}{\fldrslt {\lang1024 24}}}}}{\lang1024 +\par 2.3.18 Priority\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165376 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165376 }}{\fldrslt {\lang1024 25}}}}}{\lang1024 +\par 2.3.19 Procedure Reminder\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165377 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165377 }}{\fldrslt {\lang1024 25}}}}}{\lang1024 +\par 2.3.20 Related To\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165378 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165378 }}{\fldrslt {\lang1024 25}}}}}{\lang1024 +\par 2.3.21 Recurrence Date/Times\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165379 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165379 }}{\fldrslt {\lang1024 26}}}}}{\lang1024 +\par 2.3.22 Recurrence Rule\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165380 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165380 }}{\fldrslt {\lang1024 26}}}}}{\lang1024 +\par 2.3.23 Resources\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165381 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165381 }}{\fldrslt {\lang1024 26}}}}}{\lang1024 +\par 2.3.24 Sequence Number\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165382 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165382 }}{\fldrslt {\lang1024 27}}}}}{\lang1024 +\par 2.3.25 Start Date/Time\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165383 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165383 }}{\fldrslt {\lang1024 27}}}}}{\lang1024 +\par 2.3.26 Status\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165384 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165384 }}{\fldrslt {\lang1024 27}}}}}{\lang1024 +\par 2.3.27 Summary\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165385 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165385 }}{\fldrslt {\lang1024 28}}}}}{\lang1024 +\par 2.3.28 Time Transparency\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165386 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165386 }}{\fldrslt {\lang1024 28}}}}}{\lang1024 +\par 2.3.29 Uniform Resource Locator\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165387 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165387 }}{\fldrslt {\lang1024 29}}}}}{\lang1024 +\par 2.3.30 Unique Identifier\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165388 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165388 }}{\fldrslt {\lang1024 29}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.4 Miscellaneous Properties\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165389 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165389 }}{\fldrslt {\lang1024 29}}}}}{ +\lang1024 +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.4.1 Extensions\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165390 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165390 }}{\fldrslt {\lang1024 29}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 2.5 Formal Definition\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165391 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165391 }}{\fldrslt {\lang1024 30}}}}}{\lang1024 + +\par }\pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\lang1024 Section 3 : Internet Recommendations\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165392 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165392 }}{\fldrslt {\lang1024 35}}}}}{ +\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 3.1 Recommended Practice With SMTP/MIME\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165393 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165393 }}{\fldrslt {\lang1024 35} +}}}}{\lang1024 +\par }\pard\plain \s101\li240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 3.1.1 Text/Plain Content Type\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165394 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165394 }}{\fldrslt {\lang1024 35}}}}}{ +\lang1024 +\par }\pard \s101\li240\widctlpar\tqr\tldot\tx8640 {\lang1024 3.1.2 Text/X-vCalendar Content Type\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165395 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165395 }}{\fldrslt {\lang1024 36}}}}}{\lang1024 + +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 3.2 Recommended Practice With HTTP/HTML\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165396 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165396 }}{\fldrslt {\lang1024 37} +}}}}{\lang1024 +\par }\pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\lang1024 Section 4 : UI Support Recommendations\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165397 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165397 }}{\fldrslt {\lang1024 41}}}}}{ +\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 4.1 File System\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165398 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165398 }}{\fldrslt {\lang1024 41}}}}}{\lang1024 +\par }\pard \s100\sb240\widctlpar\tqr\tldot\tx8640 {\lang1024 4.2 Clipboard\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165399 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165399 }}{\fldrslt {\lang1024 41}}}}}{\lang1024 +\par 4.3 Drag/Drop\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165400 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165400 }}{\fldrslt {\lang1024 41}}}}}{\lang1024 +\par }\pard\plain \s99\sb360\widctlpar\tqr\tx8640 \b\f5 {\lang1024 Section 5 : Conformance\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165401 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165401 }}{\fldrslt {\lang1024 43}}}}}{\lang1024 +\par }\pard \s99\sb360\widctlpar\tqr\tx8640 {\lang1024 Section 6 : Extended Recurrence Grammar\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165402 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165402 }}{\fldrslt {\lang1024 44}}}}}{\lang1024 +\par }\pard\plain \s100\sb240\widctlpar\tqr\tldot\tx8640 \f4\fs20 {\lang1024 6.1 Rule Introduction\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165403 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165403 }}{\fldrslt {\lang1024 44}}}}}{\lang1024 + +\par }\pard \s100\sb240\widctlpar\tqr\tldot\tx8640 {\lang1024 6.2 Grammar\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165404 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165404 }}{\fldrslt {\lang1024 45}}}}}{\lang1024 +\par 6.3 Glossary\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165405 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165405 }}{\fldrslt {\lang1024 46}}}}}{\lang1024 +\par 6.4 Policies\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165406 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165406 }}{\fldrslt {\lang1024 47}}}}}{\lang1024 +\par 6.5 Examples\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc367165407 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc367165407 }}{\fldrslt {\lang1024 49}}}}}{\lang1024 +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 }}\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc346992804}\sect \sectd \margtsxn2520\psz1\pgnrestart\linex0\colsx0 {\footerr \pard\plain \s29\widctlpar\brdrt\brdrs\brdrw15\brsp20 +\tqc\tx4320\tqr\tx8640 \f4\fs20 {\field\fldedit{\*\fldinst STYLEREF "chptr_title" \\* MERGEFORMAT }{\fldrslt }}\tab \tab {\field{\*\fldinst PAGE \\* MERGEFORMAT }{\fldrslt {\lang1024 51}}} +\par }\pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc365129064}{\*\bkmkstart _Toc367165325}Section 1 : Introduction{\*\bkmkend _Toc346992804}{\*\bkmkend _Toc365129064} +{\*\bkmkend _Toc367165325} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 1.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\v \tab \tab +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 Personal Data Interchange ({\b PDI} +) occurs every time two or more individuals communicate, in either a business or personal context, face-to-face, or across space and time. Such interchanges frequ +ently include the exchange of informal information, such as business cards, telephone numbers, addresses, dates and times of appointments, etc. Augmenting PDI with electronics and telecommunications can help ensure that information is quickly and reliably + communicated, stored, organized and easily located when needed. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Personal information, by nature, is complex and diverse. Currently, proprietary standards exist to structure some types of PDI information, but no single, open specification comprehensively ad +dresses the needs of collecting and communicating PDI information across many common communication channels such as telephones, voice-mail, e-mail, and face-to-face meetings. {\b\i\f30\fs18 versit } + is developing a comprehensive family of PDI technologies based on open specifications and interoperability agreements to help meet this technology need. +\par {\*\bkmkstart _Toc346992805}{\*\bkmkstart _Toc365129065}{\*\bkmkstart _Toc367165326}{\pntext\pard\plain\b\f9\fs28\cf1 1.1\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Overview{\*\bkmkend _Toc346992805}{\*\bkmkend _Toc365129065}{\*\bkmkend _Toc367165326} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This specification defines a format for an electronic calendaring and scheduling ({\b\i vCalendar}) format. The vCalendar format allows for the capture of information normall +y stored within a calendaring and scheduling application; such as a Personal Information Manager or a Group Scheduling product. +\par The format is suitable as an interchange format between applications or systems. The format is defined independent of the particular method used to transport it. The transport for this exchange might be a file system, point-to-point asynchronous communica +tion, wired-network transport, or some form of unwired transport. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar a vCalendar is a data stream consisting of one or more vCalenda +r objects. The individual vCalendar definitions can be identified and parsed within the data stream. The vCalendar data stream may exist as a persistent form in a file system, document management system, network connection between two network endpoints, o +r in any other digital transport that has an abstraction of a stream of bytes. +\par Conceptually, a {\i vCalendar Writer} creates vCalendar data streams and a {\i vCalendar Reader} interprets vCalendar data streams. The vCalendar Reader and Writer may be implemented as a +single application or as separate applications. It is not the intent of this specification to define the implementation of these processes beyond some fundamental capabilities related to the format of the vCalendar data stream and a common set of conforma +nce requirements. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +This specification provides for a clear-text encoding. The specification also includes a formal grammar for the clear-text encoding to aid in the implementation of parsers and to serve as the definitive reference when ambiguities or questi +ons arise in interpreting the descriptive prose definition of the specification. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +The clear-text encoding of this specification can be used in environments which are constrained to 7-bit transfer encodings, short line lengths, and low bandwidth. In addition, the encoding is simple in order to facilitate the implementation of reader and + writer applications on small platforms, such as Personal Digital Assistants (PDA), cellular telephones, or alphanumeric pagers. +\par {\*\bkmkstart _Toc346992806}{\*\bkmkstart _Toc365129066}{\*\bkmkstart _Toc367165327}{\pntext\pard\plain\b\f9\fs28\cf1 1.2\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Scope{\*\bkmkend _Toc346992806}{\*\bkmkend _Toc365129066}{\*\bkmkend _Toc367165327} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The vCalendar is intended to be used for exchanging information about {\b\i event} and {\b\i todo} + types of calendaring and scheduling entities. An event is a calendaring and scheduling entity that represents a scheduled amount of time on a calendar. For example, it may be an activity; such as a one-hour, department meeting from 8 AM to 9 AM, tomorrow +. a todo is a calendaring and scheduling entity that represents an action-item or assignment. For example, it may be an item of work assigned to an individual; such as \ldblquote turn in travel expense today\rdblquote . +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar In today\rquote s bus +iness environment, this information is typically kept on a paper-based day-planner or calendar. More and more, this type of information is being also managed within electronic Personal Information Manager or Group Scheduling products. It is appropriate, t +hen that this specification define this information in terms of a paradigm based on a calendaring and scheduling event and todo entities. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Prior to the introduction of the vCalendar specification, users of such applications typically had to re-key the origi +nal information, often transcribing it from paper day-planners, scraps of paper or electronic mail messages. With the advent of the vCalendar specification, this information can be exchanged in an automated and consistent fashion. +\par The basis for this specification have their origin in openly defined, industry specifications; such as the X.400 API Association\rquote +s Calendaring and Scheduling API (CSA). In addition, this specification has capabilities that were derived from the experience of multi-vendor demonstrations of this capability. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +The specification of all date and time values are defined in terms of the ISO 8601 standard for representation of dates and times. The ISO 8601 standard supersedes all other international standards defined at the time this specification was drafted. + +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +Personal data applications such as Personal Information Managers (PIM) often provide an import/export capability using Comma Separated Value (CSV) or Tab Delimited Files (TDF) formats. However, these solutions do not preserve the intent + of the originating application. When a CSV and TDF formatis used by a PIM, the meta-data or semantics of the originating object are only apparent to a similar version of the originating application. Exchange of data between such applications is another +important application of an industry-standard specification for an electronic calendaring and scheduling interchange format, such as the vCalendar specification. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar This specification is intended to be used as a format for exchange of calendaring and schedulin +g information from one product to another. This exchange may take place using desktop application interaction techniques; such as a file system FILE-OPEN or FILE-SAVE-AS functions, an operating systems clipboard CUT or COPY or PASTE operations, or a user +interface DRAG and DROP interaction. In addition, this exchange may take place using a wired or wireless network transport; such as LAN or WAN protocols, switched telephone circuits, IrDA-based infra-red \ldblquote beaming\rdblquote + of data, or emerging cellular data services. In any of these example cases, the vCalendar format is intended to be a transport- and platform-independent format for exchanging calendaring and scheduling personal data. +\par {\*\bkmkstart _Toc346992807}{\*\bkmkstart _Toc365129067}{\*\bkmkstart _Toc367165328}{\pntext\pard\plain\b\f9\fs28\cf1 1.3\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Contents{\*\bkmkend _Toc346992807}{\*\bkmkend _Toc365129067}{\*\bkmkend _Toc367165328} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 This specification is separated into eight sections: +\par \pard\plain \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \f8\fs20\cf1 \bullet \tab \ldblquote Section 1 : Introduction\rdblquote + introduces PDI and the vCalendar specification with an overview, scope statement and section on definitions and abbreviations. +\par \bullet \tab \ldblquote Section 2 : vCalendar\rdblquote defines the semantics and syntax for a clear-text encoding of the vCalendar. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \bullet \tab \ldblquote Section 3: Internet Recommendations\rdblquote + specifies a set of guidelines to facilitate the exchange of vCalendar objects over Internet protocols such as HTTP using HTML and SMTP using MIME. +\par \bullet \tab \ldblquote Section 4 : UI Support Recommendations\rdblquote + specifies a set of guidelines to facilitate the exchange of vCalendar objects at the desktop user interface using the file system, clipboard and drag/drop capabilities of the operating system. +\par \pard \s22\fi-289\li1224\sb100\sa100\sl-260\slmult0\nowidctlpar\tx1224\tldot\tx3685 \bullet \tab \ldblquote Section 5 : Conformance\rdblquote defines minimum conformance requirements to consider while developing support for this vCalendar specification. + +\par \bullet \tab \ldblquote Section 6 : Extended Recurrence Rule Grammar\rdblquote defines reference information on an extended recurrence rule grammar, copied from the XAPIA CSA Specification. +\par {\*\bkmkstart _Toc346992808}{\*\bkmkstart _Toc365129068}{\*\bkmkstart _Toc367165329}{\pntext\pard\plain\b\f9\fs28\cf1 1.4\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Definitions and Abbreviations{\*\bkmkend _Toc346992808}{\*\bkmkend _Toc365129068}{\*\bkmkend _Toc367165329} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\widctlpar \f8\fs20\cf1 Definitions and abbreviations used within this specification follow. +\par \pard\plain \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar \f8\fs20\cf1 {\b\i API}: Application Programming Interface +\par {\b\i Electronic Calendar}: Also know as vCalendar. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i FPI}: Formal Public Identifier. a string expression that represents a public identifier for an object. FPI syntax is defined by ISO 9070. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i GUID}: Globally Unique IDentifier +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i Internet}: a WAN connecting thousands of disparate networks in industry, education, government, and research. The Internet uses TCP/IP as the standard for transmitting information. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i ISO}: Organization for International Standardization; a worldwide federation of national standards bodies (ISO Member bodies). +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i MIME}: Multipurpose Internet Mail Extensions, as defined in RFC1521. +\par {\b\i PDA}: Personal Digital Assistant computing device +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i PDI}: Personal Data Interchange, a collaborative applic +ation area which involves the communication of data between people who have a business or personal relationship, but do not necessarily share a common computing infrastructure. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i PIM}: Personal Information Manager +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i RFC### documents}: Internet \ldblquote Request For Comment\rdblquote documents (i.e., RFC822, RFC1521, etc.). +\par {\b\i URL}: Uniform Resource Locator; a string expression that can represent any resource on the Internet or local system. RFC 1738 defines the syntax for an URL. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i UTC}: Universal Time Coordinated; also known as UCT, for Universal Coordinated Time. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i vCalendar} +: The generic term for an electronic, virtual collection of calendaring and scheduling information that can be transferred between computers, PDAs, or other electronic devices through telephone lines, or e-mail networks, or infrared links. How, when, why, + and where vCalendar are used depends on the applications developed utilizing a vCalendar. +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar {\b\i WAN}: Wide-Area Network +\par \pard \s32\fi-432\li1295\sb100\sa100\sl-260\slmult0\widctlpar +\par \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\nowidctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc340018649}{\*\bkmkstart _Toc345308899}{\*\bkmkstart _Toc346992813}\sect \sectd \margtsxn2520\psz1\linex0\colsx0 \pard\plain +\s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc346992854}{\*\bkmkstart _Toc365129069}{\*\bkmkstart _Toc367165330}{\*\bkmkend _Toc340018649}{\*\bkmkend _Toc345308899}{\*\bkmkend _Toc346992813} +Section 2 : {\*\bkmkend _Toc346992854}vCalendar{\*\bkmkend _Toc365129069}{\*\bkmkend _Toc367165330} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 2.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\v \tab \tab +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This section defines the semantics and syntax for encoding the vCalendar in a simple, clear-text encoding. +\par {\*\bkmkstart _Toc340018694}{\*\bkmkstart _Toc345308941}{\*\bkmkstart _Toc346992855}{\*\bkmkstart _Toc365129070}{\*\bkmkstart _Toc367165331}{\pntext\pard\plain\b\f9\fs28\cf1 2.1\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 Encoding Characteristics{\*\bkmkend _Toc340018694}{\*\bkmkend _Toc345308941}{\*\bkmkend _Toc346992855}{\*\bkmkend _Toc365129070}{\*\bkmkend _Toc367165331} + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following characteristics are specific to this encoding. +\par {\*\bkmkstart _Toc340018697}{\*\bkmkstart _Toc345308943}{\*\bkmkstart _Toc346992857}{\*\bkmkstart _Toc365129071}{\*\bkmkstart _Toc367165332}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.1\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 vCalendar Object{\*\bkmkend _Toc340018697}{\*\bkmkend _Toc345308943}{\*\bkmkend _Toc346992857}{\*\bkmkend _Toc365129071} +{\*\bkmkend _Toc367165332} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a vCalendar data stream may include one or more vCalendar objects. An individual vCalendar object is identified within a data stream by the appearance of the Begin vCalendar Delimiter: + +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 BEGIN:VCALENDAR +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The sentinel string must appear as the first characters in the data stream or the first characters on a line. +\par The vCalendar object is terminated by the appearance of the End vCalendar Delimiter as the first characters on a line: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 END:VCALENDAR +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\*\bkmkstart _Toc340018698}{\*\bkmkstart _Toc345308944}{\*\bkmkstart _Toc346992858} +The vCalendar object is a container for calendaring and scheduling entities. These can include either event or todo entities. +\par {\*\bkmkstart _Toc365129072}{\*\bkmkstart _Toc367165333}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.1.1\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 vEvent Object +{\*\bkmkend _Toc365129072}{\*\bkmkend _Toc367165333} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +a vEvent is a grouping of calendaring and scheduling properties that define an entity that represents a scheduled amount of time on a calendar. For example, it may be an activity; such as a one-hour, department meeting from 8 AM to 9 AM, tomorrow. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar An individual vEvent entity is identified within a vCalendar object by the appearance of the delimiter: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 BEGIN:VEVENT +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The sentinel string must appear as the first characters on a line. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The vEvent entity is terminated with the appearance of the following delimiter string as the first characters on a line +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 END:VEVENT +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The vEvent entity can not be nested within another vEvent or vTodo entity. If vEvent entities need to be related to each other or to a vTodo entity, they can specify relationship with the RELATED-TO property. +\par {\*\bkmkstart _Toc365129073}{\*\bkmkstart _Toc367165334}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.1.2\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 vTodo Object +{\*\bkmkend _Toc365129073}{\*\bkmkend _Toc367165334} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a vTodo is a grouping of calendari +ng and scheduling properties that define an entity that represents an action-item or assignment. For example, it may be an item of work assigned to an individual; such as \ldblquote turn in travel expense today\rdblquote . +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar An individual vTodo entity is identified within a vCalendar object by the appearance of the delimiter: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 BEGIN:VTODO +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The sentinel string must appear as the first characters on a line. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The vTodo entity is terminated with the appearance of the following delimiter string as the first characters on a line +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 END:VTODO +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The vTodo entity can not be nested within another vTodo or vEvent entity. If vTodo entities need to be related to each other or to a vEvent entity, they can specify a relationship with the RELATED-TO property. +\par {\*\bkmkstart _Toc365129074}{\*\bkmkstart _Toc367165335}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.2\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Property{\*\bkmkend _Toc340018698}{\*\bkmkend _Toc345308944}{\*\bkmkend _Toc346992858}{\*\bkmkend _Toc365129074}{\*\bkmkend _Toc367165335} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a {\i property }is the definition of an individual attribute describing the event or todo associated with the vCalendar. a property takes the following form: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 {\f5 PropertyName [\lquote ;\lquote + PropertyParameters] \rquote :\lquote PropertyValue} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 as shown in the following example: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DTSTART:19960415T083000 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\*\bkmkstart _Toc340018699}A property takes the fo +rm of one or more lines of text. The specification of property names and property parameters is case insensitive. The property name can be one of a set of pre-defined strings. The property name must appear as the first characters on a line. In the previou +s example, \ldblquote DTSTART\rdblquote is the name of the Start Date/Time property. Property values are specified as strings. In the previous example, \ldblquote 19960415T083000\rdblquote + is the ISO 8601 formatted value for the Start Date/Time property. +\par a property value can be further qualifie +d with a property parameter expression. Property parameter expressions are delimited from the property name with a Semi-colon character (ASCII 59). a Semi-colon in a property parameter value must be escaped with a Backslash character (ASCII 92). The prope +rty parameter expressions are specified as either a name=value or a value string. The value string can be specified alone in those cases where the value is unambiguous. For example a complete property parameter specification might be: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DESCRIPTION;ENCODING=Q +UOTED-PRINTABLE:Don\rquote t forget to order Girl=\line Scout cookies from Stacey today!\tab //Full property parameter expression +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a valid short version of the same property parameter specification might be: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DESCRIPTION;QUOTED-PRINTABLE:Don +\rquote t forget to order Girl=\line Scout cookies from Stacey today!\tab //Full property parameter expression +\par {\*\bkmkstart _Toc345308945}{\*\bkmkstart _Toc346992859}{\*\bkmkstart _Toc365129075}{\*\bkmkstart _Toc367165336}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.3\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3 +\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Delimiters{\*\bkmkend _Toc345308945}{\*\bkmkend _Toc346992859}{\*\bkmkend _Toc365129075}{\*\bkmkend _Toc367165336} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Individual lines within the vCalendar data stream are delimited by the (RFC 822) line break, which is a CRLF sequence (ASCII decimal 13, followed by ASCII decimal 10). Long lines +of text can be split into a multiple-line representation using the RFC 822 \ldblquote folding\rdblquote + technique. That is, wherever there may be linear white space (NOT simply LWSP-chars), a CRLF immediately followed by at least one LWSP-char may instead be inserted. For example the line: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DESCRIPTION:This is a very long description that exists on a long line. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Can be represented as: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DESCRIPTION:This is a very long description \line that exists on a long line. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The process of moving from this folded multiple-line representation of a property definition to its single line representation is called \ldblquote unfolding\rdblquote +. Unfolding is accomplished by regarding CRLF immediately followed by a LWSP-char as equivalent to the LWSP-char. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar It is recommended that folding be limited to higher-level syntactic breaks in structured components of the property definition. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar a formatted text line break in a property value, must also be specified by a (RFC 822) line break, which is a CRLF sequence. However, since the CRLF sequence is used to delimit a line, proper +ty values with formatted line breaks (i.e., multiple lines) must be encoded using an alternate encoding of either Quoted-Printable or Base64, as defined in RFC 1521. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar For example, in the Quoted-Printable encoding the multiple lines of formatted text are separated with a Quoted-Printable CRLF sequence of \ldblquote =0D\rdblquote followed by \ldblquote =0A\rdblquote + followed by a Quoted-Printable softline break sequence of \ldblquote =\rdblquote . Quoted-Printable lines of text must also be limited to less than 76 characters. The 76 characters does not include the CR +LF (RFC 822) line break sequence. For example a multiple line DESCRIPTION value of: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Project XYZ Final Review\line +Conference Room - 3b\line Come Prepared. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Would be represented in a Quoted-Printable encoding as: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Project XYZ Final Review=d=a=\line Conference Room - 3b=d=a=\line Come Prepared. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +Property parameter substrings are delimited by a field delimiter, specified by the Semi-colon character (ASCII decimal 59). a Semi-colon in a property parameter value must be escaped with a Backslash character (ASCII 92). +\par Compound property values are delimited by a field delimiter, specified by the Semi-colon character (ASCII decimal 59). a Semi-colon in a component of a compound property value must be escaped with a Backslash character (ASCII 92). +\par {\*\bkmkstart _Toc365129076}{\*\bkmkstart _Toc367165337}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.4\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Encodings{\*\bkmkend _Toc365129076}{\*\bkmkend _Toc367165337} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The default encoding for the vCalendar object is 7-Bit. The default encoding can be overridden for an individual property value by using the \ldblquote ENCODING\rdblquote + property parameter. This parameter value can be either \ldblquote BASE64\rdblquote , \ldblquote QUOTED-PRINTABLE\rdblquote , or \ldblquote 8-bit\rdblquote . This parameter may be used on any property. +\par Some transports (e.g., MIME based electronic mail) may also provide an encoding property at the transport wrapper level. This property can be used in these cases for transporting a vCalendar data stream that has been defined using a default encoding other + than 7-bit (e.g., 8-bit). +\par {\*\bkmkstart _Toc365129077}{\*\bkmkstart _Toc367165338}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.5\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Character Set{\*\bkmkend _Toc365129077}{\*\bkmkend _Toc367165338} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The default character set is ASCII. The default character set can be overridden for an individual property value by using the \ldblquote CHARSET\rdblquote property parameter. This pro +perty parameter may be used on any property. However, the use of this parameter on some properties may not make sense. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Any character set registered with the Internet Assigned Numbers Authority (IANA) can be specified by this property parameter. For example, ISO 8859-8 or the Latin/Hebrew character set is specified by: + +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DESCRIPTION;CHARSET=ISO-8859-8:... + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Some transports (e.g., MIME based electronic mail) may also provide a character set property at the transport wrapper level. This property can be used in the +se cases for transporting a vCalendar data stream that has been defined using a default character set other than ASCII (e.g., UTF-8). +\par {\*\bkmkstart _Toc365129078}{\*\bkmkstart _Toc365129080}{\*\bkmkstart _Toc367165339}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.6\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 +{\pntxtb .}}\b\f9\cf1\kerning28 Language{\*\bkmkend _Toc365129080}{\*\bkmkend _Toc367165339} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The default language is \ldblquote en-US\rdblquote (US English). The default language can be overridden for an individual property value by using the \ldblquote LANGUAGE\rdblquote + property parameter. The values for this property are a string consistent with RFC 1766, Tags for the Identification of Languages. This property parameter may be used on any property. However, the use of this parameter on some p +roperties, such as PHOTO, LOGO, SOUND, TEL, may not make sense. Canadian French would be specified by this parameter by the following: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 SUMMARY;LANGUAGE=fr-CA:... +\par {\*\bkmkstart _Toc367165340}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.7\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Date and Time +{\*\bkmkend _Toc365129078}{\*\bkmkend _Toc367165340} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The date and time values for all vCalendar properties are formatted as a string consistent with the ISO 8601 representation for combinations of dates and times. Either the basic or extended format is allowed. The use of UTC, rather than local time, should + be used when ever possible in order to avoid time zone ambiguities. The format for the complete, basic representation of a date and time value is written in the following sequence of characters: +\par \pard\plain \s25\fi-216\li1440\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +<year><month><day>T<hour><minute<second><type designator> +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 For example, 8:30 AM on April 15, 1996 local time would be written as: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 19960415T083000 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 And the same time in UTC based time would be written as: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 19960415T083000Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Where a value needs to specify a sequence of date and time values, then the property value is a string made up of a list of date and time values, separated by the field separator +. For example: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +19960101T090000Z; 19960201T090000Z; 19960301T090000Z; 19960401T090000Z; ... +\par {\*\bkmkstart _Toc365129079}{\*\bkmkstart _Toc367165341}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.8\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Time Duration{\*\bkmkend _Toc365129079}{\*\bkmkend _Toc367165341} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The values for time duration or periods of time for all vCalendar properties are formatted as a string conformant with the ISO 8601 basic representation for duration of time. a given duration of a period of time is represented by a character string consis +ting of the designator \ldblquote {\b P}\rdblquote , optionally including the number of years followed by the designator \ldblquote {\b Y}\rdblquote , optionally including the number of months followed by the designator \ldblquote {\b M}\rdblquote +, optionally including the number of weeks followed by the designator \ldblquote {\b W}\rdblquote , optionally including the number of days followed by the designator \ldblquote {\b D}\rdblquote +. The sequence can also contain a time component preceded by the designator \ldblquote {\b T}\rdblquote , optionally including the number of hours followed by the designator \ldblquote {\b H}\rdblquote +, optionally including the number of minutes followed by the designator \ldblquote {\b M}\rdblquote , optionally including the number of seconds followed by the designator \ldblquote {\b S}\rdblquote . For example: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 P6W +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a period of six weeks; +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 PT15M +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a period of 15 minutes; +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 PT1H30M +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a period of 1 hour and thirty minutes; or +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 P2Y10M15dT10H30M20S +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a period of 2 years, 10 months, 15 days, 10 hours, 30 minutes, and 20 seconds. +\par {\*\bkmkstart _Toc365129081}{\*\bkmkstart _Toc367165342}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.9\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Value Location{\*\bkmkend _Toc365129081}{\*\bkmkend _Toc367165342} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The default location of the property values is inline with the property. However, for some properties, such as those that specify multimedia values, it is efficient to organize the property value as a separate entity (e.g., a file out on the network). The + property parameter \ldblquote {\b VALUE}\rdblquote can be specified to override the \ldblquote {\b INLINE}\rdblquote + location of the property value. In the case of the vCalendar being transported within a MIME email message, the property value can be specified as being located in a separate MIME entity with the \ldblquote {\b CONTENT-ID}\rdblquote value; or +\ldblquote {\b CID}\rdblquote for shorthand. In this case, the property value is the Content-ID for the MIME entity containing the property value. In addition, the property value can be specified as being located out on the network using the \ldblquote { +\b URL}\rdblquote value. In this case, the property value is the Uniform Resource +Locator for the Internet resource containing the property value. This property parameter may be used on any property. However, the use of this parameter on some properties may not make sense; for example the Version, Time Zone, Status, Priority, Mail Remi +nder, etc. properties. The following specifies a value not located inline with the vCalendar but out in the Internet: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +ATTACH;VALUE=URL:http://www.abc.com/dir_photos/my_photo.gif +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par {\*\bkmkstart _Toc365129082}{\*\bkmkstart _Toc345308949}{\*\bkmkstart _Toc346992863}{\*\bkmkstart _Toc365129090}{\*\bkmkstart _Toc367165343}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.10\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Binary Values{\*\bkmkend _Toc345308949}{\*\bkmkend _Toc346992863}{\*\bkmkend _Toc365129090}{\*\bkmkend _Toc367165343} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The vCalendar specification supports inclusion of binary informa +tion, such as computer graphic images (e.g., JPEG), digital audio (e.g., WAVE), or video graphic images (e.g., MPEG). The binary information can either be referenced with a Uniform Reference Locator (URL), referenced with a message using a MIME Content-ID + of the MIME part that contains the content, or placed inline in the vCalendar as the value of a property. Inline binary information is included as a property value after being character encoded using Base 64 (default) or Quoted-Printable encoding. + +\par {\*\bkmkstart _Toc367165344}{\pntext\pard\plain\b\f9\cf1\kerning28 2.1.11\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Basic R +ecurrence Rule Grammar{\*\bkmkend _Toc365129082}{\*\bkmkend _Toc367165344} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The specification of recurring events can be simplified by the use of a grammar or rule notation. This specification makes use of the Base Recurrence Rule Grammar from the XAPIA\rquote +s CSA Specification. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar a recurrence rule is a string or clear-text encoding of a recurrence specification. a recurrence rule is composed of several components. a rule begins with a {\b frequency} + which describes the type of repeating event (e.g., daily, weekly, etc.). This is followed by an {\b interval} which indicates how often the frequency repeats (i.e., daily, every third day, etc.). This can be followed by optional {\b frequency modifier} + information and either an {\b end date} or a {\b duration}. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Below is the form of a typical rule. This example causes events to be generated every other week on Tuesday and Thursday, for 8 occurrences: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W2 TU TH #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Where, {\b\f3 W} is the {\b Frequency}, {\b\f3 2} is the {\b Interval}, {\b\f3 TU} and {\b\f3 TH} are the optional {\b Frequency Modifiers}, and {\b\f3 #4} is the {\b\f3 Duration}. + +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The basic recurrence rule grammar supports six types of repetition. +The six types follow the same form with only the frequency name and optional modifier information changing from one type of frequency to the next. +\par {\*\bkmkstart _Toc365129083}{\*\bkmkstart _Toc367165345}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.1\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Daily Rule +{\*\bkmkend _Toc365129083}{\*\bkmkend _Toc367165345} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The daily rule is used for specifying repeating events based on an interval of a day or more. These can range from every day to every 200th day and beyond. The daily rule begins with the letter {\b\f3 D} + followed by an interval (representing days) and an optional duration or end date. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Some examples follow: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Daily for 10 occurrences:\line \tab { +\b d1 #10} +\par Daily until 12/24/94:\line \tab {\b d1 19941224T000000Z} +\par Every other day - forever:\line \tab {\b d2 #0} +\par Every 10 days, 5 occurrences:\line \tab {\b d10 #5} +\par {\*\bkmkstart _Toc365129084}{\*\bkmkstart _Toc367165346}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.2\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Weekly Rule +{\*\bkmkend _Toc365129084}{\*\bkmkend _Toc367165346} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The weekly rule is used for specifying repeating events based on an interval of a week or more. The basic weekly rule has the same form as the daily rule except that the rule begins with a {\b\f3 W} + and can contain an optional list of weekdays the events are generated on. For weekly rules, the interval represents weeks. Some examples follow: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Weekly for 10 occurrences:\line \tab { +\b W1 #10} +\par Weekly until 12/24/94:\line \tab {\b W1 19941224T000000Z} +\par Every other week - forever:\line \tab {\b W2 #0} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 Weekly on Tuesday and \line Thursday for 5 weeks:\line +\tab {\b W1 TU TH #5} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +Every other week on Monday Wednesday and Friday until 12/24/94:\line \tab {\b W2 MO WE FR 19941224T000000Z} +\par {\*\bkmkstart _Toc365129085}{\*\bkmkstart _Toc367165347}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.3\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Monthly Rule +{\*\bkmkend _Toc365129085}{\*\bkmkend _Toc367165347} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The monthly rule is used for specifying repeating events base on an interval of a month or more. There are two types of monthly recurrence rules. One for {\b by-position} and one for { +\b by-day}. The by-position rule allows weekdays in the month to be specified in relation to their occurrence in the + month. An example would be to specify the third Sunday of the month or the last Friday of the month. An occurrence specifier may be used in monthly by-position rules. The occurrence specifiers control which occurrence of a weekday in a month an event occ +urs on: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +1+, 2+, ... 5+ for the first occurrence, second, ...fifth occurrence of the month. +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +1-, 2-, ... 5- for the last occurrence, second to last occurrence, etc. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a {\b\f3 2+ FR SA} would indicate the second occurrence of Friday and Saturday in the month. a {\b\f3 1- MO} + would indicate the first occurrence of Monday working from the end of the month backwards (i.e., the last occurrence). a {\b\f3 2- MO} would be the second to the last Monday of the month. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar a by-day rule allows actual day numbers to be specified such as the 12th day or 29th day. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The by-position rule begins with a {\b\f3 MP} and the by-day rule begins with a {\b\f3 MD}. The interval in monthly rules represents months. Some examples follow: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +Monthly on the 1st Friday for ten occurrences:\line \tab {\b MP1 1+ FR #10} +\par Monthly on the 1st Friday until 12/24/94:\line \tab {\b MP1 1+ FR 19941224T000000Z} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 Every other month on the 1st and last \line +Sunday of the month for 10 occurrences:\line \tab {\b MP2 1+ SU 1- SU #10} +\par Every six months on the 2nd Monday \line thru Friday for 10 occurrences:\line \tab {\b MP6 2+ MO TU WE TH FR #10} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +Monthly on the second last Monday of the month for 6 months: +\par \tab {\b MP1 2- MO #6} +\par Monthly on the third to the last day of the month, forever: +\par \tab {\b MD1 3- #0} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +Monthly on the 2nd and 15th of the month for 10 occurrences:\line \tab {\b MD1 2 15 #10} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 In the next example LD refers to \ldblquote LastDay +\rdblquote in a monthly recurrence rule. Monthly on the 1st and last day of the month for 10 occurrences:\line \tab {\b MD1 1 LD #10} or {\b MD1 1 1- #10} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 Every 18 months on the 10th thru 15{\super th} + of the month for 10 occurrences:\line \tab {\b MD18 10 11 12 13 14 15 #10} +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +Monthly on the second to the last day for 5 months. So, if the start date is August 1996, the event would repeat on 8/30/96, 9/29/96, 10/30/96, 11/29/96, and 12/30/96:\line \tab {\b MD1 2- #5 +\par {\*\bkmkstart _Toc365129086}{\*\bkmkstart _Toc367165348}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.4\tab}}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Yearly Rule +{\*\bkmkend _Toc365129086}{\*\bkmkend _Toc367165348} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The yearly rule is used for specifying repeating events based on an interval of a year or more. There are two types of yearly recurrence rules. One for {\b by-month} and one for {\b +by-day}. The by-month rule allows specific months out of the year to be specified. The by-day allows specific days to be specified. In the by-month rule, the day in the month the rule is to occur on is determined from the initial appointment. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The by-month rule begins with a {\b\f3 YM} and the by-day rule begins with a {\b\f3 YD}. The interval in yearly rules represents years. Some examples follow: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +Yearly in June and July for 10 occurrences:\line \tab {\b YM1 6 7 #10} +\par Every other year on January, Feb, and March for 10 occurrences:\line \tab {\b YM2 1 2 3 #10} +\par Every 3rd year on the 1st, 100th and 200th day for 10 occurrences:\line \tab {\b YD3 1 100 200 #10} +\par {\*\bkmkstart _Toc365129087}{\*\bkmkstart _Toc367165349}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.5\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Grammar +{\*\bkmkend _Toc365129087}{\*\bkmkend _Toc367165349} +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 \{\}\tab \tab 0 or more +\par []\tab \tab 0 or 1 +\par start\tab ::= <daily> [<enddate>] | +\par \tab \tab <weekly> [<enddate>] | +\par \tab \tab <monthlybypos> [<enddate>] | +\par \tab \tab <monthlybyday> [<enddate>] | +\par \tab \tab <yearlybymonth> [<enddate>] | +\par \tab \tab <yearlybyday> [<enddate>] +\par digit ::= <0|1|2|3|4|5|6|7|8|9> +\par digits ::= <digit> \{<digits>\} +\par enddate\tab ::= ISO 8601_date_time value(e.g., 19940712T101530Z) +\par interval\tab ::= <digits> +\par duration\tab ::= #<digits> +\par lastday\tab ::= LD +\par plus\tab \tab ::= + +\par minus\tab \tab ::= - +\par daynumber\tab \tab ::= <1-31> [<plus>|<minus>]| <lastday> +\par daynumberlist\tab ::= daynumber \{<daynumberlist>\} +\par month\tab \tab ::= <1-12> +\par monthlist\tab ::= <month> \{<monthlist>\} +\par day\tab \tab ::= <1-366> +\par daylist\tab \tab ::= <day> \{<daylist>\} +\par occurrence\tab ::= <1-5><plus> | <1-5><minus> +\par occurrencelist \tab ::= <occurrence> \{<occurrencelist>\} +\par weekday \tab ::= <SU|MO|TU|WE|TH|FR|SA> +\par weekdaylist \tab ::= <weekday> \{<weekdaylist>\} +\par daily\tab \tab ::= D<interval> [<duration>] +\par weekly\tab \tab ::= W<interval> [<weekdaylist>] [<duration>] +\par monthlybypos \tab ::= MP<interval> [<occurrencelist> <weekdaylist>] [<duration>] +\par monthlybyday\tab ::= MD<interval> [<daynumberlist>] [<duration>] +\par yearlybymonth\tab ::= YM<interval> [<monthlist>] [<duration>] +\par yearlybyday\tab ::= YD<interval> [<daylist>] [<duration>] +\par {\*\bkmkstart _Toc365129088}{\*\bkmkstart _Toc367165350}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.6\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Glossary +{\*\bkmkend _Toc365129088}{\*\bkmkend _Toc367165350} +\par \pard\plain \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 enddate\tab Controls when a repeating event terminates. The enddate is the last time an event can occur. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar interval\tab Defines the frequency in which a rule repeats. +\par duration\tab Controls the number of events a rule generates. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar lastday\tab Can be used as a replacement to daynumber to indicate the last day of the month. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar daynumber\tab a number representing a day of the month. +\par month\tab a number representing a month of the year. +\par day\tab a number representing a day of the year. +\par occurrence\tab Controls which week of the month a particular weekday event occurs. +\par weekday\tab a symbol representing a day of the week. +\par daily\tab Defines a rule that repeats on a daily basis. +\par weekly\tab Defines a rule that repeats on a weekly basis. +\par monthlybypos\tab Defines a rule that rege%ns on a monthly basis on a relative day and week. +\par monthlybyday\tab Defines a rule that repeats on a monthly basis on an absolute day. +\par yearlybymonth\tab Defines a rule that repeats on specific months of the year. +\par yearlybyday\tab Defines a rule that repeats on specific days of the year. +\par {\*\bkmkstart _Toc365129089}{\*\bkmkstart _Toc367165351}{\pntext\pard\plain\b\i\f9\fs20\kerning28 2.1.11.7\tab}\pard\plain \s4\sb120\sa80\keep\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\i\f9\fs20\kerning28 Policies +{\*\bkmkend _Toc365129089}{\*\bkmkend _Toc367165351} +\par {\pntext\pard\plain\f8\fs20\cf1 1.\tab}\pard\plain \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\f8\fs20\cf1 +The duration portion of a rule defines the total number of events the rule generates, including the first event. +\par {\pntext\pard\plain\f8\fs20\cf1 2.\tab}Information, not contained in the rule, necessary to determine the next event time and date is derived from the Start Time entry attribute. +\par {\pntext\pard\plain\f8\fs20\cf1 3.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +If an end date and a duration is specified in the rule, the recurring event ceases when the end date is reached or the number of events indicated in the duration occur; whichever comes first. +\par {\pntext\pard\plain\f8\fs20\cf1 4.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If the duration or an end date is not established in the rule (e.g., {\b\f3 d4} +) the event occurs twice. That is {\b\f3 d4} is equivalent to {\b\f3 d4 #2}. +\par {\pntext\pard\plain\f8\fs20\cf1 5.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}A duration of {\b\f3 #0} means repeat this event forever. +\par {\pntext\pard\plain\f8\fs20\cf1 6.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}Using the occurrence specifier {\b\f3 5+} (e.g. 5th Friday) or {\b\f3 5-} + (e.g. 5th from last Friday) in a month that does not contain 5 weeks does not generate an event and thus does not count against the duration. The same applies to providing a day of the month that does not occur in the month. For example the 30{\super th} + or 31{\super st} . +\par {\pntext\pard\plain\f8\fs20\cf1 7.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +The start time and date of an entry must be synchronized with one of the repeating events defined by its recurrence rule. The following is not allowed:\line \line \tab Initial Appt Date:\tab 7/1/94 (Friday) \line \tab Recurrence Rule:\tab \tab {\b\f3 +W1 MO TH #5} \line \line The following is acceptable:\line \line \tab Initial Appt Date:\tab 7/1/94 (Friday) \line \tab Recurrence Rule:\tab \tab {\b\f3 W1 MO FR #5} or {\b\f3 W1 #5} +\par {\pntext\pard\plain\f8\fs20\cf1 8.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If the optional {\b\f3 <occurrencelist>} and {\b\f3 <Ökeeeeeldwe¢íyHus>>>u + information is missing from a {\b\f3 <monthlybypos>} occurrence the information is derived from the entry attributes. The {\b\f3 <occurrence>} used in the recurring event is a count from the beginning of the month to the entry date and the {\b\f3 +<weekday>} used is the day of the week the entry is scheduled to occur on. \line \line If the {\b\f3 <monthlybypos>} occurrence or {\b <monthlybyday>} occurrence does not list a week day (e.g., {\b\f3 SU }{\f3 or day}{\b\f3 10}) +in the rule, the week day is established from the entry attribute information. As an example the rule {\b\f3 MP1 #3} + used in an entry with a start date of 7/20/94 (which is the third Wednesday of the month) repeats on 8/17/94 which is the third Wednesday of the month. +\par {\*\bkmkstart _Toc340018702}{\*\bkmkstart _Toc345308950}{\*\bkmkstart _Toc346992864}{\*\bkmkstart _Toc365129091}{\*\bkmkstart _Toc367165352}{\*\bkmkend _Toc340018699}{\pntext\pard\plain\b\f9\fs28\cf1 2.2\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 vCalendar Properties{\*\bkmkend _Toc365129091}{\*\bkmkend _Toc367165352} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following properties must appear after the {\b BEGIN:VCALENDAR} delimiter but before the occurrence of the {\b BEGIN:VEVENT} or{\f3\fs16 }{\b BEGIN:VTODO}{\f3\fs16 } +delimiters. These properties apply to the vCalendar object as a whole; unless overridden by a property within the scope of an event or todo entity. +\par {\*\bkmkstart _Toc340018729}{\*\bkmkstart _Toc345308968}{\*\bkmkstart _Toc346992882}{\*\bkmkstart _Toc365129092}{\*\bkmkstart _Toc367165353}{\pntext\pard\plain\b\f9\cf1\kerning28 2.2.1\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Daylight Savings Rule{\*\bkmkend _Toc365129092}{\*\bkmkend _Toc367165353} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DAYLIGHT}. This property defines the daylight savings time rule observed by the \ldblquote home\rdblquote + calendar system that created the vCalendar entity. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +Many locations adjust their standard time forward or backward by one hour, in order to accommodate seasonal changes in number of daylight hours. Standard time is also known as Winter Time. Daylight savings time is also known as Advanced Time, Summer Ti +me, or Legal Time in certain countries. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +The property value consists of a sequence of components that define the daylight savings time rule. The value consists of the daylight savings time flag, followed by the daylight savings time offset, followed by the date and time that the daylight savings + time begins, followed by the date and time that the daylight savings time ends, followed by the standard time designation, followed by the daylight savings time designation. The daylight savings time flag is TRUE if +daylight savings time is observed, otherwise it is FALSE and no other components are specified. The daylight savings time offset value is specified in a manner consistent with ISO 8601. The property value is a signed numeric indicating the number of hours + and possibly minutes from UTC. The date and time that the daylight savings time begins and ends is specified in a manner consistent with ISO 8601 date and time format. The standard time and daylight savings time designations correspond to the customary c +haracter designations. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following are examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DAYLIGHT:TRUE;0-6;19960407T025959;19961027T010000;EST;EDT +\par DAYLIGHT:FALSE +\par DAYLIGHT:TRUE;0-9;19960407T115959;19961027T100000;PST;PDT +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129093}{\*\bkmkstart _Toc367165354}{\pntext\pard\plain\b\f9\cf1\kerning28 2.2.2\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Geographic Position{\*\bkmkend _Toc365129093}{\*\bkmkend _Toc367165354} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b GEO}. This property specifies information related to the global position of the \ldblquote home\rdblquote +system that created the vCalendar object. The property value specifie +s longitude and latitude. The longitude represents the location east and west of the prime meridian as a positive or negative real number, respectively. The latitude represents the location north and south of the equator as a positive or negative real num +ber, respectively. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 GEO:37.24,-17.87 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129094}{\*\bkmkstart _Toc367165355}{\*\bkmkend _Toc340018729}{\*\bkmkend _Toc345308968}{\*\bkmkend _Toc346992882}{\pntext\pard\plain\b\f9\cf1\kerning28 2.2.3\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Product Identifier{\*\bkmkend _Toc365129094}{\*\bkmkend _Toc367165355} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b PRODID}. This pr +operty specifies the identifier for the product that created the vCalendar object. The vendor of the implementation should assure that this is a globally unique identifier; using some technique such as an ISO 9070 FPI value. The following is an example of + this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +PRODID:-//ABC Corporation//NONSGML My Product//EN +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129095}{\*\bkmkstart _Toc367165356}{\pntext\pard\plain\b\f9\cf1\kerning28 2.2.4\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Time Zone{\*\bkmkend _Toc365129095}{\*\bkmkend _Toc367165356} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b TZ}. This property specifies the standard time zone of the \ldblquote home\rdblquote + system that created the vCalendar object. The property value is specified in a manner consistent with ISO 8601. The property value is a signed numeric indicating the number of hours and possibly minutes from UTC. Time zones east o +f UTC are positive numbers. Time zones west of UTC are negative numbers. The following are examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 TZ:0-5 +\par TZ:+05:30 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129096}{\*\bkmkstart _Toc367165357}{\pntext\pard\plain\b\f9\cf1\kerning28 2.2.5\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Version{\*\bkmkend _Toc365129096}{\*\bkmkend _Toc367165357} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property specifie +s the identifier corresponding to the highest version number of the vCalendar Specification supported by the implementation that created the vCalendar object. The value of this property must be 1.0 to correspond to this specification.. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar This property is identified by the property name {\b VERSION}. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 VERSION:1.0 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. This property must appear within the vCalendar data stream. +\par {\*\bkmkstart _Toc365129097}{\*\bkmkstart _Toc367165358}{\pntext\pard\plain\b\f9\fs28\cf1 2.3\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 vEvent + and vTodo Properties{\*\bkmkend _Toc340018702}{\*\bkmkend _Toc345308950}{\*\bkmkend _Toc346992864}{\*\bkmkend _Toc365129097}{\*\bkmkend _Toc367165358} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following properties may appear within an event or todo calendaring and scheduling entity. +\par {\*\bkmkstart _Toc365129098}{\*\bkmkstart _Toc367165359}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.1\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Attachment{\*\bkmkend _Toc365129098}{\*\bkmkend _Toc367165359} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b ATTACH} +. The property defines an attached object to the vCalendar entity. For example, a document to be reviewed at a scheduled event or the process steps for a todo. The property value can be a text string, a reference to another message body part or a referenc +e to a URL based document. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Multiple attachments may be specified by including multiple ATTACH properties within the vCalendar entity. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following are examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +ATTACH;VALUE=CONTENT-ID:<jsmith.part3.96082T083000.xyzMail@host1.com> +\par ATTACH;VALUE=URL:file://xyzCorp.com/pub/reports/r-960812.ps +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129099}{\*\bkmkstart _Toc367165360}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.2\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Attendee{\*\bkmkend _Toc365129099}{\*\bkmkend _Toc367165360} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b ATTENDEE}. The property defines an attendee to a group event or todo. The default property value is an (RFC 822) address. The +property may include property parameters {\b ROLE,} for the role of the attendee in the event or todo; {\b STATUS}, for the status of the attendee\rquote s participation in the event or todo, {\b RSVP} +, for indicating whether the favor of a reply is requested, and {\b EXPECT}, to indicate the expectation of the attendee\rquote s participation by the originator. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Multiple attendees may be specified by including multiple ATTENDEE properties within the vCalendar entity. +\par The property value may reference a vCard object. This provides a useful mechanism to allow more than just the address of the attendee to be referenced. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The ROLE property parameter for each attendee can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates an attendee at the event or todo\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 ATTENDEE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates organizer of the event, but not owner\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 ORGANIZER\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates owner of the event or todo.\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 OWNER\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw30\brdrcf1 \cellx4379\clbrdrb\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 +\pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates a delegate of another attendee.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 DELEGATE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property parameter is ATTENDEE. +\par The STATUS property parameter for each attendee can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates todo was accepted by attendee\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 ACCEPTED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo requires action by attendee\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 NEEDS ACTION\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo was sent out to attendee\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 SENT\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event is tentatively accepted by attendee\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 TENTATIVE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates attendee has confirmed their attendance at the event\cell \pard +\s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 CONFIRMED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo has been rejected by attendee\cell +\pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 DECLINED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates todo has been completed by attendee\cell \pard +\s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 COMPLETED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15 \cellx4379\clbrdrb\brdrs\brdrw15 \clbrdrr +\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo has been delegated by the attendee to another\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 +DELEGATED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property parameter is NEEDS ACTION. +\par The RSVP property parameter for each attendee can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates a reply is requested\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 YES +\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw30\brdrcf1 \cellx4379\clbrdrb\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain +\s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates a reply is not requested.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 NO\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property parameter is NO. +\par The EXPECT property parameter for each attendee can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates request is for your information.\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 FYI\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates presence is definitely required.\cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 REQUIRE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates presence is being requested \cell \pard \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 REQUEST\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw30\brdrcf1 \cellx4379\clbrdrb\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 +\pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates an immediate response needed.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 IMMEDIATE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property parameter is FYI. +\par The following is an example of this property\rquote s use for a todo: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +ATTENDEE;ROLE=OWNER;STATUS=COMPLETED:jsmith@host1.com +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following is an example of this property used for specifying multiple attendees to an event: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +ATTENDEE;ROLE=OWNER;STATUS=CONFIRMED:John Smith <jsmith@host1.com>\line ATTENDEE;ROLE=ATTENDEE;STATUS=TENTATIVE:Henry Cabot <hcabot@host2.com>\line ATTENDEE;ROLE=DELEGATE;STATUS=CONFIRMED:Jane Doe <jdoe@host1.com> +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following is an example of this property with the value specified as an URL reference to a vCard that contains the information about the attendee: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +ATTENDEE;ROLE=ATTENDEE;STATUS=CONFIRMED;VALUE=URL;TYPE=VCARD:\line http://www.xyz.com/~myvcard.vcf +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129100}{\*\bkmkstart _Toc367165361}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.3\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Audio Reminder{\*\bkmkend _Toc365129100}{\*\bkmkend _Toc367165361} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b AALARM} +. The property defines an audio reminder for the vCalendar entity. An audio reminder is an alarm that is sounded for the event. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The value for the audio reminder consists of the {\b Run Time}, or the date and time that the reminder is to be executed; {\b Snooze Time} +, or the duration of time after the Run Time that the reminder is to be dormant prior to being repeated; {\b Repeat Count}, or the number of times that the reminder is to be repeated; and the {\b Audio Content} +, or the digital sound to be played when the reminder is executed. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following are some examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +AALARM;TYPE=WAVE;VALUE=URL:19960415T235959; ; ; file:///mmedia/taps.wav +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +AALARM;TYPE=WAVE;VALUE=CONTENT-ID:19960903T060000;PT15M;4;<jsmith.part2.=\line 960901T083000.xyzMail@host1.com> +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The property has the following additional property parameters: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Parameter Values\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 +\clbrdrl\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 {\b\i TYPE}\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates the MIME basic audio content type.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 PCM\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates the WAVE format for audio content.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 WAVE\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15 \cellx4379\clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 +\f8\fs16\cf1 Indicates the AIFF format for audio content.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 AIFF\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The +Reminder properties are primarily provided as a means for allowing the capture of alarm information when accessing a calendar system. It may not be an appropriate property to send in an event or todo request. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129101}{\*\bkmkstart _Toc367165362}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.4\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Categories{\*\bkmkend _Toc365129101}{\*\bkmkend _Toc367165362} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b CATEGORIES} +. This property defines the categories for the vCalendar entity. More than one category may be specified as a list of categories separated by the Semi-Colon character (ASCII decimal 59). +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following are some examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 CATEGORIES:APPOINTMENT;EDUCATION + +\par CATEGORIES:MEETING +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Some of the possible values for this property might include the following: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx3150 \pard\plain \s48\qc\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Some Possible +\par Property Values\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx3150 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 APPOINTMENT\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 BUSINESS\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 +\f8\fs16\cf1 EDUCATION\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 HOLIDAY\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 \f8\fs16\cf1 MEETING\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 MISCELLANEOUS\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 PERSONAL\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 PHONE CALL\cell \pard\plain \widctlpar\intbl +\f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 SICK DAY\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 SPECIAL OCCASION\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 TRAVEL\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15 \clbrdrb +\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx3150 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 VACATION\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\li864\sb100\sl-260\slmult0 +\nowidctlpar \f8\fs20\cf1 {\*\bkmkstart _Toc365129102} +\par Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc367165363}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.5\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Classification +{\*\bkmkend _Toc365129102}{\*\bkmkend _Toc367165363} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b CLASS}. This property defines the access classification for the vCalendar entity. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +a calendar entity access classification is only one component of the general security system within a calendar application. It provides a method of capturing the scope of the access the calendar owner intends for information within an individual calendar +entry. The access classification of an individual vCalendar entity is useful when measured along with the other security components of a ca +lendar system (e.g., user authorization, access rights, access role, etc.). Hence, the semantics of the individual access classifications can not be completely defined by this specification. Additionally, due to the \ldblquote blind\rdblquote + nature of most exchange process +es using this specification, these entity classifications can not serve as an enforcement statement for a system receiving a vCalendar data stream. Rather, they provide a method for capturing the intention of the calendar owner for the access to the calen +dar entry. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 CLASS:PUBLIC +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The property can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates general, public access.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 +PUBLIC\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates restricted, private access.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 PRIVATE\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw30\brdrcf1 \cellx4379\clbrdrb\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain +\s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates very restricted, confidential access.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 CONFIDENTIAL\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain +\s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property is PUBLIC. +\par Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129103}{\*\bkmkstart _Toc367165364}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.6\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Date/Time Created{\*\bkmkend _Toc365129103}{\*\bkmkend _Toc367165364} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DCREATED}. Th +is property specifies the date and time that the vCalendar entity was created within the originating calendar system. This is not generally the same date and time that the vCalendar object was created. The date and time value is the local or UTC based tim +e expressed in the complete representation, basic format as specified in ISO 8601. The following is example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DCREATED:19960329T083000 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129104}{\*\bkmkstart _Toc367165365}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.7\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Date/Time Completed{\*\bkmkend _Toc365129104}{\*\bkmkend _Toc367165365} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b COMPLETED} +. This property defines the date and time that the todo was actually completed. The date and time value is expressed in the complete representation, basic format as specified in ISO 8601. The time can either be in local or UTC based time. The following is + an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 COMPLETED:19960401T235959 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc340018752}{\*\bkmkstart _Toc345308992}{\*\bkmkstart _Toc346992906}{\*\bkmkstart _Toc365129105}{\*\bkmkstart _Toc367165366}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.8\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Description{\*\bkmkend _Toc365129105}{\*\bkmkend _Toc367165366} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DESCRIPTION} +. This property provides a more complete description of the vCalendar entity, than that provided by the SUMMARY property. The following is an examples of the property with formatted line breaks in the property value: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Meeting to provide technical=\line review for \ldblquote Phoenix\rdblquote design. =d=a=\line Happy face Conference Room. Phoenix design team=\line must attend this meeting. RSVP to team leader. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following is an examples of the property with folding of long lines: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DESCRIPTION:Last draft of the new novel is to be completed\line for the editor\rquote s proof today. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129106}{\*\bkmkstart _Toc367165367}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.9\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Display Reminder{\*\bkmkend _Toc365129106}{\*\bkmkend _Toc367165367} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DALARM} +. The property defines a display reminder for the vCalendar entity. a display reminder is an alarm that is popped up into the user interface or otherwise visually displayed for the event. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The value for the display reminder consists of the {\b Run Time}, or the date and time that the reminder is to be executed; {\b Snooze Time} +, or the duration of time after the Run Time that the reminder is to be dormant prior to being repeated; {\b Repeat Count}, or the number of times that the reminder is to be repeated; and the {\b Display String} +, or the text to be displayed when the reminder is executed. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +DALARM:19960415T235000;PT5M;2;Your Taxes Are Due !!! +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The Reminder properties are primarily provided as a means for allowing + the capture of alarm information when accessing a calendar system. It may not be an appropriate property to send in an event or todo request. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129107}{\*\bkmkstart _Toc367165368}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.10\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Due Date/Time{\*\bkmkend _Toc365129107}{\*\bkmkend _Toc367165368} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DUE} +. This property defines the date and time that the todo is due to be completed. The date and time value is expressed in the complete representation, basic format as specified in ISO 8601. The time can either be +in local or UTC based time. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DUE:19960401T235959Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129108}{\*\bkmkstart _Toc367165369}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.11\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 End Date/Time{\*\bkmkend _Toc365129108}{\*\bkmkend _Toc367165369} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DTEND} +. This property defines the date and time that the event will end. The date and time value is expressed in the complete representation, basic format as specified in ISO 8601. The time can either be in local or UTC based time. Events may have an end date/t +ime but no start date/time. In that case, the event does not take up any time. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DTEND:19960401T235959Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129109}{\*\bkmkstart _Toc367165370}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.12\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Exception Date/Times{\*\bkmkend _Toc365129109}{\*\bkmkend _Toc367165370} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b EXDATE} +. This property defines the list of date/time exceptions for a recurring vCalendar entity. The date and time values is expressed in the complete representation, basic format as specified in ISO 86 +01. The times can either be in local or UTC based time. The number of date/time exceptions is specified by the Number Exceptions property. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +EXDATE:19960402T010000Z;19960403T010000Z;19960404T010000Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129110}{\*\bkmkstart _Toc367165371}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.13\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Exception Rule{\*\bkmkend _Toc365129110}{\*\bkmkend _Toc367165371} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b EXRULE}. This property defines a rule or repeating pattern for an exception to a recurring vCalendar entity, based + on the Basic Recurrence Rule Grammar of XAPIA\rquote s CSA. The value for the property is a pattern specification for the recurrence exception. The following are some examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 XRULE:W2 TU TH #2\tab \tab \tab +// Except every other week, on Tuesday and Thursday +\par \tab \tab \tab \tab \tab \tab \tab // for 4 occurrences +\par XRULE:D1 #10\tab \tab \tab \tab // Except daily for 10 occurrences +\par XRULE:YM1 6 7 #8\tab \tab \tab // Except yearly in June and July for 8 occurrences +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129111}{\*\bkmkstart _Toc367165372}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.14\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Last Modified{\*\bkmkend _Toc365129111}{\*\bkmkend _Toc367165372} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b LAST-MODIFIED} +. The property specifies the date and time that the vCalendar entity was last revised. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 LAST-MODIFIED:19960817T133000Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129112}{\*\bkmkstart _Toc367165373}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.15\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Location{\*\bkmkend _Toc365129112}{\*\bkmkend _Toc367165373} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b LOCATION}. The property defines the intended location for a vCalendar entity. +\par The property value may reference a vCard object. This provides a useful mechanism to specify a location in terms of its electronic business card. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following are some examples of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +LOCATION:Conference Room - f123, Bldg. 002\tab \tab // or +\par LOCATION;VALUE=URL;TYPE=VCARD:http://www.xyzcorp.com/~jsmith.vcf +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129113}{\*\bkmkstart _Toc367165374}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.16\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Mail Reminder{\*\bkmkend _Toc365129113}{\*\bkmkend _Toc367165374} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b MALARM}. The property defines an email address that is to be sent a reminder for the vCalendar entity +. a mail reminder is an electronic mail address that will be sent a display string as an alarm for the event. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The value for the procedure reminder consists of the {\b Run Time}, or the date and time that the reminder is to be executed; {\b Snooze Time} +, or the duration of time after the Run Time that the reminder is to be dormant prior to being repeated; {\b Repeat Count}, or the number of times that the reminder is to be repeated; {\b Email Address} +, or the (RFC 822) email address that is to be sent the reminder and the {\b Note}, or the textual reminder string that is to be sent to the email address. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +MALARM:19960416T000000;PT1H;24;IRS@us.gov;The Check Is In The Mail! +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The Reminder properties are primarily provided as a means for allowing the capture of alarm information when accessing a calendar system. It may not be an appropriate property to send in an event or todo request. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129114}{\*\bkmkstart _Toc367165375}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.17\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Number Recurrences{\*\bkmkend _Toc365129114}{\*\bkmkend _Toc367165375} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b RNUM} +. The property defines the number of times the calendar entry will reoccur. The value is equal to the number of recurrences that are specified by the union of the Recurrence Dates, Recurrence Rule, Exception Dates, and Exception Rule property values. The +following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 RNUM:3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 In the event that this value does not match the computed number of recurrences, it will be ignored and the computer number of recurrences will be used. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementation conforming to this specification. +\par {\*\bkmkstart _Toc365129115}{\*\bkmkstart _Toc367165376}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.18\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Priority{\*\bkmkend _Toc365129115}{\*\bkmkend _Toc367165376} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b PRIORITY} +. The property defines the priority for the vCalendar entity. The value is an alphanumeric. a value of zero (ASCII decimal 48) specifies an undefined priority. a value of one is the highest priority. a value of two is the second highest priority. Subseque +nt numbers specify a decreasing ordinal priority. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 PRIORITY:2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementation conforming to this specification. +\par {\*\bkmkstart _Toc365129116}{\*\bkmkstart _Toc367165377}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.19\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Procedure Reminder{\*\bkmkend _Toc365129116}{\*\bkmkend _Toc367165377} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b PALARM} +. The property defines a procedure reminder for the vCalendar entity. a procedure reminder is a procedure, or application executable that will be run as an alarm for the event. +\par While this property has many useful purposes, implementors should be aware of the security implications of sending a vCalendar data stream containing this property +. The security implications are similar to those associated with active messages within electronic mail. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The value for the procedure reminder consists of the {\b Run Time}, or the date and time that the reminder is to be executed; {\b Snooze Time} +, or the duration of time after the Run Time that the reminder is to be dormant prior to being repeated; {\b Repeat Count}, or the number of times that the reminder is to be repeated; and the {\b Procedure Name} +, or the path to the procedure to be run when the reminder is executed. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +PALARM;VALUE=URL:19960415T235000;PT5M;2;file:///myapps/shockme.exe +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\*\bkmkstart OLE_LINK2} +The Reminder properties are primarily provided as a means for allowing the capture of alarm information when accessing a calendar system. It may not be an appropriate property to send in an event or todo request. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129117}{\*\bkmkstart _Toc367165378}{\*\bkmkend OLE_LINK2}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.20\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 +{\pntxtb .}}\b\f9\cf1\kerning28 Related To{\*\bkmkend _Toc365129117}{\*\bkmkend _Toc367165378} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b RELATED-TO}. The property is used to + represent relationships or references between this vCalendar entity and another. The property value consists of the persistent, globally unique identifier of another vCalendar entity. This value would be represented in a vCalendar data stream by the UID +property. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +a linked relationship can be specified by a series of entities that each, in turn, refer to their parent entity. a group relationship can be specified by a number of entities that all refer to one common parent entity. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Changes to a calendar entit +y referenced by this property may impact the related calendar entity. For example, if a group event changes it start or end date or time, then the related, dependent events will need to have their start and end dates changed in a corresponding way. This p +roperty is intended only to provide information on the relationship of calendar entities. It is up to the target calendar system to maintain this relationship. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +RELATED-TO:<jsmith.part7.19961T083000.xyzMail@host3.com> +\par RELATED-TO:19960401-080045-4000F192713-0052 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129118}{\*\bkmkstart _Toc367165379}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.21\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Recurrence Date/Times{\*\bkmkend _Toc365129118}{\*\bkmkend _Toc367165379} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b RDATE} +. This property defines the list of date/times for a recurring vCalendar entity. The date and time values is expressed in the complete representation, basic format as specified in ISO 8601. The times can either be in local or UTC based time. The number of + recurring date/times is specified by the Number Recurrences property. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +RDATE:19960402T010000Z;19960403T010000Z;19960404T010000Z +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129119}{\*\bkmkstart _Toc367165380}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.22\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Recurrence Rule{\*\bkmkend _Toc365129119}{\*\bkmkend _Toc367165380} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b RRULE} +. This property defines a rule or repeating pattern for a recurring vCalendar entity, based on the Basic Recurrence Rule Grammar of XAPIA\rquote s CSA. The value for the property is a pattern specification for the recur +rence. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 RRULE:W2 TU TH\tab \tab \tab +// Every other week, on Tuesday and Thursday +\par RRULE:D1 #10\tab \tab \tab \tab // Daily for 10 occurrences +\par RRULE:YM1 6 7 #8\tab \tab \tab // Yearly in June and July for 8 occurrences +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129120}{\*\bkmkstart _Toc367165381}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.23\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Resources{\*\bkmkend _Toc365129120}{\*\bkmkend _Toc367165381} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b RESOURCES}. This property defines the equipment or resources needed in the vCalendar event. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Some of the values that the property may have include the following: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx3150 \pard\plain \s48\qc\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Some Possible +\par Property Values\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx3150 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 CATERING\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 CHAIRS\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 +\f8\fs16\cf1 COMPUTER PROJECTOR\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 EASEL\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0 +\nowidctlpar\intbl\tx144 \f8\fs16\cf1 OVERHEAD PROJECTOR\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 SPEAKER PHONE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row +\pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 TABLE\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 TV\cell \pard\plain \widctlpar\intbl +\f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 VCR\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 VIDEO PHONE\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw30\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx3150 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 VEHICLE\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 RESOURCES:EASEL;PROJECTOR;VCR +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129121}{\*\bkmkstart _Toc367165382}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.24\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Sequence Number{\*\bkmkend _Toc365129121}{\*\bkmkend _Toc367165382} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b SEQUENCE}. This property defines the instance of the vCalendar entity in a sequence of revisions. When a vC +alendar entity is created its sequence number is zero (ASCII decimal 48). It is incremented each time it is revised. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 SEQUENCE:1 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129122}{\*\bkmkstart _Toc367165383}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.25\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Start Date/Time{\*\bkmkend _Toc365129122}{\*\bkmkend _Toc367165383} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b DTSTART} +. This property defines the date and time that the event will start. The date and time value is expressed in the complete representation, basic format as specified in ISO 860 +1. The time can either be in local or UTC based time. Events may have a start date/time but no end date/time. In that case, the event does not take up any time. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 DTSTART:19960401T235959 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129123}{\*\bkmkstart _Toc367165384}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.26\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Status{\*\bkmkend _Toc365129123}{\*\bkmkend _Toc367165384} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b STATUS}. This property defines the status associated with the vCalendar entity. This property can be used when the ATTENDEE property +is either not supported or not needed. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 STATUS:TENTATIVE +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The property can have the following values: +\par +\par \trowd \trgaph108\trleft1260 \clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \cellx4379\clbrdrt\brdrs\brdrw30\brdrcf1 \clbrdrb\brdrs\brdrw45\brdrcf1 \clbrdrr\brdrs\brdrw15 \cellx5896 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Description\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Property Value\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft1260 \clbrdrl +\brdrs\brdrw15\brdrcf1 \cellx4379\clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates todo was accepted\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 ACCEPTED +\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo requires action\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 NEEDS ACTION\cell +\pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo was sent out.\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 SENT\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event is tentatively accepted\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 TENTATIVE\cell \pard\plain +\widctlpar\intbl \f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event is confirmed\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 CONFIRMED\cell \pard\plain \widctlpar\intbl +\f4\fs20 \row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates event or todo has been declined\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 DECLINED\cell \pard\plain \widctlpar\intbl \f4\fs20 +\row \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates todo has been completed\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 COMPLETED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd +\trgaph108\trleft1260 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15 \cellx4379\clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx5896 \pard\plain \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 \f8\fs16\cf1 Indicates eve +nt or todo has been delegated\cell \pard \s51\sb80\sa80\sl-220\slmult0\nowidctlpar\intbl\tx144 DELEGATED\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par The default value for this property is NEEDS ACTION. +\par Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129124}{\*\bkmkstart _Toc367165385}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.27\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Summary{\*\bkmkend _Toc365129124}{\*\bkmkend _Toc367165385} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b SUMMARY}. This property defines a short summary or subject of the vCalendar entity. The following is an example of this property: + +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 SUMMARY:Department Party +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is mandatory for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129125}{\*\bkmkstart _Toc367165386}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.28\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Time Transparency{\*\bkmkend _Toc365129125}{\*\bkmkend _Toc367165386} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b TRANSP} +. This property defines whether the event is transparent to free time searches. The value of this property is a number. a value of zero (ASCII decimal 48) guaranttes that the entry will blocks time and will be factored into a free time search. a value of +one (ASCII decimal 49) specifies that the entry will not block time and will not be factored into a free time search. Any values greater than \ldblquote 1\rdblquote will provide implementation specific transparency semantic +s. Some implementations may treat values greater than one as non-blocking or transparent events. Other implementations may use the numeric value to provide a layering of levels of transparency. The default value is zero (ASCII decimal 48), the event is no +t transparent and will block free time searches. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 TRANSP:0 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129126}{\*\bkmkstart _Toc367165387}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.29\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Uniform Resource Locator{\*\bkmkend _Toc365129126}{\*\bkmkend _Toc367165387} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b URL} +. This property defines a Uniform Resource Locator for an Internet location that can be used to obtain real-time information associated with the vCalendar entity. Valid values for this property are a string conforming to the IETF RFC 1738, {\i +Uniform Resource Locators}. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +URL:http://abc.com/pub/calendars/jsmith/mytime.or3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129127}{\*\bkmkstart _Toc367165388}{\pntext\pard\plain\b\f9\cf1\kerning28 2.3.30\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Unique Identifier{\*\bkmkend _Toc365129127}{\*\bkmkend _Toc367165388} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This property is identified by the property name {\b UID} +. This property defines a persistent, globally unique identifier associated with the vCalendar entity. Some examples of forms of unique identifiers would include ISO 9070 formal public identifiers (FPI), X.500 distinguished names, machine-generated +\ldblquote random\rdblquote numbers with a statistically high likelihood of being globally unique and Uniform Resource Locators (URL). If an URL is specified, it is suggested that the URL reference a service which can render an updated version of the v +Calendar for the object. The following is an example of this property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 UID:19960401-080045-4000F192713-0052 + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +This property is an important method for group scheduling applications to match calendar entities with later modification or deletion requests. Calendaring applications that do not generate this property in vCalendar entities may be limiting their interop +erability with other group scheduling applications. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Support for this property is optional for implementations conforming to this specification. +\par {\*\bkmkstart _Toc365129128}{\*\bkmkstart _Toc367165389}{\pntext\pard\plain\b\f9\fs28\cf1 2.4\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 Misce +llaneous Properties{\*\bkmkend _Toc340018752}{\*\bkmkend _Toc345308992}{\*\bkmkend _Toc346992906}{\*\bkmkend _Toc365129128}{\*\bkmkend _Toc367165389} +\par {\*\bkmkstart _Toc340018753}{\*\bkmkstart _Toc345308993}{\*\bkmkstart _Toc346992907}{\*\bkmkstart _Toc365129129}{\*\bkmkstart _Toc367165390}{\pntext\pard\plain\b\f9\cf1\kerning28 2.4.1\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0 +\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f9\cf1\kerning28 Extensions{\*\bkmkend _Toc340018753}{\*\bkmkend _Toc345308993}{\*\bkmkend _Toc346992907}{\*\bkmkend _Toc365129129}{\*\bkmkend _Toc367165390} + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The clear-text encoding provides a \ldblquote standard mechanism for doing non-standard things\rdblquote . This extension support is provided for implementers to \ldblquote +push the envelope\rdblquote on the existing version of the specification. Extension properties are specified by property and/or property parameter names that have the initial sub-string of {\b X-} + (the two character sequence: Capital X character followed by the Dash character). It is recommended that vendors concatenate onto this sentinel an added sh +ort sub-string to identify the vendor. This will facilitate readability of the extensions and minimize possible collision of names between different vendors. All vCalendar Readers are expected to be able to interpret the extension properties and property +parameters but may ignore them. The following might be the abc vendor\rquote s extension for an audio-clip form of subject property: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +X-ABC-MMSUBJ;TYPE=WAV; VALUE=URL: http://load.noise.org/mysubj.wav +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 At present, there is no registration authority for names of extension properties. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +Support for this property is mandatory for implementations conforming to this specification. However, an implementation may not be able to act on the extension property. Conformance only requires that an implementation be able to parse vCalendar data stre +ams with extensions. The implementation need not act on them. +\par {\*\bkmkstart _Toc365129130}{\*\bkmkstart _Toc367165391}{\pntext\pard\plain\b\f9\fs28\cf1 2.5\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 Formal Definition +{\*\bkmkend _Toc365129130}{\*\bkmkend _Toc367165391} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following modified Backus-Naur Notation (BNF) is provided to assist developers in building parsers for the clear-text encoding. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +\par This syntax is written according to the form described in RFC 822, +\par but it references just this small subset of RFC 822 literals: +\par CR = <ASCII CR, carriage return> ; ( 15, 13.) +\par LF = <ASCII LF, linefeed> ; ( 12, 10.) +\par CRLF\tab = CR LF +\par SPACE = <ASCII SP, space> ; ( 40, 32.) +\par HTAB = <ASCII HT, horizontal-tab> ; ( 11, 9.) +\par +\par All literal property names are valid as upper, lower, or mixed case. +\par +\par ws\tab \tab = 1*(SPACE / HTAB) +\par \tab ; \ldblquote whitespace,\rdblquote one or more spaces or tabs +\par +\par wsls\tab \tab = 1*(SPACE / HTAB / CRLF) +\par \tab ; whitespace with line separators +\par +\par value\tab \tab = 7bit / 8bit / quoted-printable / base64 +\par \tab ; The value must be in the encoding type specified for the property value. +\par +\par 7bit\tab \tab = <7bit us-ascii printable chars, excluding CR LF> +\par +\par 8bit\tab \tab = <MIME RFC 1521 8-bit text> +\par +\par quoted-printable = <MIME RFC 1521 quoted-printable text> +\par +\par base64\tab \tab = <MIME RFC 1521 base64 text> +\par \tab ; the end of the text is marked with two CRLF sequences +\par \tab ; this results in one blank line before the start of the next +\par \tab ; property +\par +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 {\v groups\tab \tab = groups \ldblquote .\rdblquote word + +\par \tab \tab / word +\par +\par }\pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 word\tab \tab +, > +\par +\par vcal_file\tab = [wsls] vcal [wsls] +\par +\par vcal\tab \tab = \ldblquote BEGIN\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote VCALENDAR\rdblquote [ws] 1*CRLF +\par \tab \tab calprop calentities [ws] *CRLF +\par \tab \tab \ldblquote END\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote VCALENDAR\rdblquote [ws] 1*CRLF +\par +\par calentities\tab = calentities *CRLF calentity +\par \tab \tab / calentity +\par +\par calentity\tab = evententity +\par \tab \tab / todoentity +\par +\par evententity\tab = \ldblquote BEGIN\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote EVENT\rdblquote [ws] 1*CRLF +\par \tab \tab entprops [ws] *CRLF +\par \tab \tab \ldblquote END\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote EVENT\rdblquote [ws] 1*CRLF +\par +\par todoentity\tab = \ldblquote BEGIN\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote TODO\rdblquote [ws] 1*CRLF +\par \tab \tab entprops [ws] *CRLF +\par \tab \tab \ldblquote END\rdblquote [ws] \ldblquote :\rdblquote [ws] \ldblquote TODO\rdblquote [ws] 1*CRLF +\par +\par calprops\tab = calprops *CRLF calprop +\par \tab \tab / calprop +\par +\par calprop\tab = \ldblquote DAYLIGHT\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote value CRLF +\par \tab \tab / \ldblquote GEO\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote value CRLF +\par \tab \tab / \ldblquote PRODID\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote value CRLF +\par \tab \tab / \ldblquote TZ\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote value CRLF +\par \tab \tab / \ldblquote VERSION\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote \ldblquote 1.0\rdblquote CRLF +\par \tab ; The VERSION calendar property MUST appear in the vCalendar object. +\par +\par entprops\tab = entprops *CRLF entprop +\par \tab \tab / entprop +\par +\par entprop\tab = [ws] simprop +\par \tab \tab [params] \ldblquote :\rdblquote value CRLF +\par \tab \tab / [ws] \ldblquote AALARM\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote aalarmparts CRLF +\par \tab \tab / [ws] \ldblquote CATEGORIES\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote 1*catvals CRLF +\par \tab \tab / [ws] \ldblquote CLASS\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote classvals CRLF +\par \tab \tab / [ws] \ldblquote DALARM\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote dalarmparts CRLF +\par \tab \tab / [ws] \ldblquote EXDATE\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote xdatevals CRLF +\par \tab \tab / [ws] \ldblquote MALARM\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote malarmparts CRLF +\par \tab \tab / [ws] \ldblquote PALARM\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote palarmparts CRLF +\par \tab \tab / [ws] \ldblquote RDATE\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote rdatevals CRLF +\par \tab \tab / [ws] \ldblquote RESOURCES\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote 1*resvals CRLF +\par \tab \tab / [ws] \ldblquote STATUS\rdblquote +\par \tab \tab [params] \ldblquote :\rdblquote statvals CRLF +\par +\par simprop\tab = \ldblquote ATTACH\rdblquote / \ldblquote ATTENDEE\rdblquote / \ldblquote DCREATED\rdblquote / \ldblquote COMPLETED\rdblquote +\par \tab \tab / \ldblquote DESCRIPTION\rdblquote / \ldblquote DUE\rdblquote / \ldblquote DTEND\rdblquote / EXRULE / LAST-MODIFIED +\par \tab \tab / \ldblquote LOCATION\rdblquote / \ldblquote RNUM\rdblquote / \ldblquote PRIORITY\rdblquote / \ldblquote RELATED-TO\rdblquote / \ldblquote RRULE\rdblquote +\par \tab \tab / \ldblquote SEQUENCE\rdblquote / \ldblquote DTSTART\rdblquote / \ldblquote SUMMARY\rdblquote / \ldblquote TRANSP\rdblquote / \ldblquote URL\rdblquote / \ldblquote UID\rdblquote +\par \tab \tab /\rdblquote X-\rdblquote word +\par +\par aalarmparts\tab = 0*3(strnosemi \ldblquote ;\rdblquote ) strnosemi +\par \tab ; runTime, snoozeTime, repeatCount, audioContent +\par +\par catvals\tab = \ldblquote APPOINTMENT\rdblquote / \ldblquote BUSINESS\rdblquote / \ldblquote EDUCATION\rdblquote / \ldblquote HOLIDAY\rdblquote / \ldblquote MEETING\rdblquote +\par \tab \tab / \ldblquote MISCELLANEOUS\rdblquote / \ldblquote PERSONAL\rdblquote / \ldblquote PHONE CALL\rdblquote / \ldblquote SICK DAY\rdblquote +\par \tab \tab / \ldblquote SPECIAL OCCASION\rdblquote / \ldblquote TRAVEL\rdblquote / \ldblquote VACATION\rdblquote / \ldblquote X-\ldblquote word / value +\par +\par classvals\tab = \ldblquote PUBLIC\rdblquote / \ldblquote PRIVATE\rdblquote / \ldblquote CONFIDENTIAL\rdblquote / \ldblquote X-\ldblquote word / value +\par +\par dalarmparts\tab = 0*3(strnosemi \ldblquote ;\rdblquote ) strnosemi +\par \tab ; runTime, snoozeTime, repeatCount, displayString +\par +\par xdatevals\tab = 1*value +\par \tab ; One or more date/time values +\par +\par malarmparts\tab = 0*4(strnosemi \ldblquote ;\rdblquote ) strnosemi +\par \tab ; runTime, snoozeTime, repeatCount, addressString, noteString +\par +\par palarmparts\tab = 0*3(strnosemi \ldblquote ;\rdblquote ) strnosemi +\par \tab ; runTime, snoozeTime, repeatCount, procedureName +\par +\par rdatevals\tab = 1*value +\par \tab ; One or more date/time values +\par +\par resvals\tab = \ldblquote CATERING\rdblquote / \ldblquote CHAIRS\rdblquote / \ldblquote EASEL\rdblquote / \ldblquote PROJECTOR\rdblquote / \ldblquote VCR\rdblquote +\par \tab \tab / \ldblquote VEHICLE\rdblquote / \ldblquote X-\ldblquote word / value +\par +\par statvals\tab = \ldblquote ACCEPTED\rdblquote / \ldblquote NEEDS ACTION\rdblquote / \ldblquote SENT\rdblquote / \ldblquote TENTATIVE\rdblquote +\par \tab \tab / \ldblquote CONFIRMED\rdblquote / \ldblquote DECLINED\rdblquote / \ldblquote COMPLETED\rdblquote / \ldblquote DELEGATED\rdblquote +\par \tab \tab / \ldblquote X-\ldblquote word / value +\par +\par params\tab \tab = \ldblquote ;\rdblquote [ws] paramlist +\par +\par paramlist\tab = paramlist [ws] \ldblquote ;\rdblquote [ws] param +\par \tab \tab / param +\par +\par param\tab \tab = \ldblquote TYPE\rdblquote [ws] \ldblquote =\ldblquote [ws] ptypeval +\par \tab \tab / [\ldblquote VALUE\rdblquote [ws] \ldblquote =\ldblquote [ws]] pvalueval +\par \tab \tab / [\ldblquote ENCODING\rdblquote [ws] \ldblquote =\ldblquote [ws]] pencodingval +\par \tab \tab / \ldblquote CHARSET\rdblquote [ws] \ldblquote =\ldblquote [ws] charsetval +\par \tab \tab / \ldblquote LANGUAGE\rdblquote [ws] \ldblquote =\ldblquote [ws] langval +\par \tab \tab / \ldblquote ROLE\rdblquote [ws] \ldblquote =\rdblquote [ws] roleval +\par \tab \tab / \ldblquote STATUS\rdblquote [ws] \ldblquote =\rdblquote [ws] statuval +\par \tab \tab / \ldblquote X-\rdblquote word [ws] \ldblquote =\ldblquote [ws] word +\par \tab \tab / knowntype +\par +\par ptypeval\tab = knowntype / \ldblquote X-\rdblquote word +\par +\par knowntype\tab = \ldblquote WAVE\rdblquote / \ldblquote PCM\rdblquote / \ldblquote VCARD\rdblquote / \ldblquote X-\ldblquote word / value +\par +\par pvalueval\tab = \ldblquote INLINE\rdblquote / \ldblquote URL\rdblquote / \ldblquote CONTENT-ID\rdblquote / \ldblquote CID\rdblquote / \ldblquote X-\rdblquote word +\par +\par pencodingval \tab = \ldblquote 7bIT\rdblquote / \ldblquote 8bIT\rdblquote / \ldblquote QUOTED-PRINTABLE\rdblquote / \ldblquote BASE64\rdblquote / \ldblquote X-\rdblquote word +\par +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 charsetval\tab += <a character set string as defined in Section 7.1 of RFC 1521> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +\par langval\tab = <a language string as defined in RFC 1766> +\par +\par roleval\tab = \ldblquote ATTENDEE\rdblquote / \ldblquote ORGANIZER\rdblquote / \ldblquote OWNER\rdblquote / \ldblquote X-\ldblquote word +\par +\par statusval\tab = \ldblquote ACCEPTED\rdblquote / \ldblquote NEEDS ACTION\rdblquote / \ldblquote SENT\rdblquote / \ldblquote TENTATIVE\rdblquote / \ldblquote CONFIRMED\rdblquote +\par \tab \tab / \ldblquote DECLINED\rdblquote / \ldblquote COMPLETED\rdblquote / \ldblquote DELEGATED\rdblquote / \ldblquote X-\ldblquote word +\par +\par strnosemi\tab = *(*nonsemi (\ldblquote \\;\rdblquote / \ldblquote \\\rdblquote CRLF)) *nonsemi +\par \tab ; To include a semicolon in this string, it must be escaped +\par \tab ; with a \ldblquote \\\rdblquote character. +\par +\par nonsemi\tab \tab = <any non-control ASCII except \ldblquote ;\rdblquote > +\par +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par \sect \sectd \margtsxn2520\psz1\linex0\colsx0 \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc346992914}{\*\bkmkstart _Toc365129131}{\*\bkmkstart _Toc367165392}Section 3 : +{\*\bkmkend _Toc346992914}Internet Recommendations{\*\bkmkend _Toc365129131}{\*\bkmkend _Toc367165392} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 3.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\b0\v\cf8 \tab 1\tab }{\v +\par {\*\bkmkstart _Toc365129132}{\*\bkmkstart _Toc367165393}{\pntext\pard\plain\b\f9\fs28\cf1 3.1\tab}}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 +Recommended Practice With SMTP/MIME{\*\bkmkend _Toc365129132}{\*\bkmkend _Toc367165393} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The vCalendar information can be transported + through SMTP/MIME based electronic mail services. Interoperability of vCalendar information over SMTP/MIME transports can be better assured by following a common set of recommended practices for encapsulation of the vCalendar. +\par {\*\bkmkstart _Toc365129133}{\*\bkmkstart _Toc367165394}{\pntext\pard\plain\b\f9\cf1\kerning28 3.1.1\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Text/Plain Content Type{\*\bkmkend _Toc365129133}{\*\bkmkend _Toc367165394} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +Without any change to existing SMTP or MIME compliant user agents, a vCalendar object can be included within Internet email messages. This might be the case for an existing, simple user agent such as a legacy SMTP mail system. While this approach provides + for transport of vCalendars over SMTP services, it does not allow for the end user to take advantage of the full capabilities of either the vCalendar or Internet email (i.e., MIME) functionality. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following demonstrates how a vCalendar can be included as a SMTP message made up of a RFC 822 message. This may be an initial method for incorporating vCalendar objects into SMTP messages. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Date: Thr, 25 Jan 96 0932 EDT\line +From: john.smith@host.com\line Subject: Re: RFC822 vCalendar Example\line Sender: john.smith@host.com\line To: smartin@host2.com\line Message-ID: <JOHNSMITH.960125T091020.xyzMail@host3.com>\line \line Steve: Thanks for the call earlier today. Let\rquote +s get together\line tomorrow at 8:30 AM EST to discuss your new proposal. Here is\line the meeting notice for your PIM. +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx16384\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 BEGIN:VCALENDAR\line VERSION:1.0\line BEGIN:VEVENT\line +CATEGORIES:MEETING\line STATUS:TENTATIVE\line DTSTART:19960401T033000Z\line DTEND:19960401T043000Z\line SUMMARY:Your Proposal Review\line DESCRIPTION:Steve and John to review newest proposal material\line CLASS:PRIVATE\line END:VEVENT\line END:VCALENDAR + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following example demonstrates how a vCalendar can be included as a separate text/plain content portion within current MIME user agents. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Date: Fri, 26 Jan 1996 07:53:00 0-500 +\line From: smartin@host2.com\line Subject: RE: Text/Plain MIME vCalendar Example\line To: john.smith@host.com\line Mime-Version: 1.0\line Content-Type: multipart/mixed; boundary=vCalendar\line Message-ID: <ABC-1.0-Note-martin-steve-0824475754>\line + +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 --vCalendar\line +Content-Type:text/plain; charset=us-ascii\line Content-Transfer-Encoding: 7bit +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 John: I can\rquote +t make that meeting at 8:30. How about doing it\line over lunch at noon? Here is an action item for the meeting. +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 --vCalendar\line +Content-Type:text/plain; charset=us-ascii; name="MARTIN.VCS"\line +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 BEGIN:VCALENDAR\line VERSION:1.0\line BEGIN:VTODO\line +SUMMARY:John to pay for lunch\line DUE:19960401T083000Z\line STATUS:NEEDS ACTION\line END:VTODO\line END:VCALENDAR +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +\par --vCalendar\emdash +\par {\*\bkmkstart _Toc365129134}{\*\bkmkstart _Toc367165395}{\pntext\pard\plain\b\f9\cf1\kerning28 3.1.2\tab}\pard\plain \s3\sb280\sa140\sl-280\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl3\pndec\pnprev1\pnstart1\pnsp144 {\pntxtb .}} +\b\f9\cf1\kerning28 Text/X-vCalendar Content Type{\*\bkmkend _Toc365129134}{\*\bkmkend _Toc367165395} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The vCalendar object can also be passed as a non-standard MIME media type. This would be useful in order to clearly identify the vCalendar object in an electronic mail message body part. a non-s +tandard, vCalendar object should be identified as the MIME type/subtype \ldblquote text/x-vCalendar\rdblquote . +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following example demonstrates how a vCalendar containing both an event and a todo can be included as a separate text/x-vCalendar content portion within a MIME user agent. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 Date: Fri, 26 Jan 1996 07:53:00 0-500 +\line From: smartin@host2.com\line Subject: RE: Text/X-vCalendar MIME vCalendar Example\line To: john.smith@host.com\line Mime-Version: 1.0\line Content-Type: multipart/mixed; boundary=vCalendar\line Message-ID: <ABC-1.0-Note-martin-steve-0824475754> +\line +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 --vCalendar\line +Content-Type:text/plain; charset=us-ascii\line Content-Transfer-Encoding: 7bit +\par John: I can\rquote t make that meeting at 8:30. How about doing it\line over lunch at noon? Here is an event for your PIM. I have \line also given you an action item for the meeting. +\par --vCalendar\line Content-Type:text/x-vCalendar; charset=us-ascii; name="MARTIN.VCS"\line +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 BEGIN:VCALENDAR\line VERSION:1.0\line BEGIN:VEVENT\line +CATEGORIES:MEETING\line STATUS:NEEDS ACTION\line DTSTART:19960401T073000Z\line DTEND:19960401T083000Z\line SUMMARY:Steve\rquote s Proposal Review\line DESCRIPTION:Steve and John to review newest proposal material\line CLASS:PRIVATE\line END:VEVENT\line +BEGIN:VTODO\line SUMMARY:John to pay for lunch\line DUE:19960401T083000Z\line STATUS:NEEDS ACTION\line END:VTODO\line END:VCALENDAR +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 +\par --vCalendar\emdash +\par {\*\bkmkstart _Toc365129135}{\*\bkmkstart _Toc367165396}{\pntext\pard\plain\b\f9\fs28\cf1 3.2\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 +Recommended Practice With HTTP/HTML{\*\bkmkend _Toc365129135}{\*\bkmkend _Toc367165396} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +The vCalendar specification provides a useful format for conveying calendaring and scheduling information between a Web browser and a HTTP server. Homepages can be used as a web-based document for publishing public events. The events can be easily formatt +ed into vCalendar objects for transfer between the server and a requesting browser. The following examples are provided to illustrate possible scenarios where a non-standard \ldblquote text/x-vCalendar\rdblquote + MIME type/subtype corresponding the vCalendar can be used to transfer calendaring and scheduling information across the World Wide Web. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following example demonstrates how a vCalendar object can be included in an HTML document or Web page. This may be an initial method for incorporating vCalendar objects into Web pages. This sam +ple assumes that the Web Browser is capable of handling the OBJECT HTML 3.2 element. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 {\*\bkmkstart OLE_LINK1}<html>\line +<head>\line <title>HTTP/Web vCalendar Example</title>\line </head>\line <body bgcolor="#ffffff">\line <h1>Special <i>New</i> Events</h1>\line <h3>The latest events to be added to the calendar of activities are:</h3>\line <hr>\line <center>\line +<object data=martin.vcs type="text/x-vCalendar">\line Your browser does not support OBJECT or the text/x-vCalendar MIME type/subtype. Get the events' data <a href=martin.vcs>here</a> and manually use it.\line </object>\line </center>\line <hr>\line +<center>\line <A HREF="mailto:john.smith@host.com"><img src="bottomtext.gif" border=0></A>\line </center>\line <hr>\line </body>\line </html> +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\*\bkmkend OLE_LINK1} +The following table demonstrates a simple HTTP transaction between client and server that retrieves a vCalendar object from the Web Server. The entries under Client and Server are the actual HTTP headers and data that might be exchanged. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar +\par \trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw30 \clbrdrr +\brdrs\brdrw15 \cellx4140\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw30 \clbrdrr\brdrs\brdrw15 \cellx5220\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw30 \clbrdrr\brdrs\brdrw15 \cellx8748 \pard\plain +\s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl \b\f9\fs18\cf1 Client\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Direction\cell \pard \s48\sb80\sa80\sl-200\slmult0\keepn\nowidctlpar\intbl Server\cell \pard\plain +\widctlpar\intbl \f4\fs20 {\b\f9\fs18\cf1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb +\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cellx4140\clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cellx5220\clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cellx8748 \pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 +GET martin.vcs HTTP/1.0 +\par }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 User-Agent: MyBrowser/1.0 +\par }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 Accept: text/html, text/plain, image/gif, image/jpeg, */*\cell }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 ->\cell }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 \cell }\pard \widctlpar\intbl { +\f3\fs16\cf1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15 \trbrdrh\brdrs\brdrw15 \trbrdrv\brdrs\brdrw15 \clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 +\clbrdrr\brdrs\brdrw15 \cellx4140\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cellx5220\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15 \clbrdrr\brdrs\brdrw15 \cellx8748 \pard +\widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 \cell }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 <-\cell }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 200 OK +\par }\pard \li40\ri40\keep\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 Server: YourServer/1.1 +\par }\pard \li40\ri40\keep\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 Date: 25 Jan 96 0932 EDT +\par Content-Type: text/x-vCalendar +\par }\pard \li40\ri40\keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 Content-Length: 257 +\par }\pard \keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 +\par }\pard \li40\ri40\keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 BEGIN:VCALENDAR +\par }\pard \li40\ri40\keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 BEGIN:VEVENT +\par CATEGORIES:MEETING +\par STATUS:TENTATIVE +\par DTSTART:19960401T033000Z +\par DTEND:19960401T043000Z +\par SUBJECT:Your Proposal Review +\par }\pard \li40\ri40\keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 DESCRIPTION:Steve and John to review newest proposal material +\par }\pard \li40\ri40\keep\keepn\widctlpar\intbl\tx0\tx40 {\f3\fs16\cf1 CLASS:PRIVATE +\par END:VEVENT +\par }\pard \widctlpar\intbl\tx0\tx360 {\f3\fs16\cf1 END:VCALENDAR\cell }\pard \widctlpar\intbl {\f3\fs16\cf1 \row }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar The following example illustrates how a \ldblquote month at a glance\rdblquote type of information can be displayed on a homepage with the events or todos being links to vCalendar objects. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +<!DOCTYPE HTML PUBLIC "-//W3c//DTD HTML 3.2//EN">\line <HTML>\line <HEAD><TITLE>HTTP/Web vCalendar Example</TITLE></HEAD>\line <BODY BGCOLOR="#FFFFFF">\line <H1>Calendar/Events for August</H1>\line <HR><CENTER>\line <TABLE BORDER=1 >\line <TR>\line +<TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Monday</P></CENTER></TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Tuesday</P></CENTER></TD>\line +<TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Wednesday</P></CENTER></TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Thursday</P></CENTER></TD>\line +<TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Friday</P></CENTER></TD>\line <TD ALIGN=CENTER VALIGN=TOP WIDTH="17%" BGCOLOR="#80ff">\line <CENTER><P>Saturday - Sunday</P></CENTER></TD>\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#Cc0c0">29:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#Cc0c0">30:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#Cc0c0">31:</TD>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">1:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">2:</TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">3:</TD>\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">4:</TD> +\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">5:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">6:\line <P><A HREF="80696a.vcs">Meeting w/Martin</A></P></TD>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">7:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">8:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">9:</TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">10:</TD>\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">11:</TD> +\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">12:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">13:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">14:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">15:</TD> +\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">16:</TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">17:</TD>\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">18:</TD> +\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">19:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">20:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">21:\line +<P><A HREF="82196a.vcs">vCal/vCard Seminar</A></P></TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">22:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">23:</TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">24:</TD>\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">25:</TD> +\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%">26:</TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">27:\line <P><A HREF="82796a.vcs">versit Conference</A></P></TD>\line +<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">28:\line <P><A HREF="82796a.vcs">versit Conference</A></P>\line </TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">29:\line +<P><A HREF="82796a.vcs">versit Conference</A></P></TD>\line <TD ALIGN=LEFT VALIGN=TOP ROWSPAN="2" WIDTH="17%" BGCOLOR="#FFFF00">30:\line <P><A HREF="82796a.vcs">versit Conference</A></P></TD>\line <TD ALIGN=LEFT VALIGN=TOP WIDTH="17%">31:</TD> +\line </TR> +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 <TR>\line +<TD ALIGN=LEFT VALIGN=TOP WIDTH="17%" BGCOLOR="#Cc0c0">1:</TD>\line </TR>\line </TABLE>\line </CENTER>\line <HR><A HREF="mailto:john.smith@host.com"><IMG BORDER=2 HEIGHT=24 WIDTH=22></A>\line {\f2 </BODY></HTML> +\par }\pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 {\f2 +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 \sect \sectd \margtsxn2520\psz1\linex0\colsx0 \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc346992917} +{\*\bkmkstart _Toc365129136}{\*\bkmkstart _Toc367165397}Section 4 : UI Support Recommendations{\*\bkmkend _Toc365129136}{\*\bkmkend _Toc367165397} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 4.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\b0\v \tab \tab }{\v +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 When integrating vCalendar support into an application, an implementor need +s to consider a number of user interface (UI) implications. Most applications provide some levels of support for interacting with other applications. This is usually accomplished in three ways. These include the File System, Clipboard, and Drag/Drop. The +full potential of the vCalendar technology can be better utilized if an application supports the vCalendar in each of these UI actions. +\par {\*\bkmkstart _Toc365129137}{\*\bkmkstart _Toc367165398}{\pntext\pard\plain\b\f9\fs28\cf1 4.1\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 File System +{\*\bkmkend _Toc365129137}{\*\bkmkend _Toc367165398} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 It is recommended that applications integrating support for vCalendar specification provide support for importing and exporting vCalendar objects from the operating system\rquote +s file system. In operating systems that support file types, it is recommended that a file type of {\b VCS}{\b\i } +be used to distinguish the vCalendar objects. Applications should make use of the file system capabilities to support the FileOpen and FileSaveAs, or their equivalent function, of a vCalendar object. +\par {\*\bkmkstart _Toc365129138}{\*\bkmkstart _Toc367165399}{\pntext\pard\plain\b\f9\fs28\cf1 4.2\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 Clipboard +{\*\bkmkend _Toc365129138}{\*\bkmkend _Toc367165399} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 It is recommended that applications integrating support for the vCalendar specification provide UI capabilities for exchanging vCalendar objects through the operating system\rquote +s clipboard. In operating systems that provide support for registering clipboard format types, it is recommended that the vCalendar object be registered using the string {\b\i +//ISBN 1-887687-00-9::versit::PDI//vCalendar} +. This string is an ISO 9070 Formal Public Identifier (FPI). Applications should make use of the operating system\rquote +s clipboard capability to support the Cut, Copy, and Paste, or their equivalent function, of a vCalendar object. Applications copying a vCalendar + to the clipboard should put the vCalendar object on to the clipboard in both the vCalendar registered format and a plain text format.{\b\i +\par {\*\bkmkstart _Toc365129139}{\*\bkmkstart _Toc367165400}{\pntext\pard\plain\b\f9\fs28\cf1 4.3\tab}}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 }\b\f9\fs28\cf1 Drag/Drop +{\*\bkmkend _Toc365129139}{\*\bkmkend _Toc367165400} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 It is recommended that applications integrating support for the vCalendar specification provide UI capabilities for exchanging vCalendar objects through the operating system\rquote +s drag/drop capability. In operating systems that provide support for registering drag/drop object types, it is recommended that the vCalendar object be registered using the string {\b\i +//ISBN 1-887687-00-9::versit::PDI//vCalendar} +. This string is an ISO 9070 Formal Public Identifier (FPI). Applications should make use of the operating system\rquote +s drag/drop capability to enable the application to act as either a Drag Source and Drag Target, or their equivalent function, of a vCalendar + object. Applications acting as a Drag Source should advertise their ability to render the vCalendar in both the vCalendar registered format and a plain text format. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Where an operating system environment provided multiple dr +ag/drop protocols (e.g., file specification or clipboard based), it is recommended that an implementation provide negotiated support for both. For example, the file specification based drag/drop protocol is useful when dragging a desktop file object or a +web based URL to a target application. In addition, the clipboard based drag/drop protocol is useful when dragging an event or todo from a source within an application to a target in another application. Supporting just one of these mechanisms will unnece +ssarily lead to a lack of interoperability between applications supporting this specifications. \sect \sectd \margtsxn2520\psz1\linex0\colsx0 \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 +{\*\bkmkstart _Toc365129146}{\*\bkmkstart _Toc367165401}Section 5 : Conformance{\*\bkmkend _Toc346992917}{\*\bkmkend _Toc365129146}{\*\bkmkend _Toc367165401} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 5.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\b0\v \tab \tab }{\v +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 In order for a vCalendar Reader or Writer to conform to this specification it must meet the following criteria: +\par {\pntext\pard\plain\f1\fs20\cf1 \'b7\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}} +All properties must be implemented as defined. Statements elsewhere in the specification which describe features as optional or with exceptions take precedence over this criterion. +\par {\pntext\pard\plain\f1\fs20\cf1 \'b7\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}} +Character set support is up to the underlying implementation. However, support for the default character set (i.e., US ASCII) is required. Optionally, other character sets may be supported. +\par {\pntext\pard\plain\f1\fs20\cf1 \'b7\tab}All extensions are optional. It is requested that any vendor-specific extensions include the vendor identification sub-string in the extension name. For example, the extension name{\i X-ABC-} + for an extension created by the abc organization. +\par {\pntext\pard\plain\f1\fs20\cf1 \'b7\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}All vendor defined extensions must declare the minimum conformance for that extension. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar \sect \sectd \margtsxn2520\psz1\linex0\colsx0 \pard\plain \s24\li864\sb100\sa140\sl-380\slmult0\keepn\widctlpar\tqr\tx432\tx864 \b\f9\fs36\cf1 {\*\bkmkstart _Toc365129140}{\*\bkmkstart _Toc367165402} +Section 6 : {\*\bkmkend _Toc365129140}Extended Recurrence Grammar{\*\bkmkend _Toc367165402} +\par {\pntext\pard\plain\b\v\f5\fs28\kerning28 6.\tab}\pard\plain \s1\sb240\sa60\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f5\fs28\kerning28 {\cs92\b0\v\f8\fs16 {\*\atnid DS}{\*\atnauthor Dave Stuban}\chatn {\*\annotation +\pard\plain \s93\widctlpar \f4\fs20 {\field\flddirty{\*\fldinst PAGE \\# "'Page: '#'\line '"{\cs92\fs16 }}{\fldrslt }}{\cs92\fs16 \chatn } +This entry/line in the section is assigned the style for the level 1 heading. This is done so that a section number can be given in the chapter title (style \ldblquote chptr_title\rdblquote ) and so that \ldblquote heading 1\rdblquote + (more specifically, the format/heading numbering of the form \ldblquote 1. Overview\rdblquote ) can be \ldblquote skipped,\rdblquote and the appropriate form for the next-level of heading can be properly displayed (eg., \ldblquote 1.1 Overview +\rdblquote ). It is, and must be, formatted as \ldblquote hidden text\rdblquote prior to pagination and/or printing.}}{\b0\v \tab \tab }{\v +\par }\pard\plain \widctlpar \f4\fs20 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The material in this section is included in thi +s specification for reference information.It is copied, with permission of the XAPIA, from the XAPIA Calendaring and Sceduling API (CSA) Specification. This section defines an extended recurrence rule grammar that may be useful to implementations wishing +to extend the capability of the basic recurrence rule defined by this specification. The material is equally applicable to extended support of the exception rules for repeating events. +\par {\*\bkmkstart _Toc309468023}{\*\bkmkstart _Toc365129141}{\*\bkmkstart _Toc367165403}{\pntext\pard\plain\b\f9\fs28\cf1 6.1\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Rule Introduction{\*\bkmkend _Toc309468023}{\*\bkmkend _Toc365129141}{\*\bkmkend _Toc367165403} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 a recurrence rule is made up of one or more recurrence {\b frequencies} +. The frequencies express the granularity of the repeating event. The smallest granularity is based on minutes, the largest is based on years. Each frequency is immediately followed by an {\b interval} +. The interval helps to define how often the frequency repeats (daily, every third day, etc): +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Where, where {\b\f3 D} is the Frequency and {\b\f3 2} is the Interval. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 M5\tab Repeat every five minutes + +\par d1\tab Repeat daily +\par d2\tab Repeat every other day +\par d3\tab Repeat every third day +\par W1\tab Repeat weekly +\par W2\tab Repeat every other week +\par W3\tab Repeat every third week +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The meaning of the interval depends on the frequency. As an example, the {\b 5} in {\b\f3 M5} is in minutes while the {\b 3} in {\b d3} is in days. +\par a rule can end with the {\b duration} {\b symbol}, {\b #}, followed by a number. This defines the number of times the repetition occurs (including the first time). +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 #5{\b +\par }\pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Where, {\b\f3 #5} is the Duration. In this example, the event occurs every other day and the duration indicates it occur 5 times. +\par There may be other information between the frequency and the duration that supplements the meaning of the rule: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 1200 1600 #5 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +In this example, the event occurs every other day at 1200 and 1600 for a total of 10 occurrences. The duration controls the number of times the rule occurs. In this case the rule defines two occurrences (1200 and 1600) so a total of 10 (2 x 5) occurrences + are generated. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar a rule can be made up of several recurrence rules: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP6 1+ MO #5 d2 1200 1600 #5 M5 #3 + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 This recurrence rule is made up of three recurrence rules. Every time the first rule executes (every 6 months) i +t executes the next rule to the right. If there is not a rule to the right an event is generated. In this case there is a daily frequency rule to the right of the monthly frequency rule. It executes twice a day; starting on the first Monday of the month. +The daily frequency rule executes a total of ten times. Since there is a rule following the daily rule it executes it each time the daily frequency rule executes. The minute frequency rule is executed three times, every time the daily frequency rule execu +tes, for a total of six times a day. The above rules generate a total of 150 (5 * (2 * 5) * 3) occurrences. An occurrence specifier may be used in some rules. The occurrence specifier controls which occurrence of a weekday in a month an event occurs on: + +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 1{\b +} +, 2+, ... 5+ for the first occurrence, second, ...fifth occurrence of the month. +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 {\b\f3 1-}, {\b\f3 2-}...{\b\f3 5-} for the last occurrence, second to last occurrence, etc. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP2 1+ 2- FR #3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Where, {\b 1+} and {\b 2-} are Occurrence Specifiers. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar This rule defines an event which happens every +other month on the first Friday and second to the last Friday of the month. It generates a total of six occurrences. The end marker symbol $ can be used to terminate a rule early: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 0100$ 0200 0300 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The above rule generates occurrences weekly for 4 weeks at 0100, 0200 and 0300. On the last (fourth week) an event is generated at 0100 only. +\par \pard \s15\li864\sb100\sl-260\slmult0\nowidctlpar Recurrence rules are written from largest granularity to smallest. +\par {\*\bkmkstart _Toc309468024}{\*\bkmkstart _Toc365129142}{\*\bkmkstart _Toc367165404}{\pntext\pard\plain\b\f9\fs28\cf1 6.2\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Grammar{\*\bkmkend _Toc309468024}{\*\bkmkend _Toc365129142}{\*\bkmkend _Toc367165404} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 The following grammar defines the extended recurrence rule syntax. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 \{\}\tab \tab 0 or more +\par []\tab \tab 0 or 1 +\par start\tab \tab ::= <minuteop> [<enddate>] | +\par \tab \tab <daily> [<enddate>] | +\par \tab \tab <weekly> [<enddate>] | +\par \tab \tab <monthlybypos> [<enddate>] | +\par \tab \tab <monthlybyday> [<enddate>] | +\par \tab \tab <yearlybymonth> [<enddate>] | +\par \tab \tab <yearlybyday> [<enddate>] +\par digit ::= <0|1|2|3|4|5|6|7|8|9> +\par digits ::= <digit> \{<digits>\} +\par endmarker\tab ::= $ +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 enddate\tab \tab +::= ISO 8601 (clause 5.4.1) string(e.g. 19940712T101530Z) in UTC +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 interval\tab ::= <digits> +\par duration\tab ::= #<digits> +\par lastday\tab ::= LD +\par plus\tab ::= + +\par minus\tab ::= - +\par daynumber\tab \tab ::= <1-31>[<plus>|<minus>][<endmarker>] | <lastday> +\par daynumberlist\tab ::= daynumber \{<daynumber>\} +\par month\tab \tab \tab ::= <1-12>[<endmarker>] +\par monthlist\tab ::= <month> \{<monthlist>\} +\par day\tab \tab ::= <1-366>[<endmarker>] +\par daylist\tab ::= <day> \{<daylist>\} +\par occurrence\tab ::= <1-5><plus>[<endmarker>] | <1-5><minus>[<endmarker>] +\par occurrencelist \tab ::= <occurrence> \{<occurrencelist>\} +\par weekday \tab ::= <SU|MO|TU|WE|TH|FR|SA>[<endmarker>] +\par weekdaylist \tab ::= <weekday> \{<weekdaylist>\} +\par time\tab \tab ::= <hhmm>[<endmarker>] +\par timelist\tab ::= <time> \{<timelist>\} +\par daytime\tab \tab ::= <weekday> \{<timelist>\} \{<daytime>\} +\par weekdaytime\tab ::= <occurrencelist> <weekdaylist> \{<timelist>\} \{<weekdaytime>\} +\par minuteop\tab ::= M<interval> [<duration>] +\par daily\tab \tab ::= D<interval> [<timelist>] [<duration>] [<minuteop>] +\par weekly\tab ::= W<interval> <daytime> [<duration>] [<minuteop>] +\par \pard \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 monthlybypos\tab +::= MP<interval> [<weekdaytime>] [<duration>][<weekly> | <daily> | <minuteop>] +\par monthlybyday\tab ::= MD<interval> [<daynumberlist>] [<duration>] [<weekly> | <daily> | <minuteop>] +\par yearlybymonth\tab ::= YM<interval> [<monthlist>] [<duration>] [<monthlybyday> | <monthlybypos> | <weekly> | <daily> | <minuteop>] +\par yearlybyday\tab ::= YD<interval> [<daylist>] [<duration>] [<monthlybyday> | <monthlybypos> | <weekly> | <daily> | <minuteop>] +\par {\*\bkmkstart _Toc309468025}{\*\bkmkstart _Toc365129143}{\*\bkmkstart _Toc367165405}{\pntext\pard\plain\b\f9\fs28\cf1 6.3\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Glossary{\*\bkmkend _Toc309468025}{\*\bkmkend _Toc365129143}{\*\bkmkend _Toc367165405} +\par \pard\plain \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 enddate\tab Controls when a repeating event terminates. The enddate is the last time an event can occur. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar enddate\tab Controls when a repeating event terminates. +\par interval\tab Defines the frequency in which a rule repeats. +\par duration\tab Controls the number of occurrences a rule generates. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar lastday\tab Can be used as a replacement to daynumber to indicate the last day of the month. +\par \pard \s15\fi-1224\li2088\sb100\sl-260\slmult0\nowidctlpar daynumber\tab a number representing a day of the month. +\par month\tab a number representing a month of the year. +\par day\tab a number representing a day of the year. +\par occurrence\tab Controls which week of the month a particular weekday event occurs. +\par weekday\tab a symbol representing a day of the week. +\par time\tab The time in hours and minutes using a 24 hour clock. +\par daytime\tab Controls which days (and hours) of the week a weekly event occurs. +\par weekdaytime\tab Used in monthly occurrences to specify which weeks and days an event occurs. +\par minuteop\tab Defines a rule that repeats on a particular minute interval. +\par daily\tab Defines a rule that repeats on a daily basis. +\par weekly\tab Defines a rule that repeats on a weekly basis. +\par monthlybypos\tab Defines a rule that repeats on a monthly basis on a relative day and week. +\par monthlybyday\tab Defines a rule that repeats on a monthly basis on an absolute \tab day. +\par yearlybymonth\tab Defines a rule that repeats on specific months of the year. +\par yearlybyday\tab Defines a rule that repeats on specific days of the year. +\par {\*\bkmkstart _Toc309468026}{\*\bkmkstart _Toc365129144}{\*\bkmkstart _Toc367165406}{\pntext\pard\plain\b\f9\fs28\cf1 6.4\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Policies{\*\bkmkend _Toc309468026}{\*\bkmkend _Toc365129144}{\*\bkmkend _Toc367165406} +\par {\pntext\pard\plain\f8\fs20\cf1 1.\tab}\pard\plain \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\f8\fs20\cf1 Th +e duration portion of a rule defines the total number of occurrences the rule generates, including the first event. As an example, the rule {\b\f3 MP1 #3 W1 #3} + starting on 1/1/94 would generate occurrences on 1/1/94, 1/8, 1/15, 2/5/94, 2/12, 2/19, 3/5/94, 3/12, 3/19. +\par {\pntext\pard\plain\f8\fs20\cf1 2.\tab}The duration granularity is defined by the recurrence frequency immediately preceding the duration portion of the rule. For example, {\b\f3 d1 #5 M15 #4} + establishes a repeating event which happens for five days, four times per day. +\par {\pntext\pard\plain\f8\fs20\cf1 3.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}Information, not contain +ed in the rule, necessary to determine the next event time and date is derived from the event start time. +\par {\pntext\pard\plain\f8\fs20\cf1 4.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If no specific time is indicated in the recurrence rule it is taken from the event. +\par {\pntext\pard\plain\f8\fs20\cf1 5.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +If an end date and a duration for the first rule in a nested rule are specified in the rule, then the recurring event ceases when the end date is reached or the number of occurrences indicated in the duration occur; whichever comes first. +\par {\pntext\pard\plain\f8\fs20\cf1 6.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If the duration or and end date is not established in the rule (e.g. ``D2'') the +event occurs twice. That is {\b\f3 d2} is equivalent to {\b\f3 d2 #2}. +\par {\pntext\pard\plain\f8\fs20\cf1 7.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +If an endmark is used in a second or later rule of a nested rule, then the endmark is applied each time that rule is executed by the previous rule. {\b\f3 YM1 1 6 #1 MD1 7$ 14} generates occurrences on 1/7 1/14 2/7 6/7 6/14 7/7. +\par {\pntext\pard\plain\f8\fs20\cf1 8.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If an endmark is used on a day of the week which is followed by several times ({\b\f3 +TU$ 1200 1300}) or an endmark is used on a week occurrence that is followed by several weekdays ({\b\f3 1+$ TU WE}) the repeating event stops after the last time or week day in the list is executed. +\par {\pntext\pard\plain\f8\fs20\cf1 9.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +If a rule has an ambiguity with respect to whether it will repeat on a specific day (12th of the month) vs on a relative day (2nd Friday of the month), the specific day takes precedence. The only exception to this policy is policy 14. +\par {\pntext\pard\plain\f8\fs20\cf1 10.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}A duration of {\b\f3 #0} means repeat this event forever. +\par {\pntext\pard\plain\f8\fs20\cf1 11.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}Nested rules can not have a duration of 0. These are not allowed: \line \line \tab {\b\f3 +YM1 6 #10 MP1 1+ SA #0}\line \tab {\b\f3 d5 0600 0800 #5 M5 #0} +\par {\pntext\pard\plain\f8\fs20\cf1 12.\tab}Using the occurrence specifier {\b\f3 5+} (e.g. 5th Friday) or {\b\f3 5}- (e.g. 5th from la +st Friday) in a month that does not contain 5 weeks does not generate an event and thus does not count against the duration. The same applies to providing a day of the month that does not occur in the month: 31st. +\par {\pntext\pard\plain\f8\fs20\cf1 13.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +The start time and date of an event must be in-sync with one of the event slots defined by its ocurrence rule. The following are not allowed:\line \line \tab Initial Appt Time:\tab {\b\f3 1300}\line \tab Recurrence Rule:\tab {\b\f3 \tab d1 1400 #5}\line +\tab Initial Appt Date:\tab 7/1/94 (Friday)\line \tab Recurrence Rule:\tab \tab {\b\f3 W1 MO TH #5}\line \line The following are acceptable:\line \line \tab Initial Appt Time:\tab {\b\f3 1300}\line \tab Recurrence Rule:\tab {\b\f3 \tab d1 #5} or {\b\f3 +d1 1300 #5}\line \tab Initial Appt Date:\tab 7/1/94 (Friday)\line \tab Recurrence Rule:\tab \tab {\b\f3 W1 MO FR #5} or {\b\f3 W1 #5} +\par {\pntext\pard\plain\f8\fs20\cf1 14.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}If the optional {\b\f3 <weekdaytime>} information is missing from a {\b\f3 <monthlybypos>} + frequency, the information is derived from the initial event. The {\b\f3 <occurrence>} used in the recurring event is a count from the beginning of the month to the event date and the {\b\f3 <weekday>} + used is the day of the week the initial event is scheduled to occur on. If the {\b\f3 <monthlybypos>} frequency does not list a week day (e.g. {\b\f3 SU} +) in the rule, then the week day is established from the initial event information. As an example, the rule {\b\f3 MP1 #3} + used in an event with a start date of 7/20/94 (which is the third Wed of the month) will repeat on 8/17/94 which is the third Wed of the month. +\par {\pntext\pard\plain\f8\fs20\cf1 15.\tab}\pard \s15\fi-360\li1224\sb100\sl-260\slmult0\nowidctlpar{\*\pn \pnlvlbody\pndec\pnstart1\pnindent360\pnhang{\pntxta .}} +The next event of a higher order rule does not execute until all the occurrences of a subrule are generated. If the next event of a higher order rule comes earlier in time than the last event of a subrule then the missed occurre +nces are not generated. In other words, subrules can not interleave occurrences with other subrules. The following results in indeterminate results because the minute subrule which begins to execute at 0630 generates occurrences beyond 0700 which is when +the daily subrule begins executing again:\line \line \tab {\b\f3 d1 0630 0700 #4 M45 #5}\line \line Another incorrect rule: \line \line \tab {\b\f3 MP1 1+ 1- #3 W2 TU TH #5} +\par \pard\plain \widctlpar \f4\fs20 +\par {\*\bkmkstart _Toc309468027}{\*\bkmkstart _Toc365129145}{\*\bkmkstart _Toc367165407}{\pntext\pard\plain\b\f9\fs28\cf1 6.5\tab}\pard\plain \s2\sb380\sa160\sl-320\slmult0\keepn\nowidctlpar\tqr\tx432\tx864{\*\pn \pnlvl2\pndec\pnprev1\pnstart1\pnsp144 } +\b\f9\fs28\cf1 Examples{\*\bkmkend _Toc309468027}{\*\bkmkend _Toc365129145}{\*\bkmkend _Toc367165407} +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Hourly for 12 hours (12:00, 1:00,...10:00, 11:00): +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 M60 #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every 5 minutes for 1 hour (1:00, 1:05, 1:10,...1:50, 1:55): +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 M5 #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Daily, for 5 days: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d1 #5 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Daily, for 5 days repeating at 10 minute intervals for 1 hour. e.g. 6/1 at 12:00, 12:10, 12:20, ... 12:50; 6/2 at 12:00, 12:10, ... +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d1 #5 M10 #6 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other day, two times: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other day at 6aM, 12noon and 3PM for a duration of two occurrences (span of three days). e.g. 6/1/94 at 6, 12 and 3PM and 6/3/94 at 6, 12 and 3PM. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 0600 1200 1500 #2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other day at 6aM, 12noon and 3PM for a duration of three occurrences (a span of 5 days) stopping at noon on the fifth day. +e.g. 6/1/94 at 6, 12, and 3, 6/3/94 at 6, 12 and 3 and 6/5/94 at 6 and 12. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d2 0600 1200$ 1500 #3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly at 6 AM (repeat every 15 minutes for an hour) for five weeks. e.g. 6:00, 6:15, 6:30, 6:45 on 6/1, 6/8, 6/15, 6/22 and 6/29. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d7 0600 #5 M15 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly at 6 AM (repeat every 15 minutes for an hour) for four weeks stopping at 6aM on the last event day. e.g. 6:00, 6:15, 6:30, 6:45 on 6/1, 6/8, 6/15 and 6:00 on 6/22. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d7 0600$ #4 M15 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly at 6 AM (repeat every 15 minutes for an hour) for 1 week stopping at 6:45aM. e.g. 6:00, 6:15, 6:30, 6:45 on 6/1. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 d7 0600 #1 M15 #4 or +\par d7 #1 M15 #4 /* start time defined in appt entry */ or +\par M15 #4 /* start time defined in appt entry */ +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly for four weeks: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Biweekly on Monday and Tuesday for 2 occurrences ending on a Monday: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W2 MO$ TU #2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly on Tuesday and Thursday at the time specified in the appt and repeated at time + 5 minutes: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 TU TH #3 M5 #2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly on Tuesday at 1200 and 1230 and Thursday at 1130 and 1200 for 10 weeks: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 TU 1200 TH 1130 #10 M30 or +\par W1 TU 1200 1230 TH 1130 1200 #10 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly on Tuesday at 1200 and 1230 and Thursday at 1130 and 1200 for 10 weeks stopping on the last TU at 1230: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 TU$ 1200 TH 1130 #10 M30 or +\par W1 TU$ 1200 1230 TH 1130 1200 #10 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Weekly on Tuesday at 1200 and 1230 and Thursday at 1130 and 1200 for 10 weeks stopping on the last Tuesday at 1200: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 W1 TU 1200$ 1230 TH 1130 1200 #10 + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Monthly for 1 year: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP1 #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other month on the first and last Friday of the month for 5 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP2 1+ 1- FR #3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Monthly on the second to the last day of the month for 5 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MD1 2- #5 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Monthly on the second to the last Monday of the month for 6 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP1 2- MO #6 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Monthly on the third to the last day of the month for forever: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MD1 3- #0 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Monthly on the seventh to the last day of the month for 12 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MD1 7- #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other month on the first and last Friday of the month for 5 months stopping on the first Friday in the fifth month: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP2 1+$ 1- FR #3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every six months on the first Monday of the month (repeat for 5 days) for 24 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP6 1+ MO #5 d1 #5 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every six months on the first Monday of the month (repeat every other day at 0600, 1200 and 1500 for 20 days) for 24 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP6 1+ MO #5 d2 0600 1200 1500 #10 + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every six months on the first Monday of the month (repeat every other day at 0600, 1200 and 1500 for 20 days (repeat every 5 minutes for 3 times)) for 24 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +MP6 1+ MO #5 d2 0600 1200 1500 #10 M5 #3 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every six months on the first Monday of the month and the second to last Thursday of the month (repeat five minutes later) for 24 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MP6 1+ MO 2- TH #5 M5 #2 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every six months on the first SU and MO at Noon, the second TU and WE at 1:00PM and the third TH and FR at 2:00PM: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +MP6 1+ SU MO 1200 2+ TU WE 1300 3+ TH FR 1400 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every month on the 7th for 12 months: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MD1 7 #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every month on the 7th, 14th, 21st, 28th for 12 months +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 MD1 7 14 21 28 #12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every month on the 10th and 20th for 24 months - daily for 5 days at 0600, 1200 and 1600 - every 15 minutes for an hour: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +MD1 10 20 #24 d1 0600 1200 1600 #5 M15 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 1st, 6th and 12 month on the first Monday and last Friday of the month: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YM1 1 6 12 #5 MP1 1+ MO 1- FR +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Every other year on the 6th month (on the 12th day) for 5 years. +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YM2 6 #3 MD1 12 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 7th 14th 21st and 28th of the 1st 3rd and 8th month and on the 7th and 14th of the 2nd, 4th and 9th months ending on the 4th month, 14th day of the 5th year: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YM1 1 3$ 8 #5 MD1 7 14$ 21 28 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 6th, 9th and 10th month on all weekends of the month: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 +YM1 6 9 10 #10 MP1 1+ 2+ 3+ 4+ 1- SA SU #1 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 6th month for 10 years, weekly on Tuesday and Thursday at 1100 and 1300 for 4 weeks: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YM1 6 #10 W1 TU TH 1100 1300 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 1st, 100th, 200th and 300th day for 4 years: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YD1 1 100 200 300 #4 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 1st - 5th days and 100th - 104th days: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YD1 1 100 #5 d1 #5 +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 Yearly on the 1st - 5th days and 100th - 104th days stopping on 1/2/99: +\par \pard\plain \s25\li1224\sb100\sl-200\slmult0\nowidctlpar\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640 \f3\fs16\cf1 YD1 1 100 d1 #5 19990102T000000Z + +\par \pard\plain \s15\li864\sb100\sl-260\slmult0\nowidctlpar \f8\fs20\cf1 +\par }
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/fail/forcepoint-5.rtf b/sw/qa/core/data/rtf/fail/forcepoint-5.rtf new file mode 100644 index 000000000..ce50256b8 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/forcepoint-5.rtf @@ -0,0 +1,1592 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Bookman Old Style};}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Tahoma};}
+{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New{\*\falt Courier New};}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings{\*\falt Symbol};}
+{\f35\fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}Arial Unicode MS{\*\falt Tahoma};}{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f38\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}
+{\f40\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond{\*\falt Times New Roman};}{\f41\fswiss\fcharset128\fprq2{\*\panose 020b0604020202020204}@Arial Unicode MS;}
+{\f2497\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Bookman Old Style};}{\f2498\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Bookman Old Style};}{\f2500\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Bookman Old Style};}
+{\f2501\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Bookman Old Style};}{\f2502\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Bookman Old Style};}
+{\f2503\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Bookman Old Style};}{\f2504\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Bookman Old Style};}
+{\f2505\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Bookman Old Style};}{\f2507\fswiss\fcharset238\fprq2 Arial CE{\*\falt Tahoma};}{\f2508\fswiss\fcharset204\fprq2 Arial Cyr{\*\falt Tahoma};}
+{\f2510\fswiss\fcharset161\fprq2 Arial Greek{\*\falt Tahoma};}{\f2511\fswiss\fcharset162\fprq2 Arial Tur{\*\falt Tahoma};}{\f2512\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt Tahoma};}
+{\f2513\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt Tahoma};}{\f2514\fswiss\fcharset186\fprq2 Arial Baltic{\*\falt Tahoma};}{\f2515\fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt Tahoma};}
+{\f2517\fmodern\fcharset238\fprq1 Courier New CE{\*\falt Courier New};}{\f2518\fmodern\fcharset204\fprq1 Courier New Cyr{\*\falt Courier New};}{\f2520\fmodern\fcharset161\fprq1 Courier New Greek{\*\falt Courier New};}
+{\f2521\fmodern\fcharset162\fprq1 Courier New Tur{\*\falt Courier New};}{\f2522\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew){\*\falt Courier New};}{\f2523\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic){\*\falt Courier New};}
+{\f2524\fmodern\fcharset186\fprq1 Courier New Baltic{\*\falt Courier New};}{\f2525\fmodern\fcharset163\fprq1 Courier New (Vietnamese){\*\falt Courier New};}{\f2849\fswiss\fcharset0\fprq2 Arial Unicode MS Western{\*\falt Tahoma};}
+{\f2847\fswiss\fcharset238\fprq2 Arial Unicode MS CE{\*\falt Tahoma};}{\f2848\fswiss\fcharset204\fprq2 Arial Unicode MS Cyr{\*\falt Tahoma};}{\f2850\fswiss\fcharset161\fprq2 Arial Unicode MS Greek{\*\falt Tahoma};}
+{\f2851\fswiss\fcharset162\fprq2 Arial Unicode MS Tur{\*\falt Tahoma};}{\f2852\fbidi \fswiss\fcharset177\fprq2 Arial Unicode MS (Hebrew){\*\falt Tahoma};}{\f2853\fbidi \fswiss\fcharset178\fprq2 Arial Unicode MS (Arabic){\*\falt Tahoma};}
+{\f2854\fswiss\fcharset186\fprq2 Arial Unicode MS Baltic{\*\falt Tahoma};}{\f2855\fswiss\fcharset163\fprq2 Arial Unicode MS (Vietnamese){\*\falt Tahoma};}{\f2856\fswiss\fcharset222\fprq2 Arial Unicode MS (Thai){\*\falt Tahoma};}
+{\f2857\fswiss\fcharset238\fprq2 Tahoma CE;}{\f2858\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f2860\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f2861\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f2862\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}
+{\f2863\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f2864\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f2865\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f2866\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f2877\fswiss\fcharset238\fprq2 Verdana CE;}
+{\f2878\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f2880\fswiss\fcharset161\fprq2 Verdana Greek;}{\f2881\fswiss\fcharset162\fprq2 Verdana Tur;}{\f2884\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f2885\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}
+{\f2897\froman\fcharset238\fprq2 Garamond CE{\*\falt Times New Roman};}{\f2898\froman\fcharset204\fprq2 Garamond Cyr{\*\falt Times New Roman};}{\f2900\froman\fcharset161\fprq2 Garamond Greek{\*\falt Times New Roman};}
+{\f2901\froman\fcharset162\fprq2 Garamond Tur{\*\falt Times New Roman};}{\f2904\froman\fcharset186\fprq2 Garamond Baltic{\*\falt Times New Roman};}{\f2909\fswiss\fcharset0\fprq2 @Arial Unicode MS Western;}
+{\f2907\fswiss\fcharset238\fprq2 @Arial Unicode MS CE;}{\f2908\fswiss\fcharset204\fprq2 @Arial Unicode MS Cyr;}{\f2910\fswiss\fcharset161\fprq2 @Arial Unicode MS Greek;}{\f2911\fswiss\fcharset162\fprq2 @Arial Unicode MS Tur;}
+{\f2912\fbidi \fswiss\fcharset177\fprq2 @Arial Unicode MS (Hebrew);}{\f2913\fbidi \fswiss\fcharset178\fprq2 @Arial Unicode MS (Arabic);}{\f2914\fswiss\fcharset186\fprq2 @Arial Unicode MS Baltic;}
+{\f2915\fswiss\fcharset163\fprq2 @Arial Unicode MS (Vietnamese);}{\f2916\fswiss\fcharset222\fprq2 @Arial Unicode MS (Thai);}}{\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;
+\red10\green87\blue164;}{\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{
+\s1\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 1;}{
+\s2\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{
+\s3\qr \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{
+\s4\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 4;}{
+\s5\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs18\alang1025 \ltrch\fcs0 \b\f1\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 5;}{
+\s6\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 6;}{
+\s7\qr \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\expnd1\expndtw6\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 7;}{
+\s8\qj \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af40\afs20\alang1025 \ltrch\fcs0 \b\scaps\f40\fs20\expnd1\expndtw6\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0
+heading 8;}{\s9\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\expnd1\expndtw6\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0
+heading 9;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\áspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs28\alang1025 \ltrch\fcs0 \b\fs28\expnd1\expndtw6\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text 2;}{\*\cs16 \additive
+\rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s17\ql \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033
+\sbasedon0 \snexp17 footer;}{\s18\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 Body Text;}{
+\s19\qj \fi720\li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 Body Text Indent 2;}{
+\s20\qj \fi720\li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 Body Text Indent 3;}{
+\s21\qc \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 Body Text 3;}{\s22\ql \li0\ri0\nowidctlpar
+\tqc\tx4153\tqr\tx8306\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 header;}{
+\s23\ql \li720\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\scaps\fs20\expnd1\expndtw6\lang1033\langfe1033\kerning20\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Style1;}{
+\s24\ql \li1440\ri1440\sa120\nowidctlpar\wrapdefault\faauto\adjustright\rin1440\lin1440\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Block Text;}{
+\s25\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \sbasedon0 \snext25 \ssemihidden annotation text;}{\*\cs26 \additive
+\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\s27\qc \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext27 Title;}{\s28\qc \li0\ri0\sl360\slmult1\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 Subtitle;}{\*
+\cs29 \additivm \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf12 \sbasedon10 FollowedHyperlink;}{\s30\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 \ssemihidden footnote text;}{\*\cs31 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{
+\s32\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af35\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f35\hich\af0\dbch\af0\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext32 Normal (Web);}{\*\cs33 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Strong;}{\s34\qr \li0\ri0\widctlpar\tx4860\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af38\afs18\alang1025
+\ltrch\fcs0 \b\i\f38\fs18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \ssemihidden caption;}{\s35\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0
+\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext35 HTML Body;}{\s36\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af36\afs16\alang1025 \ltrch\fcs0
+\b\scaps\f36\fs16\expnd1\expndtw6\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 \ssemihidden Balloon Text;}{\s37\ql \li360\ri0\sa120\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs20\alang1025
+\ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 \styrsid8272901 Body Text Indent;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid539648306\listhybrid{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers
+;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120
+\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }
+{\listname ;}\listid127818721}{\list\listtemplateid20847152\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat5\levelspace0\levelindent0{\leveltext\leveltemplateid502710112\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1
+\af0 \ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880
+\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600
+\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320
+\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040
+\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760
+\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480
+\jclisttab\tx6480\lin6480 }{\listname ;}\listid214512989}{\list\listtemplateid312091822{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace2526\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs22\fbias0
+\fi-360\li2886\jclisttab\tx2886\lin2886 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3246\jclisttab\tx3246\lin3246 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li3966\jclisttab\tx3966\lin3966 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li4686\jclisttab\tx4686\lin4686 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0
+{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5406\jclisttab\tx5406\lin5406 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0
+\fi-360\li6126\jclisttab\tx6126\lin6126 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li6846\jclisttab\tx6846\lin6846 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li7566\jclisttab\tx7566\lin7566 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace720\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li8286\jclisttab\tx8286\lin8286 }{\listname ;}\listid421142442}{\list\listtemplateid-450620742\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lan1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5400
+\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid539628384}
+{\list\listtemplateid-713803268\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace-342\levelindent0{\leveltext\leveltemplateid-681662052\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-360\li18\jclisttab\tx18\lin18 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat4\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}
+\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1062\jclisttab\tx1062\lin1062 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698703
+\'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1764\jclisttab\tx1764\lin1764 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698713\'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li2106\jclisttab\tx2106\lin2106 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li2808\jclisttab\tx2808\lin2808 }{\listlevel
+\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fbias0 \fi-1800\li3510\jclisttab\tx3510\lin3510 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698713
+\'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1800\li3852\jclisttab\tx3852\lin3852 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-2160\li4554\jclisttab\tx4554\lin4554 }
+{\listname ;}\listid568922897}{\list\listtemplateid143408730\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}
+\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800
+\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid663819648}{\list\listtemplateid1984051326\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers
+;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960
+\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid743644910}{\list\listtemplateid-435649510\listhybrid
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers
+;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120
+\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }
+{\listname ;}\listid1179538873}{\list\listtemplateid-179118848\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1053735224\'01\u-3937 ?;}{\levelnumbers;}
+\b0\i0\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440
+\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1436247790}{\list\listtemplateid515664068\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid67698703\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1668820509}{\list\listtemplateid-801836370\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace2526\levelindent0{\leveltext\leveltemplateid-1748868270\'01\u-3929 ?;}{\levelnumbers;}\f10\fs22\fbias0 \fi-360\li2886\jclisttab\tx2886\lin2886 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3246\jclisttab\tx3246\lin3246 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720
+\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li3966\jclisttab\tx3966\lin3966 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li4686\jclisttab\tx4686\lin4686 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5406\jclisttab\tx5406\lin5406 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li6126\jclisttab\tx6126\lin6126 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li6846
+\jclisttab\tx6846\lin6846 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li7566\jclisttab\tx7566\lin7566 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li8286\jclisttab\tx8286\lin8286 }{\listname ;}\listid1687292958}
+{\list\listtemplateid-1116811606\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080
+\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid1741126596}{\list\listtemplateid-246638676\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid67698695\'01\u-3983 ?;}{\levelnumbers;}\f10\fs16\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\leveìindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers
+;}\f3\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3960
+\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid1767068139}{\list\listtemplateid-1800520248\listhybrid
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid1053735224\'01\u-3937 ?;}{\levelnumbers;}\b0\i0\f10\fs20\fbias0 \fi-360\li4953\jclisttab\tx4953\lin4953 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li4233\jclisttab\tx4233\lin4233 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4953\jclisttab\tx4953\lin4953 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5673\jclisttab\tx5673\lin5673 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800
+\levelindent0{\leveltext\leveltemplateid1053735224\'01\u-3937 ?;}{\levelnumbers;}\b0\i0\f10\fs20\fbias0 \fi-360\li6393\jclisttab\tx6393\lin6393 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0
+{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li7113\jclisttab\tx7113\lin7113 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li7833\jclisttab\tx7833\lin7833 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li8553\jclisttab\tx8553\lin8553 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1800\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li9273\jclisttab\tx9273\lin9273 }{\listname ;}\listid1784184824}{\list\listtemplateid-388573786\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid-717046610\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1865244053}{\list\listtemplateid-650507270\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid-1748868270\'01\u-3929 ?;}{\levelnumbers;}\f10\fs22\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720
+\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5760
+\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace720\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li7200\jclisttab\tx7200\lin7200 }{\listname ;}\listid2128890483}}
+{\*\listoverridetable{\listoverride\listid663819648\listoverridecount0\ls1}{\listoverride\listid1179538873\listoverridecount0\ls2}{\listoverride\listid743644910\listoverridecount0\ls3}{\listoverride\listid1767068139\listoverridecount0\ls4}
+{\listoverride\listid539628384\listoverridecount0\ls5}{\listoverride\listid1741126596\listoverridecount0\ls6}{\listoverride\listid127818721\listoverridecount0\ls7}{\listoverride\listid568922897\listoverridecount0\ls8}{\listoverride\listid1668820509
+\listoverridecount0\ls9}{\listoverride\listid2128890483\listoverridecount0\ls10}{\listoverride\listid1784184824\listoverridecount0\ls11}{\listoverride\listid214512989\listoverridecount0\ls12}{\listoverride\listid1865244053\listoverridecount0\ls13}
+{\listoverride\listid1687292958\listoverridecount0\ls14}{\listoverride\listid421142442\listoverridecount0\ls15}{\listoverride\listid1436247790\listoverridecount0\ls16}}{\*\rsidtbl \rsid26759\rsid28616\rsid75403\rsid134811\rsid146826\rsid155967\rsid264943
+\rsid270307\rsid281527\rsid286465\rsid287436\rsid289222\rsid333582\rsid395210\rsid414118\rsid488832\rsid555479\rsid602934\rsid610421\rsid615772\rsid667022\rsid799562\rsid816563\rsid864618\rsid929599\rsid945780\rsid985131\rsid1063671\rsid1073606
+\rsid1191619\rsid1201935\rsid1202825\rsid1209698\rsid1246170\rsid1248058\rsid1262953\rsid1268292\rsid1272433\rsid1274673\rsid1387812\rsid1390258\rsid1577179\rsid1593528\rsid1713643\rsid1716735\rsid1728482\rsid1772020\rsid1775250\rsid1785391\rsid1798659
+\rsid1836351\rsid1976101\rsid1984492\rsid1987333\rsid1997454\rsid2034882\rsid2121409\rsid2121617\rsid2185052\rsid2246154\rsid2251815\rsid2254469\rsid2315449\rsid2360327\rsid2371120\rsid2379844\rsid2427470\rsid2452015\rsid2561378\rsid2579474\rsid2633004
+\rsid2647941\rsid2705025\rsid2757930\rsid2764494\rsid2771735\rsid2772430\rsid2781415\rsid2822846\rsid2834487\rsid2844513\rsid2886345\rsid2899381\rsid2904069\rsid2954085\rsid3101563\rsid3146559\rsid3147258\rsid3154072\rsid3154754\rsid3178069\rsid3229857
+\rsid3235646\rsid3243354\rsid3301198\rsid3306077\rsid3366227\rsid3611695\rsid3672735\rsid3675927\rsid3697359\rsid3804795\rsid3804835\rsid3812816\rsid3879022\rsid3885055\rsid3899021\rsid3999025\rsid4004850\rsid4087648\rsid4195401\rsid4214345\rsid4268775
+\rsid4393400\rsid4414221\rsid4467158\rsid4522114\rsid4541710\rsid4604693\rsid4618610\rsid4678097\rsid4723716\rsid4744121\rsid4796198\rsid4855804\rsid4864801\rsid4865111\rsid4867759\rsid4931849\rsid4933319\rsid4943213\rsidt981193\rsid4991103\rsid5005335
+\rsid5058746\rsid5068125\rsid5114403\rsid5129227\rsid5129603\rsid5130321\rsid5133314\rsid5180836\rsid5201695\rsid5251252\rsid5258569\rsid5262455\rsid5263184\rsid5264698\rsid5310875\rsid5321359\rsid5328&78\rsid5336596\rsid5339671\rsid5386634\rsid5396962
+\rsid5400301\rsid5516326\rsid5532158\rsid5583032\rsid5656812\rsid5664358\rsid5707969\rsid5716894\rsid5722401\rsid5785827\rsid5794411\rsid5905054\rsid5921211\rsid5930454\rsid5994283\rsid6031828\rsid6033976\rsid6054369\rsid6057277\rsid6170150\rsid6240390
+\rsid6293962\rsid6311125\rsid6368143\rsid6376669\rsid6424185\rsid6438852\rsid6497574\rsid6572897\rsid6689699\rsid6693644\rsid6751174\rsid6819638\rsid6844372\rsid6910836\rsid6912907\rsid6953049\rsid6956210\rsid7089908\rsid7095472\rsid7222916\rsid7229073
+\rsid7240575\rsid7353182\rsid7357102\rsid7367960\rsid7368421\rsid7413134\rsid7417745\rsid7418576\rsid7434485\rsid7436964\rsid7473012\rsid7478442\rsid7487981\rsid7489751\rsid7550404\rsid7674260\rsid7817325\rsid7865776\rsid8061541\rsid8080800\rsid8133178
+\rsid8143323\rsid8143470\rsid8145478\rsid8192865\rsid8259022\rsid8272901\rsid8285192\rsid8348580\rsid8397426\rsid8401384\rsid8420091\rsid8459648\rsid8468752\rsid8479338\rsid8521417\rsid8522924\rsid8538848\rsid8546900\rsid8588708\rsid8603364\rsid8607637
+\rsid8661542\rsid8719427\rsid8738592\rsid8744768\rsid8807108\rsid8867095\rsid8930089\rsid8940035\rsid8982969\rsid8997655\rsid9002705\rsid9063649\rsid9065197\rsid9066479\rsid9075875\rsid9110392\rsid9137385\rsid9206340\rsid9247518\rsid9248631\rsid9392618
+\rsid9395995\rsid9449077\rsid9456836\rsid9467052\rsid9504552\rsid9574070\rsid9584698\rsid9643230\rsid9646486\rsid9709860\rsid9714807\rsid9719907\rsid9726980\rsid9728436\rsid9767271\rsid9769638\rsid9782058\rsid9787082\rsid9792862\rsid9794205\rsid9794785
+\rsid9915286\rsid9926745\rsid10028759\rsid10112182\rsid10158331\rsid10180265\rsid10185589\rsid10248828\rsid10250969\rsid10297647\rsid10384540\rsid10386849\rsid10436937\rsid10442079\rsid10450314\rsid10496633\rsid10508364\rsid10564882\rsid10575600
+\rsid10631265\rsid10748880\rsid10750303\rsid10818152\rsid10818762\rsid10819526\rsid10824772\rsid10830825\rsid10899534\rsid10951840\rsid11037905\rsid11080070\rsid11103769\rsid11163533\rsid11165615\rsid11212399\rsid11277292\rsid11293211\rsid11418239
+\rsid11422380\rsid11605596\rsid11685808\rsid11731178\rsid11737917\rsid11928588\rsid11930311\rsid11939433\rsid11939860\rsid11960203\rsid12021807\rsid12065673\rsid12074412\rsid12079283\rsid12087703\rsid12127082\rsid12131102\rsid12192029\rsid12221531
+\rsid12260513\rsid12352825\rsid12466286\rsid12536830\rsid12538847\rsid12541697\rsid12596774\rsid12666606\rsid12736183\rsid12740744\rsid12745600\rsid12811248\rsid12869152\rsid12922564\rsid12923216\rsid12936069\rsid12990074\rsid13126735\rsid13183930
+\rsid13192467\rsid13198689\rsid13309796\rsid13313547\rsid13315595\rsid13320374\rsid13331667\rsid13335765\rsid13375116\rsid13375264\rsid13400122\rsid13436565\rsid13461277\rsid13596714\rsid13637079\rsid13658525\rsid13710525\rsid13726219\rsid13765430
+\rsid13772991\rsid13843264\rsid13905426\rsid13915130\rsid13925404\rsid13976978\rsid14027438\rsid14034230\rsid14037208\rsid14038760\rsid14040841\rsid14119491\rsid14171442\rsid14225213\rsid14232219\rsid14247464\rsid14307900\rsid14373447\rsid14426053
+\rsid14428890\rsid14503018\rsid14512084\rsid14560125\rsid14560521\rsid14562350\rsid14567572\rsid14615334\rsid14631490\rsid14688377\rsid14700209\rsid14705467\rsid14755542\rsid14755618\rsid14762075\rsid14827979\rsid14896646\rsid14905230\rsid14944225
+\rsid14973090\rsid15012030\rsid15013036\rsid15014558\rsid15074687\rsid15089626\rsid15097552\rsid15099923\rsid15101510\rsid15105734\rsid15154965\rsid15206029\rsid15222765\rsid15341064\rsid15341501\rsid15350518\rsid15483669\rsid15537423\rsid15601145
+\rsid15608407\rsid15610246\rsid15615127\rsid15620604\rsid15629770\rsid15685277\rsid15687754\rsid15817724\rsid15824337\rsid15860268\rsid15872134\rsid15886311\rsid16009103\rsid16057682\rsid16083596\rsid16139185\rsid16254539\rsid16272378\rsid16272436
+\rsid16280912\rsid16344029\rsid16399507\rsid16404245\rsid16413009\rsid16596241\rsid16676228\rsid16725317}{\*\generator Microsoft Word 11.0.8106;}{\info{\title }{\author eceanga}{\keywords de si pentru anexa se }
+{\doccomm 13. Infrastructura de cercetare: 13. Infrastructura de cercetareLISTA DE VERIFICARE Locul de munca: DE IMPORTANTA MAJORA.}{\operator Michael R\'fc\'df}{\creatim\yr2006\mo10\dy23\hr13\min32}
+{\revtim\yr2006\mo10\dy23\hr13\min32}{\printim\yr2006\mo7\dy23\hr16\min9}{\version2}{\edmins0}{\nofpages1}{\nofwords124}{\nofchars785}{\*\company emae}{\nofcharsws908}{\vern24611}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/of
+fice/word/2003/wordml}}\paperw11907\paperh16840\margl432\margr432\margt720\margb720\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\hyphhotz425\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc
+\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace57\dgvspace180\dghorigin432\dgvorigin720\dghshow1\dgvshow2
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rsidroot16596241\viewbksp1 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\enforceprot1\protlevel2
+{\*\background {\shp{\*\shpinst\shpleft0\shptop0\shpright0\shpbottom0\shpfhdr0\shpbxmargin\shpbxignore\shpbymargin\shpbyignore\shpwr0\shpwrk0\shpfblwtxt1\shpz0\shplid1025{\sp{\sn shapeType}{\sv 1}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn fFilled}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn fLine}{\sv 0}|{\sp{\sn bWMode}{\sv 9}}{\sp{\sn fBackground}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}}{\*\ftnsep \ltrpar \pard\plain \ltrpar
+\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8133178 \chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\insrsid8133178 \chftnsepc
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\insrsid8133178 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\insrsid8133178 \chftnsepc
+\par }}\ltrpar \sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri360\nowidctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin360\lin0\itap0
+\rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\rtlch\fcs1 \ai\af38\afs16 \ltrch\fcs0 \i\f38\fs16\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid11163533
+La competitiile CNCSIS pot participa numai cetatenii romani}{\rtlch\fcs1 \ai\af0\afs18 \ltrch\fcs0 \i\fs18\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981 .}{\rtlch\fcs1 \ai\af0\afs18 \ltrch\fcs0
+\i\fs18\lang1036\langfe1033\langnp1036\insrsid8133178
+\par }\pard \ltrpar\s17\qc \li0\ri0\nowidctlpar\tqc\tx4320\tqr\tx8640\pvpara\phmrg\posxc\posy0\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid11163533 {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs16\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981 A-}
+{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs16\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981 PAGE }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs16\lang1024\langfe1024\noproof\langnp1036\insrsid1713643 1}}}\sectd \ltrsect
+\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs16\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981
+\par }\pard \ltrpar\s17\ql \li0\ri360\nowidctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin360\lin0\itap0 {\rtlch\fcs1 \ai\af0\afs18 \ltrch\fcs0 \i\fs18\lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981 }{\rtlch\fcs1 \af0
+\ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid8133178\charrsid7487981
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}
+{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\langnp1031\langfenp2052\insrsid1713643 {\*\bkmkstart Text15}
+{\shp{\*\shpinst\shpleft638\shptop-180\shpright5798\shpbottom1450\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz4\shplid1026{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn hspNext}{\sv 1026}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar
+\pard\plain \ltrpar\qc \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0\afs22 \ltrch\fcs0
+\b\fs22\cf17\insrsid8133178 {\*\bkmkstart OLE_LINK1}{\*\bkmkend OLE_LINK1}ROM}{\rtlch\fcs1 \ab\af0\afs22 \ltrch\fcs0 \b\fs22\cf17\lang1048\langfe1033\langnp1048\insrsid8133178 \'c2NIA
+\par }{\rtlch\fcs1 \ab\af0\afs16 \ltrch\fcs0 \b\fs16\cf17\lang1048\langfe1033\langnp1048\insrsid8133178\charrsid9066479
+\par }{\rtlch\fcs1 \ab\af2497\afs22 \ltrch\fcs0 \b\f2497\fs22\cf17\insrsid8133178 Ministerul Educa\'feiei \'bai Cercet\'e3rii
+\par }{\rtlch\fcs1 \ab\af0\afs16 \ltrch\fcs0 \b\fs16\cf17\insrsid8133178\charrsid9066479
+\par }{\rtlch\fcs1 \ab\af2497 \ltrch\fcs0 \b\f2497\cf17\insrsid8133178\charrsid14171442 Consiliul Na\'feional al Cercet\'e3rii \'aatiin\'feifice
+\par din \'cenv\'e3\'fe\'e3m\'e2ntul Superior
+\par }}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8196\dptxbx\dptxlrtb{\dptxbxtext\ltrpar \pard\plain \ltrpar\qc \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0\afs22 \ltrch\fcs0 \b\fs22\cf17\insrsid8133178 {\*\bkmkstart OLE_LINK1}{\*\bkmkend OLE_LINK1}ROM}{\rtlch\fcs1 \ab\af0\afs22 \ltrch\fcs0
+\b\fs22\cf17\lang1048\langfe1033\langnp1048\insrsid8133178 \'c2NIA
+\par }{\rtlch\fcs1 \ab\af0\afs16 \ltrch\fcs0 \b\fs16\cf17\lang1048\langfe1033\langnp1048\insrsid8133178\charrsid9066479
+\par }{\rtlch\fcs1 \ab\af2497\afs22 \ltrch\fcs0 \b\f2497\fs22\cf17\insrsid8133178 Ministerul Educa\'feiei \'bai Cercet\'e3rii
+\par }{\rtlch\fcs1 \ab\af0\afs16 \ltrch\fcs0 \b\fs16\cf17\insrsid8133178\charrsid9066479
+\par }{\rtlch\fcs1 \ab\af2497 \ltrch\fcs0 \b\f2497\cf17\insrsid8133178\charrsid14171442 Consiliul Na\'feional al Cercet\'e3rii \'aatiin\'feifice
+\par din \'cenv\'e3\'fe\'e3m\'e2ntul Superior
+\par }}\dpx638\dpy-180\dpxsize5160\dpysize1630\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow}}}}{\rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16\lang1024\langfe1024\noproof\insrsid8061541
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\langnp1031\langfenp2052\insrsid1713643
+{\shp{\*\shpinst\shpleft540\shptop-194\shpright1796\shpbottom1225\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr2\shpwrk0\shpfblwtxt0\shpz3\shplid1027{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn lTxid}{]sv 131072}}{\sp{\sn WrapText}{\sv 2}}{\sp{\sn hspNext}{\sv 1027}}{\sp{\sn fFitShapeToText}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar \pard\plain \ltrpar
+\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12811248\charrsid6953049
+{\*\shppict{\pict{\*\picprop\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 2}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex24\picscaley23\piccropl0\piccropr0\piccropt0\piccropb0\picw6800\pich9340\picwgoal3855\pichgoal5295\pngblip\bliptag1424004780{\*\blipuid 54e096ac652515c6a4eb7b952ef75d7c}
+89504e470d0a1a0a0000000d494844520000010100000161080300000047c6ef9500000300504c5445000001484a48f90000fccc005f62f7e1e3e0ffffff0000
+0061005f00760075006c007400750072002e006700690066000000fc778809130064fa12006cfa12000000000078f812000002000000001300a84b1700780113
+008b00000050b6fc7716b5fc772db5fc770000000080fa120001000000e0f81200842be17708fa54000500000000000000942be1770000000078011300780113
+00000000003cf9120040061300f0f812001800000008fa54000500000000000000e6011b00c0b84000780113007801130078011300780113000000000063b2f8
+771800000054f91200240000007039f87700001300480d130024000000d86513002cf9120000020000e8fa1200952bf877b839f877fffffffff8fa120027b2fc
+77480d13000000000000000000a873480098481700a0f9120000000000e538f87700001300a84b1700000000007cf912008806130030fa1200952bf8772039f8
+77ffffffff40fa120040b7fc77d8071300b04b1700c44b1700b04b17000100000098491700a8fa540003000000000000000000080210000000ec00ee00a153f8
+7790f1fc778653f877f8601300d8601300c44b1700000000000000000038fa1200952bf8774854f877ffffffff48fa12000000130007000000004b1700b04b17
+00010000000160130010f0fc77b0f9120080fa120080fa1200952bf8771836f877ffffffff90fa120043ade8770000130000000000010000006146e177000000
+000100000000e0fd7f41005f007e003100b04b1700000000004001000054fa12000c000000b0ff12005618ea7760ade877ffffffff1836f877dc4d4300b04b17
+000000130000000000200000005bfdee849affc3010084f084240000008684f0849affc301000000009d21000088091300100000005369676cd8651300200100
+002e6769661c026a001c026a0034fb1200952bf8770836f877ffffffff44fb12001e73e8770000130008001400180100006146e1770000000000000000000000
+0000000000c4c044004b661300dcc615004f6613001f744800ffffffffd86513002ec144004b661300ba70f55d0000000774524e53ffffffffffff001a4b0346
+00000001624b47440088051d480000000c636d50504a436d703037313200000003480073bc0000257749444154785eed5d8982d43aae65e65ef8ff4f7eb1f6d5
+76b62ae641014d772d8975747424d94efac7bf7ffae3c79f0ec0bf7f11f88bc05f04de46e0073d7e5fb9791d817fe0f1f6696e00fcf6d07efcf108fc0b10bc8d
+f30d0abc9f0dff22f01781bf08fcb1081c6500ca9345409ebca35c4f7ff62d953e0ca75a0872013e7ecba4f022025809f8c75ba7bb418cb7864495d05f04fe22
+f06723f0a72be1321b72df0cffdf50b2bb1f7dfddc554544a9d184c81741f83402d978c6e15b44f830024d92fce624c267119802304ac7bb417de1f3af9fd3f5
+055599e89e7b7d3819a2d74f49087063a0515f2bc2ebe34910bc7e464a7aff850734476cfa8f7f8e3fe399efb2e06d040e13d1787a80c5d0278e3ff4f7ab10bc
+8b80319fa0c0a06004e8a7afb2e05504acfb1901311a2282d2a08f8557c7f4511d08fc2729b046ab08580cfebf22204a209c4f2a2889e2425abffc9117f1f614
+b0629833c01713c21710a0bcd832e0c36b4cdf42808a83ae487c7158315c5e3c1546819b06d01ff0b57232159e7c715c018217cf040820d7e12c68be2b8f4a0a
+202e1feb925e44e0dfc3da1fb462126d476e34312055c2597d278a9dfbd8db081007422668cc6748189b3383338744207671d87e231dd085f5ea243ffe7bfc01
+4aab204c1b64a10594cdfb63abf8b4fbf1536789275a9e841dc33e996540aa1509a1237c56f8caebdd5197c3c385cdbdf37441bb38c9f17298295dcc1249abb0
+9f0ca675c586791b6f192ade73778e41420011993de8645b039b0f6d2fa56c9c6845dd050631bb2f21a08e71636453d74893b138d0f23c2bfb57e54b5e2fd884
+603932da9bb0e2d4aab45801b41eee826b571000162c11287c83992a6332a3e9fc3c7bf64f69901168a4c09d6bcc9e2c343a4d308aed150cfdd1a6e7d907a01f
+f03504c644da1c013fb6ecf994b9bbc34dce53d3494ba240b6e64817115872c022d068d5dedcdb841dd1c21862e9e712e56d0478d250347cca0107402b860e83
+ce452d39fc6177602e4fd1239002798f5458c899f74e63d5bdb1765183400cb31e663b96e260050234fe67105865ebe5146c17051b61e60b79f8a938da3e0227
+c24047b721d6e62d95b533fde2266551c5ce49700d81c5dec353081864f711d80e3370fc14823502f279e7ac593a3c07801d6145d25ec00b96d76c98d2ac5542
+9d0b90a30608da64701681290b7afdde06604e820e01034065d031ae36515ba0d65d010a549f6317086c088d8f8374bc8c001eb3446011b23c4f55916601450f
+41a90da7cfd0c701bd624f8398c8aaa9435073d756a9b6e720c782eca22e85478d9b627c06810c80f5bc7cff160229634f39b00df10904c65b75e19c296258c7
+c7da90815382d01db7ab614e51c06a6138608c82e3679a40f75a204aa59b0ad6f5fa290424ecd66b4602d6aeb8b892608e80ee1c1adfe90954a85e47208641e6
+c02e003e092a8d3dc49e03d04ea210f0379474ed59cd4a5bc583b21ad809d84295cbd9f29b080488d35919011b042e374afcad5b164b2207418d47ad042d07e6
+078932d149a1b25b73b9425c715f8b85c711a895a0ae607c9563f4c0e2d27cef8e384740539f46bf46c52904426339f59f3f7087c09a028d0ef82888088c9f4d
+98b9e8b785cbac372c75600b819204d711f0335046d6ad7a2d10e0c511355e74e3d08be5e44dc748dfaf660a7b9ac6d3e0517728b0110569e5d41c1b538273bc
+25c8a30858c11927714e8af501c561590b78bddd4140af3985b31aabadf1ec788bc0b122768e03de69cd4f42313d763c4da4c02ed14c701605019dc5586a1b23
+a30c366ad665b11bdc0c01ab3d403d33c605025db0a74049a2cfe740b7e34f0502636c06bd16c85a5c6c886f21c0cc3b814093096f236023d38cfd3904b6c3a0
+2ce3757893206844a124153ec99f706ed79902204bcb25eb35768b1fdd4521582030a1800f907ee4c35e1704667ac41bed1098ac9c560ef26d863f924d6e590a
+2b04b628105abb7308b4122653479375c35a363cb12c9b7c7ac74f1bb3e708cc94c637b7e710b0b936ac6fae27890c0266063421e06b1aab3b4b04f6286039e0
+f53c57185e0642bd1511e866325c7241475ac68c51efe8c20e07025c542279e10b213b95307705728efcecab344887a90f0251d788805758d78d6c73a0913ad6
+1575009cdc0c2c922050c0780efde65d27beac2b22f3669d6e6473272410a83674c0c14a119b46ad824e333a3d023a33c004b05624f28a72af10c03111617c87
+41c7a804771105f0728940f2133b8f5e582e52f3166bafccc6088a36fdaf44c08127c35522194704723912b4b9c00653a3f5762ec3cc765a92b443cf4b85ec41
+490e769cc5713c7be8d37ce5624e7bd96f34fc5b08b8319a91dbc1155d9d9b1b96f73e81001a150ed9280cbf710701e7d42a342cbe51d02aef5593e35e9e6c08
+62aeab272fc4d7958bbdea5bb770bcc269baeed8806973ad421c344c2890243db1a0ec32e708c42d0409c31a01ce4b8e199aad503cae22d00290152dd5456d4c
+3ad75b25f31428206c10e0584f9c52a1d84040d515234cbf487e540294afbb59087338332e6bae4b059ccd649e28ed8f0c2925d4995a2e9a5334221b7016befb
+7a27888d07577f0ad2e0375f160ecb944acfd0311cda361da524c24832653204101dcb2888148002c819988430c3e287ed8ceb28d587993d58968fc48158060f
+ab8d149e4140cee6cb425fcdc779b8e0b2405986b7c0640b017953ab03b9d00672e3fb571c10efe8dbf9736b0e445718247cccc328cc38091487b267991e2aab
+4717955eb22cf0330e78047aa3cb281019c924f08ec3d1b8e70404fe6c736d5343936e3c800e1b255e5d21a06fdc44a0a723bb2114c4b6ab61d8ccaa72c93a7c
+b23bd51481815ba06894d0f2649c6c16fa136c327dd5dffc9a8bb1fa581029c1b070e8860f952e0a0f907d7304e8b830824a8283b065ea57e376260bd1f19bda
+7ff4093a5879fdcc3e027c1232aa4780591286580cb4c706c96a06ae56467694b0d8aa9698df5eee58e9e35417c9c039026d50b74667da330afa4a6294e0527c
+3a3a220b6bf249cda3ec3a1cc714817ea1ec24027ed82a05eef92035967b35aee1d3f2e32e02288a3304264772e46843b0f1579bdb5a02758eafa5691b01a843
+5a04d2d57a5b6edf70565f2ab51f3e79d41308f075e0b492e5d6e30e68f638504d77ecf8ece9f7744c9ce2318c5412f81ed62c6fcee5ff7741c017d69b996158
+d920601778b71140ddfec6c3a7bd497a0e8c003385fbb3a9b858ab58caf934e73765b417c8004c71f2c8ddba8e6fe2e76fd812ee6fc7b7b9d33a039d60426c11
+056e3fc66432b247204c22fa2a1346831b06bcbd980e0204f9ce553f7efc879ee4d706701928b2928dfd16023c0c25154605229037f3af11f8f11f06e0b85f8d
+dccc4c9e33f774219ff310bec3017180acece233c3f9d05945d68f7ac42f8406e71a001c021902b1984e69db8bb7a3609811825039802f485689a45f20e00038
+deab24481044297a1f010d3446c08ca18802e680f060dc97250546b889e17f2406483528120e642204a116f0f34bb3cce0a5ef442e70931c03043b04d36fabe2
+0fdb51fde034b8be375542a680ada111034b0e77af4726a310332586d87d5f4520ec17085307b6b4d47b09c95cb7e4868cb8bb519978dac04b77784b24f06e1e
+1f309c7c830382008a7dd09a9854391bf2c446b25ca4b346406f5cc799718e008e48c5f1050402001db36cd133eecc2674b6dd982d8c7ced63cd24b1e5fae71c
+02e57c39d5b967a2c0890de7dda25e961d839a0bb12032cd2643c09347340e773fdbc34ad5bb8c80d742cf42bfaee7a71da67c9d2ba14b383e0156478db901ea
+01ae5be84c4a548460860010db70608d00bbfe374240b7d292c1a67f9b230095b096c3231d6e20a0854a4896f1bc9abea77d813a8c7a045713d84e04b39d3cb4
+2f081cb0d4c1146994d059197b834d0404825710e8670528df638a18dc0d35a2364b09b6980b8a0e00cb813d0e509a6ae61fb567d9e380af817c02cc3a0051cb
+ff58e7b23460ce827f91036ce7715f472883e8cbf11f02b0130594aa6d6a0c5374b1249b4541a802173916d7d741fd25dd190054091d4c291b82a560ed28038f
+56997e3e81000dc204a561def2aa5b17a89304587040d2a454c2030c3e397a1cf0c13f542aa728608b8ded1505e2bd7eddc0311455966e222062e68e637f905e
+d0d304d800a141bc00ee7310145170f0deba1ca92f1c08b324de07450964743c09b0e9632651c00edc458035c0b00f3c41083852d63a40377816cb1502a8adfc
+54c2120101255407fb35217dd04069853c73002b40897276b73ec5d46452a46c382840a1ef51c027a7f77b0e51008ac8d59827c85904ba682aa380284fd530b6
+c3941f99210c53d201321275303c18194b8435079a0a711b011cbd398f0ff206019143da7fc02830419236caddcdc1c9603ffe3522404f10463c69e24650b742
+38e4ab51201e1435df5342858d5410853f7693ae1ea0268a64ef982c464944151c7f08127c5f9e213194b7f427070647ce39e038ef3fe94df01c8479412e058c
+1488f0ab1ab208f0c41199e35c0e16a3c7c17afa4790b8f58232e345e2ce48901630ec1183df965140be268712225c28e2b36e75c92821677cf1fd5835401c98
+0dfc8d748b1b5140d9f7120292babbcaaaad07543fa846c41e59aa020ccbf1d7e602437b808afd4f286850e8f4f11e0228037d41d072e00104c0703c3725029b
+1b525f20d4911a88ea234c84f4c82b2692f21a5fe51ad909c11481301bb88c024d7de87263b88a2167c7aa33e265432e03b942b4495020d8c88692981c09c292
+4da809b588189efbf9d3b1673f1770d0a3d3894fe445a2c40401ce8a5c11cb42a22b0acf20e072c539042c042738401326d422411c60e0e3addc0b1d08132522
+809813aadf0cf42e025449fc3c1e2e3fb6a14653446c1e4f19a108b01cf03cca0a010c7c2d0742397c2a1baaf7c5902d0e3c80002b209b0b5828503117b82619
+920142606ba0b39d51d04889f00d25a4f71e3a6049b01d05e26b11014e09bb085029c45ca88260313f5068d61602e47b06ef88011306a7106010e98834dd3494
+60a903c7e41097048f70c0f488941c2c09f2e2b6698686f986046710c05ae0a03dcf1791226c2100d38224049d0ea6df07d5662d6bd01e0246fa86f94a825d04
+cc7c18ae178f8408dfc19a2a25829c0ded96917710203638b7171c30862209247eb6ea015a2a18d3bd60371546d439a11014d970f0fea75d20620e0c3a6815a4
+ade1be0e5004c2e88999260c1202f6ed50126918ec7180ab7d4dfe5c0a8cd177081ce68f13d9fd12940b0c02f826c6c90dc750dd553f908c1d04e0981601f29a
+f8fa2602c6df1000f06bbee8f7cff86c38080021a76be5ca016106da2f30594ace1008956dd8e015aa03d26a3e3610400eb0c5014301ab7ad20872a60c080ce3
+0105b35f428a622e810c01c67aca2e028ed650985aab63671436163b12ec20202ac855a1b48340bc631904fff7ddf1b07d406028ce65b1698acccbb0af660301
+c8aaaeb9c91bfce26cb9df5a7d128191fcc69009574afdd4320a04f09bae1c07c669f81fce1bda995216074f811d04585c9c10c45ef00d0400067b273a800211
+9087cd86e028a4016d9b7233a51419ca104469cd0160802f6c2f7040b3c13a0a40eee81111c000e4df79093951e78880e046063806a831408b4f7360c03ab075
+d920c6fd4a076c182c1140a1070280b99280b12c52026061141040a8ede4397587310ab667cb9559b6c33d1905fb0800f17137357d0bfb27a90e1d69796830ca
+042504408ce6854809e2cc31e603798f4986eb28106971627881031206730eb0fa81f7f934f211ac8522408a004507177f668650270738a837d70b1000781cff
+6b8d739e039b08f081c954fc5111285f3608f8de1f9750b1334c33075b33241001a0af20051a066739600be3850ea4acc252800579f1b22a61b41f940f1ed52b
+1414b35c401d0daaeb23080c0ccf23c024d0b0c8c97762e21480a90e10005469de4680c3e00a02789541e3ff39077a68d61cc0629efa3a0c07a9f44feac08882
+5b08a000f68f09cd1710cc2a224100ebac1109971160213840bcc48199f56f7140fc8fd980ca4d9efa3bcb814d0428ed7cf4bf4e0985fd485efacbfe3b9d0b4c
+18cc38b00adaf6f569884c09d445010180dc871a0243e10e074808ce22b04a6758009749b428d6533e59202002761b010d8353085001b714ba0281917813577f
+fefc159e5c2380bd94fc2d268a4b9d4e760aab4e20204d2996369318e95ab3f0fc286ca384353a606400838041b88300159793b962b511360463538e9dde9144
+7a108adf6f8e4087cb558f63c5709973c004c1630884c926e7016e56b00ba1961c4a3a140373e1a02f757b049cc13f7e65083e8780c987c66a7f7e743654ce60
+bf5062588f2ee542cee17108612d7ae9a2bc0383533aa0994072e2e528d84700ecd7750fea6e380b71445861708da4781d6758744a0ddbcce202de322c6d3d64
+2b82cbd9f0f01f15c6fd861224b96c14e3f695365011f6181398026509605234d33eaca34596cedaf16519052a82a0049f4000227ed080183f4e6ac6a9fc175d
+c81ca0aa9219005bea9803068cf17a5f13dab6c8eb606ed3bb64c480410c6f7280af2ea4f95e504183c0981e23451c38693964c7c03b472804fe815564440027
+cc542027086037680ac21bf3842863d81e2a93bc6fc74f427cfc0049c04883ea294580af2123db8ceccbf6495601982d16004e2180cb70580e98519ceb8c68ad
+b52041910b381f90f4139fe5dc262b0ec5987240982f8e978d75aa977d1420076806de037076bde02a0298feb0149080324a8808c87caaa1366f1fc2a7d06e58
+7ee1cda59b084010e04a94a3c0eb0840ec0ffb71d51a37527232d024806a9911181f19bb47f446260800f1495561ae84323d9401b88640a5854d14a0fce96654
+27039430391daaaa69bec3edc480817dc8ce3a5315b44a780c17eaa1d0105ccb86bced240b418b00d7c13e4a61a5946b06964d25b4667cb994c0ae9d222a4010
+4d072b04048330d42b4a788a03581ba507f50610162d02b4871ae28036d773f8cb0ecbbc1a434166e4deb4c47176ef6e1498295767a36904ec4d074cd624c371
+d91c0b439b0449f888ff6a363b9eae35419da037b7b9805a62168127385090a08a826125e600369d75508b40ad192b047095c8ba9f4ca72840999823c0eda9ec
+7ff9200228019c0521116056c06fd0f363b6a0e1006a405441c903fc32170b0d077089e878f0ece0e71080a172faa371f35535d20c8910989660a47bcafeb89d
+1871305f041b4382be2ac642004008adc9e0e625258428c0ca58b27bd60172ba7f8151d11903530ff2823b222057d6a8b30d0c582ad14b8057cd015e32261072
+017f0d812c04b50ed84181eda4d3623f8601eb202ca8e1174420fd35cec7524949d021401374c00078cf2351b085001782b08b14a3404a628580f500bd080810
+046abecaa146036ec03024e8a28067694718c0f93f89008b16fe0fb55f62418b80173a2c85590ac6e14c8b0c5ad82240322821fb0c0289047d4d68186f309032
+488300540a2db15bb0ec140023a0d523833c4300f40af4e0410e5c46800bc41a01f6e500a27a50699ce771661c90c50af2d207394036d054a046820485ec0b41
+4a536a2221f0dcb10729c1b1732f3eda71c2be4d5b1773c11607887454f9c0b0a44bc01480da8c153108272331485040307baad7018a8226715f452042506643
+0c3b8b8064048700901ede2b891d95f3cc63910bf4e587a2608180497ec4d92042e65998f221be6869039befcf3c26b9c0cf697e0601530ad913d68ed04a4139
+40734a4dc8974fcffa82f64ad1ab553130d6d5c501d87308f0f557521141460c4ef506e69f1a0ef0f4907ee0290ed83d55b9d03ae33bde774e523804916a022e
+9f38a6504568da8d24059baff1a19a03d812bec501d31c951c304fcebec52a002fc3a2a4481d021a3554118dc44517c4089ee5efa6084077fc220710dedb08d0
+35d852139a42d7238058607521dfb508d0d24e2d46927ef2f4947dc691cb1dc90a4140e054144031c0a653552ccf200788e8fd775d14d0e68dd710a03d552d07
+383ec16ffaaec1615d39a0b911a412d5f7dc20531450438145027200bed1efbe8a4035f142f6224bd576fc16744ebf10e150fda8c0a7ca9f70e39a8a17a1b9cc
+822890174b25c4a6c0e59540d7cb3521a44395c2320a98bfe072c601fd0faec4996233d1696a42fb2cacaca2b5f0c9fc5da703b883f42d045c3e2c949029cabc
+656d701ec4856094415b15c345381c123710a0cb95ded1810502c06a2e6bd547425c6c8c08011a61a8091981eb4ac8f5d0cb08a48b0df04a2ad2ab10a7110188
+7cdb16f05cc7f164eefa7dacb7694a4417eb218a417afb733ae084a0d401d3dbd8f4682709d1eb2606d46a8f8029074361581ae65638df4380b530e91093dad8
+aad9d0e10282e70190092f1b13a62890b558a90e24c31852a0f2e25697df1e012b020611278c61c71127049e65a1f45a2310564b1f8c021b0617a34019e0da54
+3e9a2f8d9bc290aa263f02dded02f3632f29e104017486e5bbbac73ebb8100c7889683a130a43c5a2250b4050fad1790852a04453db046c01440521949258481
+acd3665d6188efe3da4180867444f5d0990b82f23c74691acbaf968597a26013016c9626e520551529397e1301a46e8a02ffac9b171d41ce25ba1179ed14a608
+986832c951b68e39ff3caa845a16c6c3aaad6eaed8e1a2d641f9a45a88fd02d6559c1ca68db1cb2014a1900c69d3c03710b097d6f3260aae8a60d180ee4c8148
+61285b0ee8d3d9bd8eed8252583804f8b075f3a9e05925acf718a3e7861bb9f1e5ce871317ae83aacaa1e829021444a2857159d462d06ca51aa7c75d0ec027f3
+78270aaabb9b18a7fa6540927ba16e288ab548d4306821b0278976f20e2a6699510805246affc95c8038db4539f4b2fa1ecdc4e25ffe61c56f10c0b12b07982b
+1dc5c50077994540e00047f67fbf56112902fe720b1675361b855ebe0ef3c95c70333b477281f196a019a31fa4434e94b4704cc3d41338cf464173b181195866
+95d282f82e73580615d4c64c0c1bcf267b481da5ec804cc09b065ee4401506de68eaf3251280ff91f038708f40088da8f598405a12c8364acd36efe8c01281a1
+c4782f1a0c094c93c803991df361e0e359afa9d2e7794ae5b742a0b970851c89c6b32aaaaf792699a68e89ccc07e9a63a6b53413e7627e2681c18e5490364ebc
+1d053e1b3866caa939ff6b6a2070c00e2a02492fb524e4a91e668d20c3f1de86012702739697a22087811d9427341642120314fc227a58168af3111a4a8ccc0e
+37f33f2301258262f7d4c3b92057042d0068a9aa20d1dc281c958926dea93824194de64f20f802022c04530480c55a30519e6047b33eb0a55038d1075cf4bbda
+a08c3abeb6ea531c3042b00080489d12e630d0a4486ca24c6155badfa7105713d04281b8c5d6113d7e52aada241ba2c67f1aed7185f10e02140e3e9743b2e470
+7723582e1c78166001c0d7d619b1794b093d029b0060ba0b10943ff2bbbc279c23626104c994aeaf64297d9d031206c6aae99861d48ee98dfda17a0ca6d74951
+7a22adb73f86c03e003c093aa1028adf1508fee58d13d274bd8a800983f300708acc0cb00921757e990a3ea60881f20290c7eb012b8546cb1aba7ada4ac193fa
+5c5de93219a1b0dbfad6e21f76cfbc591593eae0659db1c1ef61c0b71a9d32d1c0a99f5fd5a4988e67ab047f04991cc17cf57e14a0144a36b343ad5279020093
+039640520b5326d30849e2ca7576d054bcc6da5c62fd6904643d1c137f4e0a5cfcb9640d7d348a9f4fe2b338a833aa5c6d2f41f72e07540a8d9e615587ad4e26
+afafdfbcc1130432987551913692becc8112810975c35c5074b999384c612010489aab2008e5d0fb3ac013f32a04bea85d506089809d0952cbe9a81d027e2bed
+2738e0a4b0464046cf82c94634519027914dfa9072a1b89d1dc9a0bd13e5cb3a40bb5512074008f8da7b4d5c923282e0c928632557341b725cba46c7614eb3e4
+43833cc82933a6b9d6ea9e588ec375a7a817357a2984fe8c10d09c1000504f27042a1248914037b6a910e085025f715479e171044c45c0ab967495e558280d15
+4ef2f41602b2ed8a7616c37fbea696a5925074157c780881c336bcb817ef7a341efa13dd7d608c124d4e856366aa304dbf89a9651c0e7795c0171f04b4546253
+ae21eff37d0114727c59275ed04100e028510c84918f21602ec58a08e028ace05e47209433850ec089b80ca5fbbdc0458ee369d9502808b40098da5dcf12d387
+c3316f4cc4a1201bf51e8ea6cc04127a658b21e4234ac5b48a21381496f2a285b88b9527c41d0034efcb6748e4cf769bd1dabe4f62c95e8f27018883197fb5a3
+727b2842897a1701a87a8dfda0054c3fb3a554446923082a360404b8b1282f48947adc8887e1f2b308e0120805bed3c211fc9e029e0349edcab2ad93c22902b8
+4b27fa36679a5c730f3e9f88826374683d253e14c3ca2b3c5e9b0a4e22602ae3715e09a5c955a91d04cf7180d92fad6863bfb9e19826c322e195856b490213e1
+b3eb723d04f98c3739c0e4b70ad40cc786be4b514e99cb28b092a0c2662bcfdb24b8aa84d8811bd5ebaf9376226603c257e9fb08b8489d5d9fbd458273089884
+0551af6ed974455eff28c95925c6748d34957cfecc4049b9b62754cb3b65f142096d6565d5d63bc2cb6170842d5537a2a00c83090940948a9bbd991661bea572
+1f017f3d80e6bd2487e99052d7f902ad8e023bdcea48b6ee842c8805315e97d764c46963b08f807b275f0a09f2186819f3abf5862dfa6cad5a57f13502527a43
+0fc2cb85da8dd8f3e371df4380a666d6085406161d07652b85664e02703c6da4c52e35f5cddc9e3ab48358cc2b2295ad10dd783aec49be85005d81c571502240
+f77ab88c8034333183d0c9699280bb76ecdf7314941c6f39b05402957ed71da120e5d3872bcfd286bc29076894f1a8ba7b5e48d0252438fc7504ca8c181000d8
+a131681c101630ced40363e4a608b2b539451d21d0a7e40040392710c5ca25895257c968be232475463505a20f561c70dc2cac078be88c74334a16219483dd20
+8802dd64869e0466da105ac3f6f40b0812c16dbb52e1ef2160f4fddc505d990557f73ae0177e8b41880b62679a5a64ad615bbb260834d9d840404980ebd23a0e
+3dab4ca6737357fd7277596081d747ecf959a39a83498b7c89192036057ac7008000ad25e6d16f6a592350173eb96ad95102cc035808d1ec6ca7840182b26c4f
+6c99effb1ad2ebaa001c4a35824d0a4cae0c2a49c0e908b5c74443cfdc785503d9dc44c12402380aacfed3780a12760004214c95eba484418fa2e39d1be09929
+73ab2992981c91911b0088062a0bab6cb48dc06912241eaeec07dcd03e0b5346a0d7530d95087d5b8f6c157ea91d58f432c801d65f1e0b88c28c01c49d63481e
+815f5e1857eec77757f3a3e09359729d5d04981b389729aa52d7640245630d015ee9a28f5f3f3c024b0cf90d567c488df284757155281be6c951b4b02157a681
+6926c8b3f4db561c6fbc8e804940a84930a436b7462767046645625519a630d8d081029a3b08382dc4b89c01b008826936c86bde391437f4abe2c66504a21454
+084ceade940c9310c47754fd0627c30afddd48b88e8097c335004b0a2493bd12148180b3f7177dcf08dd4100539226a369084ca39c6c0dda10a522b180b712ef
+babb7cdf3d042831532ef02748e3f7e92d3838b70651178aed2fbf0902529ddc0660512847086067b7dddc7c8d0af7393010f8753c42c31583b86f856de3be78
+97afe5d2d6914b10bc8440caf68b10af8520270c0301fa1f17f02f994e1f7a088120c817015886810d0409827a6bef36288f20807b99d4132b00aa62a0e88e72
+8960da3a2540fe25b8dbd68f373e8200b8c35c6e91747e9e177a21c8f94058c01b1add82f629d3350a2eb646e66c7c17207c6ad5f35466b5fd52d53ed069ca9d
+bda7313824fcd7c308ac01e883a078a58760d4632885a7cd361f780a018d820d0026089c8280b4f01600ff02024f90405db194c119001b0d9399e5c22b7aee30
+e0006020f0f3d63130f64d525ea6fe82d82286cb69838d59cc33e62002f739302988774cb2b963fdfe7b4e0ff010026f42b0a30b0b04425f7dc6c5abf742393f
+beacde78f675b3f0947bc059103499d27ce451060c1978070159b05f737a593db9bef9a6ee254f0a028f9380eaa2cadd730acc49f02c018e8af84d04f056a367
+6320cf9a9baef16902bc8dc0f84525c544d08a025dcd9c6eca76569baaf71b0ebc10065583306b0914ad1aa4a72360b485ff5b0834bb8cef50c121f00209aec5
+40ab04e5a2c91dfb8902980ddfad0956fcde4b886676e496ddf261365c107898056530af65b09e2a92e983676c87a33000ca818711286fc350e486faa91abf47
+c5b040e069083206bb14a853c6a3f62b050c079e6f0fe26ed66d0a14103c5c0e0903a82f784b0d7d4db04f8184c0c3f61b0604041e0f04778f9a131408103c1b
+004605b52f50523ca8b67428b97bc65504de240077c7262a5ea0417191c3061812330f13c0da6aabe2f73138a302b6307c1480647ec58137eac3721d65c50380
+ecd108a8ec8f4a28ef795c0ece520066179eb4bf36bfe3c0f33cb800c0a3ad506b7fcb81879ba54b003c07c1c4fe3902c7071f8a866f2230357f16054fd68917
+017882042bfb971c78241a2e03701b82b5fd7b08dc8e86d9fda71749f14e39b063ff36027715e1220677d2e19efd2710b84b840ba170c3fe5df37794d01deb4e
+6a384d83cb0170c2fcd308dc0b865334b84c8073f69f8b023af675229ca0c145029c35ff0207f0149741d8c4e01a012e987f19815731b8b84df69afd97a2e06e
+b5b8d842718dff57edbf85c0e5689884c235fabb99cfb358e89ad1d94fded1c586065fb0ff2e072ecb627973f74bfcbfe838fdd86d0e5c05216270cdffb7ed7f
+84035713a4c5e092fd0f987f231b16673f5f24c852c205fe3f63feb3085c2912e017d97dd3fe07a3e07a2c9ce6ce63ee87033da384664ca7ed39f98167cd7f03
+81cb75d20e128f9bff12025704e15bf6bf100577bb860e8a37dcff8e0ebc2209af99ff5a143c4b8437ed7f310a9e02e15df35fe7c0d5a6216d7b7c1187c7eb81
+72ac3b4a5fbce745bbf5d09f41e04a7efc88f99f89824b8af029fb3fa084d694dd60f89cf99fe5c0ae2c7ed4fe0f73006d9b32e1c3e67f8103530c3e6ffeb710a889f015fbbf1205656ef892f95fe4808b86ef99ff6d04301abe6affaf5fff07d6bc7e73de6feb4e0000000049454e44ae426082}}}{\rtlch\fcs1 \af0
+\ltrch\fcs0 \lang1024\langfe1024\noproof\langnp1036\insrsid8133178\charrsid3147258
+\par }}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8195\dptxbx\dptxlrtb{\dptxbxtext\ltrpar \pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12811248\charrsid6953049 {\nonshppict{\pict\picscalex24\picscaley23\piccropl0\piccropr0\piccropt0\piccropb0
+\picw6800\pich9340\picwgoal3855\pichgoal5295\wmetafile8\bliptag1424004780{\*\blipuid 54e096ac652515c6a4eb7b952ef75d7c}0100090000036f7400000000435b000000000400000003010800050000000b0200000000050000000c0262010201030000001e00040000000701040008000000
+26060f000600544e50500601f7180000410b8600ee00610101010000000061010101000000002800000001010000610100000100010000000000000000000000
+000000000000000000000000000000000000ffffff0000000000000000000000000000000001c000000000000000000000000000000000000000000000000000
+0000000000000000000ff0000000000000000000000000000000000000000000000000000000000000000000003ffe0000000000000000000000000000000000
+0000000000000000000000000000000001ffffc000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000
+0000000000000000000000000000000000000000000000003ffffffe00000000000000p0000000000000000000000000000000000000000000000001ffffffff
+c00000000000000000000000000000000000000000000000000000000000000ffffffffff0000000000000000000000000000000000000000000000000000000
+0000003ffffffffffe000000000000000000000000000000000000000000000000000000000001ffffffffffff80000000000000000000000000000000000000
+0000000000000000000007fffffffffffff0000000000000000000000000000000000000000000000000000000003ffffffffffffffc00000000000000000000
+000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000000000000000000007ffffffffffffffffe000
+000000000000000000000000000000000000000000000000001ffffffffffffffffff80000000000000000000000000000000000000000000000000000ffffff
+fffæffffffffff0000000000000000000000000000000000000000000000000007ffffffffffffffffffffe00000000000000000000000000000000000000000
+000000001ffffffffffffffffffffff8000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000
+000000000000000000000003ffffffffffffffffffffffffe0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffc000000
+000000000000000000000000000000000000003fffffffffffffffffffffffffff00000000000000000000000000000000000000000000ffffffffffffffffff
+ffffffffffe0000000000000000000000000000000000000000007fffffffffffffffffffffffffffffc00000000000000000000000000000000000000003fff
+ffffffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffe000000000000000000000000000
+000000000007fffffffffffffffffffffffffffffffff80000000000000000000000000000000000003ffffffffffffffffffffffffffffffffffe0000000000
+00000000000000000000000001ffffffffffffffffffffffffffffffffffff800000000000000000000000000000000007ffffffffffffffffffffffffffffff
+ffffffe0000000000000000000000000000000003ffffffffffffffffffffffffffffffffffffffc00000000000000000000000000000001ffffffffffffffff
+ffffffffffffffffffffffff80000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000001f
+fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff80000000000000
+00000000000003ffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000001fffffffffffffffffffffffffffffffffffffffffff
+fff8000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000003ffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000ffffffffffffff
+fffffffffffffffffffffffffffffffffffffc00000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
+0fffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff8
+0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000001ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffc000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000fffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffff80000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000003fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffe0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
+0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff800000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000003ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffe00000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000007ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000007ff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fff8000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff8000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000003fffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffc000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000003fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffe000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
+00003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000007fffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007ffffffffffffffff7ffffffffffffffffff
+ffffffffffffffffffffffffffff000000007ffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffff000000007ffffffffffffffff0ff
+ffffffffffffffffffffffffffffffffffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007fff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007fffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000007fffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffgfffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffgffffffff80000100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff8000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffFfffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffff80000000ffff
+fffffffffffffffffffffffffffffffffffffeffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffdf
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffæfffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
+0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000435b0000410b
+c6008800610101010000000061010101000000002800000001010000610100000100040000000000000000000000000000000000000000000000000000000000
+ffffff00f7625f000100000000ccfc000000f900484a4800e0e3e100000000000000000000000000000000000000000000000000000000000000000011111111
+11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222111111
+11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110020101
+11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222
+22221111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+10010101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111100101011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111112222222222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111001010111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111122222222222222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111110010101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111122222222222222222222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111100101011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111222222222222222222222222222222222221111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111111001010111111111111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111112222222222222222222222222222222222222222111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111111110010101111111111111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111112222222222222222222222222222222222222222222221111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111111111111111100101011111111111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111122222222222222222222222222222222222222222222222222111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111111111111111111111111001010111111111111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222221111111111111111111111111111
+11111111111111111111111111111111111111111111111111111111111111111111111110010101111111111111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222111111111111111111
+11111111111111111111111111111111111111111111111111111111111111111111111111111111100101011111111111111111111111111111111111111111
+11111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222211111111
+11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001010111111111111111111111111111111111
+11111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222222
+22211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110010101111111111111111111111111
+11111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222
+22222222222221111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100101011111111111111111
+11111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222
+22222222222222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001010111111111
+11111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111111110010101
+11111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222211111111111111111111111111111111111111111111111111111111111111111111111111111111111
+10010101111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222111111111111111111111111111111111111111111111111111111111111111111111111
+11111111100101011111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222
+22222222222222223322222222222222222222222222222222222222222222222221111111111111111111111111111111111111111111111111111111111111
+11111111111111111001010111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222
+22222222222222222222223344332222222222222222222222222222222222222222222222222211111111111111111111111111111111111111111111111111
+11111111111111111111111110010101111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222
+22222222222222222222222222223344444433222222222222222222222222222222222222222222222222221111111111111111111111111111111111111111
+11111111111111111111111111111111100101011111111111111111111111111111111111111111111111111111111111111111111111112222222222222222
+22222222222222222222222222222222223344444444443322222222222222222222222222222222222222222222222222211111111111111111111111111111
+11111111111111111111111111111111111111111001010111111111111111111111111111111111111111111111111111111111111111111111122222222222
+22222222222222222222222222222222222222223344444444444444332222222222222222222222222222222222222222222222222222111111111111111111
+11111111111111111111111111111111111111111111111110010101111111111111111111111111111111111111111111111111111111111111111111222222
+22222222222222222222222222222222222222222222223344444444444444444433222222222222222222222222222222222222222222222222222211111111
+11111111111111111111111111111111111111111111111111111111100101011111111111111111111111111111111111111111111111111111111111111111
+22222222222222222222222222222222222222222222222222222344444444444444444444443322222222222222222222222222222222222222222222222222
+22211111111111111111111111111111111111111111111111111111111111111001010111111111111111111111111111111111111111111111111111111111
+11111222222222222222222222222222222222222222222222222222222334444444444444444444444444332222222222222222222222222222222222222222
+22222222222221111111111111111111111111111111111111111111111111111111111110010101111111111111111111111111111111111111111111111111
+11111111112222222222222222222222222222222222222222222222222222222234444444444444444444444444444433222222222222222222222222222222
+22222222222222222222222111111111111111111111111111111111111111111111111111111111100101011111111111111111111111111111111111111111
+1111111111111112222222222222222222222222222222222222222222222222222222223344444444444´444444444444444444443332222222222222222222
+22222222222222222222222222222222211111111111111111111111111111111111111111111111111111111001010111111111111111111111111111111111
+11111111111111111111122222222222222222222222222222222222222222222222222222222233444444444444444444444444444444444444433222222222
+22222222222222222222222222222222222222222221111111111111111111111111111111111111111111111111111110010101111111111111111111111111
+11111111111111111111111111222222222222222222222222222222222222222222222222222222222233444444444444444444444444444444444444444443
+22222222222222222222222222222222222222222222222222222211111111111111111111111111111111111111111111111111100101011111111111111111
+11111111111111111111111111111112222222222222222222222222222222222222222222222222222222222223444444444444444444444444444444444444
+44444444332222222222222222222222222222222222222222222222222222222111111111111111111111111111111111111111111111111001010111111111
+11111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222223344444444444444444444444444444
+44444444444444444432222222222222222222222222222222222222222222222222222222211111111111111111111111111111111111111111111110010101
+11111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222344444444444444444444444
+44444444444444444444444444433222222222222222222222222222222222222222222222222222222222111111111111111111111111111111111111111111
+10010101111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222334444444444444444
+44444444444444444444444444444444444443322222222222222222222222222222222222222222222222222222222221111111111111111111111111111111
+11111111100101011111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222334444444444
+44444444444444444444444444444444444444444444444322222222222222222222222222222222222222222222222222222222222111111111111111111111
+11111111111111111001010111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222234444
+44444444444444444444444444444444444444444444444444444432222222222222222222222222222222222222222222222222222222222222211111111111
+11111111111111111111111110010101111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222
+22223444444444444444444444444444444444444444444444444444444443222222222222222222222222222222222222222222222222222222222222222221
+11111111111111111111111111111111100101011111111111111111111111111111112222222222222222222222222222222222222222222222222222222222
+22222222222223444444444444444444444444444444444444444444444444444444322222222222222222222222222222222222222222222222222222222222
+22222222211111111111111111111111111111111001010111111111111111111111111111122222222222222222222222222222222222222222222222222222
+22222222222222222222234444444444444444444444444444444444444444444444444444443222222222222222222222222222222222222222222222222222
+22222222222222222222111111111111111111111111111110020202111111111111111111111111222222222222222222222222222222222222222222222222
+22222222222222222222222222222234444444444444444444444444444444444444444444444444444322222222222222222222222222222222222222222222
+22222222222222222222222222222211111111111111111111111111100101011111111111111111111111222222222222222222222222222222222222222222
+22222222222222222222222222222222222222234444444444444444444444444444444444444444444444444434332222222222222222222222222222222222
+22222222222222222222222222222222222222221111111111111111111111111002020211111111111111111111222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222344444444444444444444444444444444444444444444444443444433222222222222222222222222
+22222222222222222222222222222222222222222222222222211111111111111111111110010101111111111111111111222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222334344444444444444444444444444444444444444444444444344444443222222222222222
+22222222222222222222222222222222222222222222222222222222222221111111111111111111100202021111111111111111222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222334443444444444444444444444444444444444444444444444443444444443222222
+22222222222222222222222222222222222222222222222222222222222222222222222211111111111111111001010111111111111111122222222222222222
+22222222222222222222222222222222222222222222222222222222222222222334444443444444444444444444444444444444444444444444444344444444
+44332222222222222222222222222222222222222222222222222222222222222222222222222222221111111111111110020202111111111111122222222222
+22222222222222222222222222222222222222222222222222222222222222222222222334444444434444444444444444444444444444444444444444444443
+44444444444432222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111100101011111111111112222
+22222222222222222222222222222222222222222222222222222222222222222222222222222234444444444434444444444444444444444444444444444444
+44444434444444444444433222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111002020211111111
+11122222222222222222222222222222222222222222222222222222222222222222222222222222222233444444444444344444444444444444444444444444
+44444444444444344444444444444443322222222222222222222222222222222222222222222222222222222222222222222222222222111111111110010101
+11111111112222222222222222222222222222222222222222222222222222222222222222222222222222222233444444444444444344444444444444444444
+44444444444444444444434444444444444444444322222222222222222222222222222222222222222222222222222222222222222222222222222111111111
+10020202111111111222222222222222222222222222222222222222222222222222222222222222222222222222222233444444444444444443444444444444
+44444444444444444444444444444344444444444444444444332222222222222222222222222222222222222222222222222222222222222222222222222222
+11111111100101011111111112222222222222222222222222222222222222222222222222222222222222222222222222222223444444444444444444443444
+44444444444444444444444444444444444434444444444444444444444432222222222222222222222222222222222222222222222222222222222222222222
+22222222111111111002020211111111222222222222222222222222222222222222222222222222222222222222222222222222222222223444444444444444
+44443444444444444444444444444444444444444443444444444444444444444443222222222222222222222222222222222222222222222222222222222222
+22222222222222222111111110010101111111122222222222222222222222222222222222222222222222222222222222222222222222222222222223444444
+44444444444443444444444444444444444444444444444444434444444444444444444444322222222222222222222222222222222222222222222222222222
+22222222222222222222222222111111100202021111112222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22344444444444444444443444444444444444444444444444444444443444444444444444444444432222222222222222222222222222222222222222222222
+22222222222222222222222222222222222111111001010111111122222222222222222222222222222222222222222222222222222222222222222222222222
+22222222223444444444444444444434444444444444444444444444444444444434444444444444444444443222222222222222222222222222222222222222
+22222222222222222222222222222222222222222221111110020202111112222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222343444444444444444444434444444444444444444444444444444443444444444444444444444343222222222222222222222222222222
+22222222222222222222222222222222222222222222222222221111100101011111122222222222222222222222222222222222222222222222222222222222
+22222222222222222222222234443444444444444444444344444444444444444444444444444444434444444444444444444434443322222222222222222222
+22222222222222222222222222222222222222222222222222222222222211111004040411111222222222222222222222222222222222222222222222222222
+22222222222222222222222222222223444434444444444444444444344444444444444444444444444444443444444444444444444443444444322222222222
+22222222222222222222222222222222222222222222222222222222222222322222111110010101111122222222222222222222222222222222222222222222
+22222222222222222222222222222222222223344444434444444444444444443444444444444444444444444444444434444444444444444444434444444332
+2222222222222222222222222222222222222222222222222222222222222222222222222222211110040404111122222222222r222222222222222222222222
+22222222222222222222222222222222222222222222344444444434444444444444444443444444444444444444444444444443444444444444444444443444
+44444443222222222222222222222222222222222222222222222222222222222222222222222222222221111001010111112222222222222222222222222222
+22222222222222222222222222222222222222222222222222234444444444434444444444444444434444444444444444444444444444434444444444444444
+44434444444444443222222222222222222222222222222222222222222222222222222222222222222222222222211110040404111222222222222222222222
+22222222222222222222222222222222222222222222222222222222223444444444444344444444444444444434444444444444444444444444444344444444
+44444444443444444444444443222222222222222222222222222222222222222222222222222222222222222222222222222211100101011172222222222222
+22222222222222222222222222222222222222222222222222222333322222222344444444444444344444444444444444344444444444444444444444444434
+44444444444444444344444444444444443322222222222222222222222222222222222222222222222222222222222222222222222222111004040411122222
+22222222222222222222222222222222222222222222222222222222222237777322222234444444444444444344444444444444443444444444444444444444
+44444434444444444444444443444444444444444444322222233223322222222222222222222222222222222222222222222222222222222222221110000000
+11222222222222222222222222222222222222222222222222222222222222222223773377322223444444444444444443444444444444444443444444444444
+44444444444444344444444444444444344444444444444444432222223773337322222222222222222222222222222222222222222222222222222222222221
+10040404112222222222222222222222222222222222222222222222222222222222222222237377373222223444444444444444443444444444444444434444
+44444444444444444444434444444444444444434444444444444444443222222233377777322222222222222222222222222222222222222222222222222222
+22222221100101011122222222222222222222222222222222222222222222222222222222222222222373773732222223444444444444444443444444444444
+44434444444444444444444444444344444444444444443444444444444444444322222233377777773222222222222222222222222222222222222222222222
+22222222222222211004040412222222222222222222222222222222222222222222222222222222222222222223773377322222223444444444444444443444
+44444444444434444444444444444444444443444444444444444434444444444444444432222223777777777332222222222222222222222222222222222222
+22222222222222222222222210010101122222222222222222222222222222222222222222222222222222222222222222223777732222222223444444444444
+44443444444444444444344444444444444444444444434444444444444443444444444444444443222222237777773337322222222222222222222222222222
+22222222222222222222222222222222100404041222222222222222222222222222222222222222222222222222222222222222222313333222222222223444
+44444444444443444444444444443444444444444444444444443444444444444444344444444444444444322222222237733377777322222222222222222222
+22222222222222222222222222222222222222221001010112222222222222222222222222222222222222222222222222222222222222222223111132222222
+22222344444444444444443444444444444443444444444444444444444434444444444444443444444444444444432222222222333777777333222222222222
+22222222222222222222222222222222222222222222222210040404122222222222222222222222222222222222222222222222222222222222222222231111
+32222222222222344444444444444434444444444444434444444444444444444444344444444444444344444444444444443222222222222377777337322222
+22222222222222222222222222222222222222222222222222222222100101011222222222222222222222222222222222222222222222222222222222222222
+22233333322222222222222344444444444444434444444444444344444444444444444444434444444444444443444444444444444322222222222223773337
+77322222222222222222222222222222222222222222222222222222222222221004040412222222222222222222222222222222222222222222222222222222
+22222222333555553322222222222222344444444444444434444444444444344444444444444444444344444444444444344444444444444432222222222222
+22337777773222222222222222222222222222222222222222222222222222222222222210010101122222222222222222222222222222222222222222222222
+22222222222233335555555533222222222222222344444444444444344444444444443444444444444444444443444444444444443444444444444444322222
+22222222222377777732222222222222222222222222222222222222222222222222222222222222100404041222222222222222222222222222222222222222
+22222222222222222233555555555533333322222222222222344444444444444344444444444434444444444444444444344444444444444344444444444444
+43222222222222222223733333332222222222222222222222222222222222222222222222222222222222221001010112222222222222222222222222222222
+22222222222222222222222233555555555555533333322222222222222344444444444443444444444444434444444444444444443444444444444443444444
+44444444322222222222222222233555555533333222222222222222222222222222222222222222222222222222222210040404122222222222222222222222
+22222222222222222222222222222223555555333333335333333222222222222222344444444444443444444444444344444444444444444434444444444444
+34444444444444432222222222222222223355555555555553332222222222222222222222222222222222222222222222222222100202021222222222222222
+22222222222222222222222222222222222222235533335555555533533333222222222222222344444444444434444444444443444444444444444444344444
+44444444344444444444443222222222222222222333335555555555555533222222222222222222222222222222222222222222222222221002020212222222
+22222222222222222222222222222222222222222222222333555555555555553353332222222222222223444444444444434444444444434444444444444444
+43444444444444434444444444444432222222222222222233333533333355555555553222222222222222222222222222222222222222222222222210020202
+12222222222222333222222222222222222222222222222222222335555555555555555553553532222222222222223444444444444344444444444434444444
+44444444434444444444444344444444444443222222222222222223333353555555333335555532222222222222222222222222222222222233322222222222
+10020202222222222222223443332222222222222222222222222222222235555555555555555553335555322222222222222234444444444444344444444444
+34444444444444444344444444444434444444444444322222222222222222233333355555555555533353222222222222222222222222222222222333443222
+22222222200202022222222222222234444433222222222222222222222222222222355555553333333355533333555322222222222222234444444444443444
+44444444344444444444444443444444444444344444444444432222222222222222222333553555555555555555332222222222222222222222222222222334
+44443222222222222002020222222222222222234444443222222222222222222222222222222355533355555555335533335553222222222222222344444444
+44443444444444443444444444444444344444444444443444444444444322222222222222222223355533555555555555555533222222222222222222222222
+22223444444322222222222220020202222222222222222344444443322222222222222222222222222223553555555555555533533355553222222222222222
+34444444444443444444444434444444444444443444444444444344444444444432222222222222222222335533333555553335555555553222222222222222
+22222222223344444443222222222222200202022222222222222223444444444322222222222222222222222222223355553555555335335553555532222222
+22222222234444444444434444444444344444444444444434444444444443444444444443222222222222222222223553333335333355533335555532222222
+22222222222222222344444444432222222222222002020222222222222222234444444444322222222222222222222222222355553355555553333555535555
+32222222222222222344444444444434444444444344444444444444344444444444344444444444432222222222222222222355533333535555555555533555
+32222222222222222222222234444444444322222222222220020202222222222222222344444444444322222222222222222222222235555333555555333335
+55555555322222222222222222344444444444344444444443444444444444434444444444443444444444443222222222222222222235555333533555555555
+55555333222222222222222222222223444444444443222222222222200202022222222222222223444444444444333322222222222222222223555533355333
+33733333555555553222222222222222222344444444443444444444434444444444444344444444444434444444444432222222222222222222355553555333
+35555553355555532222222222222222222222234444444444432222222222222002020222222222222222223444444444443444333322222222222222235553
+33355377777353335555555532222222222222222223444444444443444444444344444444444443444444444443444444444443222222222222222222223555
+53555333335555553333555322222222222222222222223444444444443222222222222220020202222222222222222234444444444443444444322222222222
+22223553333333777773555355555555322222222222222222223444444444434444444443444444444444434444444444434444444444432222222222222222
+22235555555533333355553553335555322222222222222222223344444444444432222222222222200202022222222222222222344444444444434444444332
+22222222222223533333377777735553555555555322222222222222222234444444444344444444434444444444444344444444444344444444443222222222
+22222222222355555555333333333333333335553222222222222222223343444444444444322222222222222002020222222222222222223444444444444434
+44444443322222222222223333553777773555555555555553222222222222222222234444444444344444444344444444444443444444444434444444444322
+22222222222222222223555555553333333737373333355322222222222222223344434444444444443222222222222220020202222222222222222234444444
+44444434444444444322222222222235555533777735555555555555532222222222222222222344444444443444444443444444444444434444444444344444
+44444322222222222222222222235555555335537777373733333553222222222222222344444344444444444432222222222222200202022222222222222222
+34444444444444344444444443222222222222355555533337355555555555555322222222222222222222344444444434444444434444444444443444444444
+43444444444432222222222222222222222355555553555377737373533335322222222222222234444434444444444444322222222222222002020222222222
+22222222344444444444443444444444443222222222223555555555333355555555555555322222222222222222223444444444344444444434444444444434
+44444444434444444444322222222222222222222235555555555555373737335533533222222222222223444444344444444444443222222222222220020202
+22222222222222223444444444444434444444444333322222222235555555555555335555555555553222222222222232222223444444444344444444344444
+44444434444444444344444444432222222222222222222222355555555555553737333555555532222222222222344444443444444444444432222222222222
+20020202222222222222222234444444444444344444444437773322222222235555555555555555555555555553222222222223322222234444444443444444
+44344444444444344444444434444444444322222222222222222222235555555555555533333555555553222222222222223444444434444444444444322222
+22222222200202022222222222222222344444444444444344444444377373333222222233555555555555555555555555532222222222343222222344444444
+43444444443444444444443444444444344444444432222222222222222222222355555555555555555555555555532222222222222344444444344444444444
+44322222222222222002020222222222222222223444444444444443444444444333737773333333333335555555555555555555555532222222234432222222
+34444444434444444434444444444434444444443444444444322222222232222222222235555555555555555555555555553222222222222223444444443444
+44444444443222222222222220020202222222222222222234444444444444434444444444433337777373737773333555555555555555555555532222222344
+43222222344444444344444444344444444444344444444434444444432222222222332222222223555555555555555555555555555532222222222222344444
+44434444444444444432222222222222200202022222222222222222344444444444444344444444444344333737377377777733355555555555555555555322
+22223444432222222344444444344444443444444444443444444443444444444322222222234432222222235555555555555555555555555553222222222222
+22344444444344444444444444322222222222222002020222222222222222223444444444444443444444444444344323333737777777773333333333335555
+55555532222234444322222223444444443444444434444444444434444444434444444432222222222344432222223555555555555555555555555533322222
+22222222234444444443444444444444443222222222222220020202222222222222222234444444444444434444444444443444322333377777777777333222
+22223555555555532222344443222222223444444434444444344444444443444444444344444444322222222223444322222235555555555555555555553333
+33322222222222233344444444434444444444444432222222222222200202022222222222222222344444444444444344444444444434444322233337777777
+77373333222223555555555322223444432222222234444444344444444344444444434444444443444444443222222222234444322223555555555553333333
+33333377377322222222233434444444444344444444444444322222222222222002020222222222222222223344444444444443444444444444434444322223
+73377777737737373332223555555555322234444322222222344444443444444443444444444344444444434444444322222222223444443222355555555553
+32222222223777773373222222223444344444444443444444444444433222222222222220020202222222222222222223444444444444434444444444444344
+44432223777333777373737777733223555333353222344444322222222344444443444444434444444443444444443444444443222222222234444432223555
+55555532222222222223777373732222222344443444444444434444444444444322222222222222200202022222222222222222234444444444444344444444
+44444344444432377777773333333337777733333533444353223444443222222223444444434444444344444444434444444434444444432222222222344444
+32235555535555322222222222237737377322222234444434444444444344444444444443222222222222222002020222222222222222222344444444444443
+44444444444443444444433777777773222222233377377735334444353234444443222222234444444344444443444444444344444444344444443222222222
+22344444323555333355532222222222222233737777322223444444344444444443444444444444432222222222222220020202222222222222222223444444
+44444443444444444444434444444337777777322222222222333777335344444332344444432222222344444443444444434444444443444444443444444432
+22222222234444443235334443553222222222222222337377773222344444434444444444434444444444444322222222222222200304032222222222222222
+23444444444444434444444444444344444444377777773222222222222223333353444444333444444432222222344444434444444344444444434444444344
+44444322222222222344444433534444435532222222222222223737777332234444444344444444444344444444444443222222222222222002020222222222
+22222222234444444444444344444444444443444444437777377732222222222222222222334444444434444444322222223444444434444443444444444344
+44444344444443222222222223444444333444444353222222222222222223377773733444444443444444444443444444444444432222222222222220040404
+22222222222222222344444444444443444444444444434444444377773777322222222222222222223344444444444444444322222234444444344444434444
+44444344444443444444432222222222344444443344444443322222222222222222237777373344444444434444444444434444444444444322222222222222
+20020202222222222222222223444444444444434444444444444344444443777377732222222222222222222223444444444444444443222222344444443444
+44434444444443444444434444443222222222223444444434444444333222222222222222222377737373444444444344444444444344444444444443222222
+22222222200404042222222222222222234444444444444344444444444443444444437773777322222222222333333332233444444444444444443222222344
+44443444444344444444434444443444444432222222222344444444444444443322222222222222222222377373734444444443444444444443444544444444
+43222222222222222002020222222222222222222344444444444443444444444444434444443777737773222222222334444444433234444444444444444432
+22222344444434444443443333444344444434444444322222222234444444444444444432222222222222222222223737377734444444434444444444434444
+44444444432222222222222220040404222222222222222223444444444444434444444444444344444437777377732222222334444444444443344444444444
+44444443222223444444344444433332223343444444344444432222222222344444444444444443323333333332222222222237337777344444444344444444
+44434444444444444322222222222222200202022222222222222222234444444444444344444444444443444444377773773322222222344444444444444444
+44444444444444443222223444444344433322222222333444443444444322222222234444444444444444433344444444433322222222333777773444444443
+44444444444344444444444443222222222222222004040422222222222222222344444444444443444444444444434444443777377734322222222334444444
+44444444444444444444444432222234444443333222222222222223334344444432222222223444444444444444444344444444444332222222222337777773
+44444443444444444443444444444444432222222222222220020202222222222222222223444444444444434444444444444344444437773777343222222222
+23444444444444444444444444444444432222344444332222222222222222222233444444322222222344444444444444444444444444444332222222222223
+77777773444444434444444444434444444444444322222222222222200404042222222222222222234444444444444344444444444443444443777737773443
+22222222223444444444444444444444444444444432222343332222222222222222222222223334443222222223444444444444444444444444444432222222
+22222223777777334444444344444444444344444444444443222222222222222002020222222222222222222344444444444443444444444444434444437777
+37773444322222222223444444444444444444444444444444322333322222222222222222222222222222233322222222344444444444444444444444444443
+22222222222223337777733344444443444444444443444444444444432222222222222220040304222222222222222223444444444444434444444444444344
+44437773777344443222222222223444444444444444444444444444443332222222222222222222222222222222222223322222234444444444444444444444
+44444432222222222222344437773737344444434444444444434444444444444322222222222222200202022222222222222222234444444444444344444444
+44444344444377737773444443222222222223444444444444444444444444443322222222222222222332222222233222222222222333222344444444444444
+44444444444443222222222222334444377733773444444344444444444344444444444443222222222222222004040422222222222222222344444444444443
+44444444444443444437777377734444432222222222234444444444444444444444433322222222222223333334322222222343333332222222223333444444
+44444444444444444444322222222222234444443773377734444443444444444443444444444444432222222222222220020202222222222222222223444444
+44444443444444444444434444377737777344444432222222222234444444444444444443333222222233333222344444433322222233344444432223333322
+23334444444444444444444444432222222222223444444437373777734444434444444444434444444444444322222222222222200404042222222222222222
+23444444444444434444444444444344443777377734444444322222222222344444444444444443322322222223344443234444444443322223344444444432
+34444332222333344444444444444444443222222222222234444444437377777344444344444444444344444444444443222222222222222002010122222222
+22222222234444444444444344444444444443444437773777344444444322222222222344444444444433323333322222334444443444433444433322333444
+43344443444444332222223333444444444444444322222222222223444444444373777773444443444444444443444444444444432222222222222220040404
+22222222222222222344444444444443444444444444434443777737773444444443222222222222344444444333222232223222233344444344443434434333
+22333434434344443444443332222234433344444444444432222222222222234444444443377777334444434444444444434444444444444322222222222222
+20000000222222222222222223444444444444434444444444444344437773777734444444443222222222223444443332232222232223222222344333444433
+34443322222233444333444433344322222223444443334444444444322222222222223444444444437777737734444344444444444344444444444443222222
+22222222200404042222222222222222234444444444444344444444444443444377737773444444444432222222222223443323223233223233333222223332
+34444444444443222222344444444444432333222222344444444433344444432222222222222234444444444337773737344443444444444443444444444444
+43222222222222222001020222222222222222222344444444444443444444444444434443777377734444444444322222222222223332223322223322223223
+22222222344444344444432222223444444344444322222222234444444444444334444322222222222222344444444443377737373444434444444444434444
+44444444432222222222222220040404222222222222222223444444444444434444444444444344377737777344444444444322222222222322222222222222
+22222222322222223444334444444322222234444444334443222222223444444444444444433432222222222222234444444444434373737734444344444444
+44434444444444444322222222222222200202022222222222222222234444444444444344444444444443443777377773444444444443222222222332233233
+33223333223332232322222234443444444432222222234444444344432222222344444444444444444443322222222222222344444444444343373777734443
+44444444444344444444444443222222222222222004040422222222222222222344444444444443444444444444434437773777344444444444432222222332
+22222322223322332233233222322222344433344444322222222344444333444322222234444444444444444444444332222222222234444444444443433377
+77734443444444444443444444444444432222222222222220020202222222222222222223444444444444434444444444444343777377773444444444444322
+22233322222222223333333333332222223222223444334444432222222222344444334443222222344444444444444444444444333222222222344444444444
+43443377737344434444444444434444444444444322222222222222200304042222222222222222234444444444444344444444444443437773777734444444
+44444432223443222222233234444444444333332333222234444344443232222222232344443444432222234444444444444444444444444433222222234444
+44444444434437777373443444444444444344444444444443222222222222222002020222222222222222222344444444444443444444444444434377737773
+34444444444444322333333333233553333333333333555533532222344443444433322222222333444434444322223444444444444444444444444444443222
+22234444444444444344437737773434444444444443444444444444432222222222222220040404222222222222222223444444444444434444444444444343
+77737773344444444444443234444355553555553444443444435555555532222344434344343222222223434434344432222234433333334433333333443333
+33344322222344444444444443444373773734344444444444434444444444444322222222222222200202022222222222222222234444444444444344444444
+44444337773777733444444444444432344443555555555534444434444355555555322223444433333332222222233333334444322223444353355344355335
+53443553353444322223444444444444434443377377343444444444444344444444444443222222222222222004040422222222222222222344444444444443
+44444444444443377737777334444444444444333333335555555555333333333333555555555322223444434432222222222223443444432222234443533553
+44355335534435533534443322234444444444444344433737773434444444444443444444444444432222222222222220020202222222222222222223444444
+44444443444444444444433777377734344444444444443444444355555555553444444444435555555553222234444344322222222222234434444322223444
+43555553443555555344355555344443322344444444444443444337377734344444444444434444444444444322222222222222200404032222222222222222
+23444444444444434444444444444377737777343444444444444434444443555555555534444444444355555555553222234444443222222222223444444432
+22234444433555334433355533443355533444443234444444444444434444337777733444444444444344444444444443222222222222222002020222222222
+22222222234444444444444344444444444443777377773434444444444444333333335555555555333333333333555555555532222344444432222222222234
+44444432223444444333333344333333334433333334444433344444444444444344443777777343444444444443444444444444432222222222222220040404
+22222222222222222344444444444443444444444444337773777344344444444444443444444355555555553444443444435555555555332222344444432222
+22222344444443222234444443555553443555555344355555344444433444444444444443444437777773434444444444434444444444444322222222222222
+20020202222222222222222223444444444444434444444444443377737773443444444444444434444443555555555534444434444355555555553322222344
+4443222222222344444432222344444443333333443533333344333333344444433444444444444443444437777733434444444444344444444444443222222
+22222222200404042222222222222222234444444444444344444444444437773777734434444444444444333333335555555555333333333333555555555533
+32222334444432222222344444433222344444444333343344333334334433433334444444344444444444444344444377737343444444444443444444444444
+43222222222222222002020222222222222222222344444444444443444444444444377737777344344444444444443444344335555555534434444443443555
+55555344322223334444432222223444443332223444444444444444444444444444444444444444443444444444444443444443773733434444444444434444
+44444444432222222222222220040404222222222222222223444444444444434444444444443777377734443444444444444434443444355555555344344444
+43443555555553443322233344444432222344444433322344443333333443333333344333333334433333334434444444444444434444437733773344444444
+44434444444444444322222222222222200202022222222222222222234444444444444344444444444437773777344434444444444444344443443355555334
+43333333333443555555344333222332344444322223444443233223444435333534435533553443553355344355335344344444444444444344444373377733
+44444444444344444444444443222222222222222003020222222222222222222344444444444443444444444443777377773444344444444444443333333433
+33333343434444344434343355334343443222222344443222234444322222234444353335344355335534435533553443553353443444444444444443444443
+37377733444444444443444444444444432222222222222220020202222222222222222223444444444444434444444444437773777734443444444444444434
+44443434433344443444443444433444334443344432222222344432222344432222223444443555553443555555344355555534435555534434444444444444
+43444444337777334444444444434444444444444322222222222222200202022222222222222222234444444444444344444444444377737773444434444444
+44444434444443334434443334444434444443343433344444432223223444432234444322322234444433555334433355533443355533344335553344344444
+44444444434444443777777344444444444344444444444443222222222222222002020222222222222222222344444444444443444444444443773777734444
+34444444444444333333333333333333333333333333333333333333333322233223444322344432233223444444333333344333333334433333333443333333
+44344444444444444344444437777773444444444443444444444444432222222222222220020202222222222222222223444444444444434444444444377737
+77734444344444444444443444444344444444443444444444434444444444344444322233234443223444323322234444443335333443533333344333333534
+43333333443444444444444443444444377777334444444444434444444444444322222222222222200202022222222222222222234444444444444344444444
+44377737777344443444444444444434444443444444444434444444444344444444443444443222343234432234432343223444444433353334435333433443
+34333534433433334434444444444444434444444377737334444444444344444444444443222222222222222002020222222222222222222344444444444443
+44444444443777377734444434444444444444333333333333333333333333333333333333333333333332234443344322344334443234444444333333354333
+33433443343333344334333344344444444444444344444443773737344444444443444444444444432222222222222220020203222222222222222223444444
+44444443444444444437737777344444344444444444443444444444443444444444443444444444344444444444323344433443223443344433444444444444
+44444444444444444444444444444444443444444444444443444444437733773444444444434444444444444322222222222222200303032222222222222222
+23444444444444434444444443777377773444443444444444444434444444444434444444444434444444443444444444443333444444322223444444333333
+33333333333333333333333333333333333333333334444444444444434444444433737734444444444344444444444443222222222222222005050522222222
+22222222234444444444444344444444437773777734444434444444444444333333344444333333344444344444444433333334444332233444443222234444
+43235555555555555555555555555555555555555555555555344444444444444344444444373777734444444443444444444444432222222222222220030505
+22222222222222222344444444444443444444444377737777344444344444444444443555553444443555553444443333334444343555344443532233444432
+22234444333555555555555555555555555555555555555555555555553444444444444443444444443377777344444444434444444444444322222222222222
+20050505222222222222222223444444444444434444444437773777734444443444444444444435555534444435555534444435555344443435553444435532
+22334432222344332235555555555555555555555555555555555555555555555534444444444444434444444437777733334444444344444444444443222222
+22222222200505052222222222222222234444444444444344444444377737777344444434444444444444355555333333355555333333355533333333555533
+33335532222344322223443223555555555555555555533333333333333333333333333333344444444444444344444444437333777344444443444444444444
+43222222222222222003030322222222222222222344444444444443444444443777377773444444344444444444443555555555555555555555555555344444
+35555555343555532223443222344432233333333333333333333366666663222222222222222222223444444444444443444444443337777773344444434444
+44444444432222222222222220050505222222222222222223444444444444434444444437773777734444443444444444444435555555555555555555555555
+33444444355555553435555322234443223444323233333333322222222223663636632222222223333333332234444444444444434444444437777733377344
+44434444444444444322222222222222200305052222222222222222234444444444444344444443777377773444444434444444444444355553333333333333
+33355533444444435555555553355555322234432234432232366366366322223323336636366333332222366666363222344444444444444344444444373333
+77777344444344444444444443222222222222222005050522222222222222222344444444444443444444437773777734444444344444444444443555533443
+33343434333333444444443555555555533555553222344322344322322366366366333336366366363663636323323636636632223444444444444443444444
+44337777777333444443444444444444432222222222222220030303222222222222222223444444444444434444444377737777344444443444444444444435
+55553344444444444433334444444355555555555343555532222343223432232223663663663663663663636636636366363363666363222234444444444444
+43444444437777773333733444434444444444444322222222222222200505052222222222222222234444444444444344444437777377773444444434444444
+44444435555334334344444444444443333343335555555553433555532223322223322322236663636636636636636366363663663666636636632222344444
+44444444434444444337733337337333444344444444444443222222222222222005050522222222222222222344444444444443444444377737777344444444
+34444444444444355553333343334444333333343333333533555555343335555322232222223223222236636366636636366363663636366366363666363222
+22344444444444444344444444433373373333734443444444444444432222222222222220020202222222222222222223444444444444434444443777377773
+44444444344444444444443555555333335533333433433433443433433555553435355555322222222222322222366366363333333333333333333333636636
+6366322222344444444444444344444444337373333773734443444444444444432222222222222220020202222222222222222234444444444444344444437
+77377773444444443444444444444435555533353355334443444433344444343555555344333555553222222222223222222366333363663636636366363636
+33333366636322222234444444444444434444444433733373777377344344444444444443222222222222222002020222222222222222222344444444444443
+44444377737777734444444434444444444444355555555535533334444444443444444433355553434435555532222222222232222223333633366363333333
+33336666636363333363222222344444444444444344444444433377737377377343444444444444432222222222222220020202222222222222222223444444
+44444443444443777377773444444444344444444444443555555555555553444444444444444444334355534333555555532222222223222222236663336336
+36366363663633333366666633322222223444444444444443444444444437377377377373434444444444444322222222222222200202022222222222222222
+23444444444444434444437773777734444444443444444444444435555555555533333344444444444444443443555343335555555322222222232222222233
+36636666666666666666663633333336663222222234444444444444434444444444373773733773773344444444444443222222222222222002020222222222
+22222222234444444444444344444377737777344444444434444444444444355555555553334433444444434444444444355534333555335553222222222322
+22222236663633363333333333333366666636333322222222344444444444444344444444443737733773773773444444444444432222222222222220020202
+22222222222222222344444444444443444437773777734444444444344444444444443555555555333444334433333433344444443355335555553335553222
+22223222222222333363363322222333663332333333336663222222223444444444444443444444444377377377733773773444444444444322222222222222
+20020202222222222222222223444444444444434444377737777344444444443444444444444435555555533444444433553333344444444343553355555343
+35553222222232222222222363666663222222366663332236636333322222222234444444444444434444444443773773333733773773444444444443222222
+22222222200202022222222222222222234444444444444344443777377773444444444434444444444444355555555334444433553333333444444444333343
+55555343355553222223222222222223666666632222233666663222366663663222222222344444444444444344444444437737373777337737734444444444
+43222222222222222002020222222222222222222344444444444434444437737777734444444444344444444444443555555533444443555333335334444444
+44435343555555333555532222232222222222236666666322333333666332223666666322222222223444444444444443444444444377373737773737737734
+44444444432222222222222220030404222222222222222223444444444444344443777377773444444444443444444444444435555533334443355553553334
+3444444444335343555553443555532222232222222222236666663r233333436663222223666663222222222234444444444444434444444443773737333337
+73773773444444444322222222222222200404042222222222222222234444444444443444437773777734444444444434444444444444355553333344333555
+55533444344444444443334355555343555555322232222222222222333333322233333636632222233366322222222222344444444444444344444444437377
+37737773773773773444444443222222222222222004040422222222222222222344444444444434444377737777344444444444344444444444443555534333
+33335555555333443344444443335533555553355555553222322222222222222222222222334433366322222222332222222222223444444444444443444444
+44377377377377737737773773444444432222222222222220040404222222222222222223444444444444344443773777734444444444443444444444444435
+55534343337355555555553333444444435555343555335555555532223222222222222222223323222233333333222223332222222222222234444444444444
+43444444443773773773777377737737734444444322222222222222200404042222222222222222234444444444443444437737777344444444444434444444
+44444435555334434337335555555553334444433555555343334355555555532322222222222222222333333222222222222223317332222222222222344444
+44444444434444444437737737733333777377737734444443222222222222222004040422222222222222222344444444444434443777377773444444444444
+34444444444444355555533337333733333333553333334355555555333335555555555323222222222222222234444432222222222222317732222222222222
+22344444444444444344444444377377377737773777377377344444432222222222222220040302222222222222222223444444444444344437773777334444
+44444444344444444444443555555555535553777777735555343533555555555555555555555553232222222222222222344444332222222222223773222222
+22222222223444444444444443444444443773773777377737773773773444444322222222222222200404042222222222222222234444444444443444377377
+77334444444444443444444444444435555555555555553377777735555335555555555555555555555555553222222222222222223444443222222222222223
+73322222222222222234444444444444434444444437737773773333377737737734444443222222222222222002020222222222222222222344444444444434
+44377377773344444444444434444444444444355555555555555555333777735555555555555555555555555555555532222222222222222223443322222222
+22222223771332222222222222344444444444444344444444377377737737777377377377344444432222222222222220040404222222222222222223444444
+44444434437773777343444444444444344444444444443555555555555555555553333335555555555555555555555555555555322222222222222222223332
+22222222222222223333222222222222223444444444444443444444443773777377737773773773734444444322222222222222200202022222222222222222
+23444444444444344377737773434444444444443444444444444435555555555555555555555555555555555555555555555555555555553222222222222222
+22222222222222222222222222222222222222222234444444444444434444444437737777377333337737737344444443222222222222222004030422222222
+22222222234444444444443443773777734344444444444434444444444444333333333333333333333333333333333333333333333333333333333333333333
+33333333333333333333333333333333333333333333333333344444444444444344444444437737773773777377377373444444432222222222222220020202
+22222222222222222344444444444434437737777343444444444444344444444444443222222222222222222222222222222222222222222222222222222222
+35555555555555555555555555555555555555555555555555555555553444444444444443444444444437737737737733373773734444444322222222222222
+20040404222222222222222223444444444444343777377734434444444444443444444444444432222222222222222222222222222322222222222222222222
+22222222355555555555555555555555555555555555555555555555555555555534444444444444434444444444437737737733773737733444444443222222
+22222222200000002222222222222222234444444444443437773777344344444444444434444444444444322222222222222222222222223334322222222222
+22222222222222223555555555555155555555555555555555555555555555555555555555344444444444444344444444444377377377377737373734444444
+43222222222222222004040422222222222222222344444444444434377377773443444444444444344444444444443222222222222222222222222344444333
+22222222222222222222222235555555555555555555555555533335555555555555555555555555553444444444444443444444444443377377373733373737
+34444444432222222222222220020202222222222222222223444444444444343773777344434444444444443444444444444432222222222222222222222334
+44444444322222222222222222222222355555555555555555555555553333335555555555555555555555555534444444444444434444444444434377377333
+77733737344444444322222222222222200403042222222222222222234444444444443377737773444344444444444434444444444444322222222223222322
+22222234444444432222222232223222222222223555555555555555555555553333663333555555555555333335555555344444444444444344444444444344
+33737373777337373444444443222222222222222002020222222222222222222344444444444433777377734443444444444444344444444444443223222222
+33223332222222344444444332223223332333222223322235555555333333555555553366663366663355555553337777735555553444444444444443444444
+44444344443377333333373344444444432222222222222220040404222222222222222223444444444444337737773444434444444444443444444444444432
+23332222333233322222334344444434433233233335332222343222355555537733773555555366666666666666355555537777333355555534444444444444
+43444444444443444443377337733373444444444322222222222222200202022222222222222222234444444444443377377734444344444444444434444444
+44444432223432223333332322334444344444344432333333333232234322223555553777737773555553333666666666333555553777735553355555344444
+44444444434444444444434444443373773733734444444443222222222222222004040322222222222222222344444444444437773777344443444444444444
+34444444444444322234432323333333322344443444434444322335333333323443222235555537773377735555533336666666633335555537777355555555
+55344444444444444344444444444344444437373373333344444444432222222222222220020202222222222222222223444444444444377377734444434444
+44444444344444444444443222344323333333333223444434444344432222233333333334432222355553337377373335555363666666666636355555377735
+55555555553444444444444443444444444443444444433337777773444444444322222222222222200404042222222222222222234444444444443773777344
+44434444444444443444444444444432223443233333532222223444344443444322222353233234344322223555537733773377355555366666666666633555
+55377773555555555534444444444444434444444444434444444377773333344444444443222222222222222004040422222222222222222344444444444437
+73777344444344444444444434444444444444322234443322223333222234444344344432222235322222343443222235555337737337773555555333366666
+33355555555377735555555555344444444444444344444444444344444444333337344444444444432222222222222220040404222222222222233223444444
+44444377737734444443444444444444344444444444443222344434322223553222234443443444322223553222234434432222355555373733377735555536
+66366666366355555553777735555555553444444444444443444444444443444444444444333444444444444322332222222222200404042222222222222343
+23444444444443773777344444434444444444443444444444444432223444344322223553222234434434443232355322233444344322223555553337777373
+55555536633666663663555555537777733335555534444444444444434444444444434444444444443773444444444443234322222222222002020222222222
+22222234334444444444437737773444444344444444444434444444444444322234443443222235532232344433344322333332223443443443222235555553
+37777333555553666336666636663555555533777773555555344444444444444344444444444344444444444433334444444444333432222222222220040404
+22222222222222344434444444444377377344444443444444444444344444444444443222344434432222235333432344343443223333322234434434432222
+35555555333373555555536663366666366635555555553333355555553444444444444443444444444443444444444444433444444444434444322222222222
+20020202222222222222223444344444444437773773444444434444444444443444444444444432223444344433222233334323434443432343432322344344
+34432222355555555553355555555366633666663366355555555555555555555534444444444444434444444444434444444444444434444444443444443222
+22222222200404032222222222222234444344444444377377734444444344444444444434444444444444322234443444343223334444323344433234444332
+23444344344322223555555555555555555553666336666633663555555555555555555555344444444444444344444444444344444444444444344444444344
+44443222222222222002030422222222222222344444344444443773773444444443444444444444344444444444443222344434443432223444444334444433
+34444432234443443443222235555555555555555555363333366666333333555555555555555555553444444444444443444444444443444444444444443444
+4444344444443222222222222004040422222222222222234444434444443777773444444443444444444444344444444444443222344434443432222³444443
+43444344344443222344434434432222355555555555555555553366363666663366635555555555555555555534444444444444434444444444434444444444
+44443444444344444443222222222222200404042222222222222223444444344444377773444444444344444444444434444444444444322234443444344322
+23444434443443443444432223444344344322223555555555555555555533333636666633333355555555555555555555344444444444444344444444444344
+44444444444344444443444444432222222222222004040422222222222222234444443444443777734444444443444444444444344444444444443222344434
+44344322223444344443344434443222234443443443222235555555555555555553366633666666363663355555555555555555553444444444444443444444
+44444344444444444443444444344444444322222222222220020305222222222222222344444443444437773444444444434444444444443444444444444432
+22344434443443222234433444334444334432232344434434432222355555555555555555536663336666663633663555555555555555555534444444444444
+43444444444443444444444444434444434444444443222222222222200404042222222222222223444444434444377344444444444344444444444434444444
+44444432223444344434433333334343443434443343333333444344344322223555555555555555555363366366666663663635555555555555555555344444
+44444444434444444444434444444444444344444344444444432222222222222003040422222222222222234444444434444334444444444443444444444444
+34444444444444322234443444344344334343443344434343334344434443443443222235555555555555555553366636666366663663335555555555555555
+55344444444444444344444444444344444444444443443434444444444322222222222220030404222222222222222344444444344433444444444444434444
+44444444344444444444443222344434443443443443334443444434433444344344434434432222355555555533333333366663666633666633666333333333
+55555555553444444444444443444444444443444444444444433334344444444443222222222222200305052222222222222223444444443444334444444444
+44434444444444443444444444444432223444344434434434443344333433344334334333434344344322223555555533666666663333336663636666363333
+66666666335555555534444444444444434444444444434444444444444343434444444444432222222222222004040422222222222222234444444443443434
+44444444444344444444444434444444444444322234343334333333333333343443344333333334333333333333222235555553666666333666666633636636
+33366666663366666635555555344444444444444344444444444344444444444334434344444444444322222222222220020202222222222222222344444444
+43443443444444444443444444444444344444444444443222333334333433443344343344434443343343444334334334332222355555536666666663663366
+36336663636633663366666666355555553444444444444443444444444443444444444434444343444444444443222222222222200307072222222222222222
+34444444443434434444444444434444444444443444444444444432223444344434434444443443343434333434444444444444344322223555553333333666
+66363633366666666363636636666633333355555534444444444444434444444444434444444443444434434444444444322222222222222002020222222222
+22222222344444444434434434444444444344444444444434444444444444322234444444444434443334343434434433333433343444444443222235555533
+33666336636636636666666666366366366633666333355555344444444444444344444444444344444444344444343444444444443222222222222220030707
+22222222222222223444444444434344434444444443444444444444344444444444443222344444334333333344343443444344334433443333343343332222
+35555555553366633663666666666666666666366333663335555555553444444444444443444444444443444444434444443434444444444432222222222222
+20020202222222222222222234444444444343444434444444434444444444443444444444444432223333334334433443443344433433443344434434443343
+34332222355555555555333663336666666666666666663336663355555555555534444444444444434444444444434444443444444434344444444444322222
+22222222200302022222222222222222344444444443434444434444444344444444444434444444444444322233443344344444444443344343343343444444
+44443443444322223555555555555553333366666666666666666633333355555555555555344444444444444344444444444344444434444444343444444444
+4432222222222222200202022222222222222222344t444444443344444344444443444444444444344444444444443222344434444444444443334334433433
+43333344433444344443222235555555555555336666366666666666666663666663555555555555553444444444444443444444444443444443444444443434
+44444444443222222222222220020202222222222222222234444444444433444444344444434444444444443444444444444432223444444344334443322334
+34444444432222333343434343332222355555555555536666666366663666636666636666663555555555555534444444444444434444444444434434434444
+44444344444444444432222222222222200203072222222222222222344444444444334444444344434344444444444434444444444444322234334433334333
+32222234444444443322222234433443344322223555555555555366666663666353663336666366666663555555555555344444444444444344444444444333
+34344444444443444444444444322222222222222003030422222222222222223444444444443344444443444333444444444444344444444444443222334433
+44334432222222334444444443222223444344434443222235555555555553666663353335553355533335366666635555555555553444444444444443444444
+44443343443444444444434444444444443222222222222220030707222222222222222234444444444443444444443444343344444444443444444444444432
+22234433444344322222222234444444332222234444444444432222355555555555536666355555555555555555555366666355555555555534444444444444
+43444444443344434344444444444444444444444432222222222222200404042222222222222222344444444444434444444434443444334444444434444444
+44444432222344444444443222223332344444443322222344444444444322223555555555553666635555555355555535555555366663555555555555344444
+44444444434444444344444343444444444434444444444444322222222222222007030422222222222222223444444444444344444444434434444434444444
+34444444444444322222344444444432222234323444444432222223444444444432222235555555555536666355555553335533355555553666635555555555
+55344444444444444344444434444434434444444444344444444444443222222222222220040404222222222222222234444444444443444444444344344444
+34444444344444444444443222223444444444322222343334444444332222223444444443222222355555555555366663555555553433443555555536666355
+55555555553444444444444443444443444444343444444444443444444444444432222222222222200404042222222222222222344444444444434444444444
+34344444434444443444444444444432222223344444332222233333334444444322222223344444322222223555555555553666635555555534444435555555
+36666355555555555534444444444444434444344444443434444444444434444444444444322222222222222004040422222222222222223444444444444434
+44444444343444444344443434444444444444322222222333332222222355333344444432222222222333332222222235555555555553666355555555344444
+35555555366635555555555555344444444444444334434444444434344444444444344444444444443222222222222220040403222222222222222234444444
+44444434444444444343444444344443344444444444443222222222222222222222333333334443222222222222222222222222355555555555536663555555
+53444444435555553666355555555555553444444444444443344344444444334444444444443444444444444432222222222222200404042222222222222222
+34444444444444344444444443434444444344434344444444444432222222222233232222222333333344322222333322222222222222223555555555555366
+63555553344444444435555536663555555555555534444444444443334434444444443344444444444434444444444444322222222222222004040422222222
+22222222344444444444443444444444443344444443444344334444444444322222222223333332222233323344433222234344332222222222222235555555
+55555536635555333444444444335555366355555555555555344444444444344344344444444433444444444444344444444444443222222222222220040404
+22222222222222223444444444444434444444444433444444443443444434444444443222222222334444322233343332333222222332334322222222222222
+35555555555555366635555553334443335555536663555555555555553444444444434443434444444444334444444444443444444444444432222222222222
+20040404222222222222222234444444444444344444444444434444444434434444434444444432222222223444443222344444322222222222222344322222
+22222222355555555555555366355555555344355555555366355555555555555534444444443444434344444444443444444444444434444444444444322222
+22222222200404042222222222222222344444444444443444444444444344444444434344444434444444322222222334444433223334333222222222222223
+44322222222222223555555555555555366355555555335555555536635555555555555555344444444344444343444444444434444444444444344444444444
+44322222222222222004040322222222222222223444444444444434444444444443444444444343444444434444443222222222334444322222343222222222
+22222234432222222222222235555555555555555366355555553355555555363555555555555555553444444434444443344444444444344444444444443444
+44444444443222222222222220040404222222222222222234444444444444344444444444434444444443434444444434444432222222222344433222223332
+22222222222333444322222222222222355555555555555555336355555535555555333355555555555555555534444443444444433444444444443444444444
+44443444444444444432222222222222200404042222222222222222344444444444443444444444444344444444443344444444434444322222222222333322
+22222222222222222222333332222222222222223555555555555555555533355555555555533355555555555555555555344444344444444334444444444434
+44444444444434444444444444322222222222222003030322222222222322223444444444444434444444444443444444446433444444444344443333333333
+33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444434444444443444444
+44444434444444444444344444444444443222232222222220040404222222222223322234444444444444344444444444434444444444334444444444344444
+44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444344444444
+43444444444444344444444444443444444444444432223322222222200202022222222222234322344444444444443444444444444344444444443344444444
+44344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444434
+44444444434444444444443444444444444434444444444444322343222222222004040422222222222233333444444444444434444444444443444444444443
+44444444444344444444444444444444444444444444444434444444444444444444444434444444444444444444444443444444444444444444444444444444
+44444434444444443444444444444434444444444444344444444444443333322222222220040404222222222222343434444444444444344444444444434444
+44444443344444444443444444444444444444444444444444444444333444444444444444444443434444444444444444444443334444444444444444444444
+44444444444444344444444434444444444444344444444444443444444444444434343222222222200302022222222222223434433444444444443444444444
+44434444444444443444444444443444444444444444444444444444444444443443444444444444444444434344444444444444444444344434444444444444
+44444444444444444444434444444444344444444444443444444444444434444444444443443432222222222004030422222222222234344434444444444434
+44444444444344444444444434444444444434444444444444444444443333344444444434443444444444444444443444344444444444444444434444344444
+44444444444444444444444444444344444444443444444444444434444444444444344444444444344434322222222220020202222222222222343444434444
+44444434444444444443444444444444344444444444434444444444444444333344444333344444344443444444444444444344444344444444444444433444
+44344444444333334444444444444444444443444444444434444444444444344444444444443444444444434444343222222222200403042222222222223443
+44434444443444344444444444434444444444443444444444444344444444444444334444444444444334443444443444444444444443444444344444444444
+44344444443444443334444433333444444444444444434444444444344444444444443444444444444434444344444344434432222222222002020222222222
+22223443444434444433343444444444444344444444444434444444444443444444444444334444444444444444434434444443444444434444434444443444
+44444444434444444434443344444444444443344444444444444344444444443444444444444434444444444444344333444434444344322222222220040404
+22222222222223443444344444344334444444444443444444444444344444444444434444444444434444444444444444444433344444443444443434443444
+44444344443434444344444444344344444444444444444334444444444434444444444434444444444444344444444444443434434444344443443222222222
+20020202222222222222234434444344434444344444444444434444444444443444444444444434444444443444444444444444444444443444444443444434
+43443444444443444344344434444444443334444444444444444444434444444444344444444444344444444444443444444444444433444434434444434432
+22222222200302022222222222222344344443444344444344444444344344444444444434444444444444344444444344444444444444444444444434444444
+44344434443434444444443443444343444444444434444444444444444444444434444444443444444444443444444444444434444444444443444444344344
+44344432222222222000000022222222222223444344443443444444344444443343444444444444344444444444443444444434444444444444444444444444
+43444444444344344443444444444434344443344444444443444444444444444444444444434444444434444444444434444444444444344444444444344444
+44343444443444322222222220020202222222222222234443444434434444444344444434334444444444443444444444444434444443444444444444444444
+44444444434444444444343444434444444444434444443444444444434444444444444444444444444434444444344444444444344444444444443443444444
+43444444443344444434443222222222200202022222222222222344434444434344444443444443444344444444444434444444444444344444344444444444
+44333333333334444344444444444344444434444444444344444434444444444344444333333344444444444444434444443444444444443444444444444434
+33444444344444444433444444344432222222222004040422222222222223444344444344344444443444434444344444444444344444444444444344443444
+44444444332222222222233443444444444443444444344444444434444444344444444443443332222222333444444444444434444434444444444434444444
+44444433434444434444444443344444443444322222222220020202222222222222234443444444343444444443444344444344444444443444444444444443
+44434444444444432222222222222223434444444444434444444344444444344444444344444444434322222222222223344444444444344444344444444444
+34444444444443444434444344444444433444444344443222222222200404042222222222222344434444443434444444434443444444344444444443444444
+44444443443444444444443222222222222222223344444444444344444443444444434444444443444444444333332222222222222334444444444344443444
+44444444344444444443344444344434444444444334444443444432222222222002020222222222222223444344444434344444444434434444444334444444
+43444444444444434434444444444322222222222222222233344444444443444444434444444344444444434444444443343222222222222222234444444444
+34443444444444443444444444344444443444344444444443344444434444322222222220030404222222222222234443444444433444444444434344444444
+43444444434443444444444343444444444432222222222222222222343344444444434444444434444434444444444344444443444322222222222222222234
+44444444434434444444344434444444434444444434434444444444434444444344443222222222200202022222222222222344434444444334444444444343
+44444444443444444344343344444443434444444443222222222222222222223444334444444344444444344444344444444443444444434443222222222222
+22222234444444444344344444334344344444443444444443444344444444444344444443444432222222222003020222222222222223444434444444334444
+44444433444444444443444443443444344444433444444444432222222222222222222223444433444443444444444344434444444444434444443444322222
+22222222222222234444444444343444434443443444444344444444434434444444444433444444434444322222222220030404222222222222223444344444
+44334444444444343444444444443444434344444334444334444444443222222222222222222222234444443344344444444443444344444444444344444344
+44322222222222222222222234444444443434443444443434444434444444444344344444444444334444443444443222222222200202032222222222222234
+44344444443344444444444334444444444443444343444444434443344444444432222222222222223322222344444444343444444444443443444444444443
+44443444443222222222222222222222344444444443344344444434344443444444444443434444444444443444444434444432222222222004040422222222
+22222234443444444443444444444443344444444444434443344444444434433444444443222222222222222233222222344444444334444444444434344444
+44444443444344444322222222222222222222222344444444433443444444433444344444444444434344444444444434444444344444322222222220040404
+22222222222222344434444444433444444444443444444444444434433444444444344344444444432222222222222223443222223444444444344444444444
+43344444444444434434444443222222222222222222222223444444444334344444444334443444444444443434444444444444344444443444443222222222
+20040404222222222222223444434444444434444444444433444444444444434334444444444343444444443222222222222222234432222223444444443444
+44444444433444444444444343444444432222222222222222222222223444444444343444444443344344444444444434344444444444434444444434444432
+22222222200303032222222222222234444344444444334444444444434444444444444343344444444443434444444432222222222222222344322222234444
+44443344444444444334444444444434344444444322222222222222222222222234444444443344444444433443444444444444334444444444444344444444
+34444432222222222004040322222222222222344444344444444344444444444344444444444444333444444444443344444444322222222222222223443222
+22234444444434344444444443344444444444334444444443222222222222222222222222234444444433444444444334344444444444443344444444444443
+44444443444444322222222220040305222222222222223444443444444443344444444444344444444444443344444444444433444444443222222222222222
+34444322222344444443443444444444434344444444443344444444322222222222222222222222222344444444344444444444343444444444444434444444
+44444434444444434444443222222222200404042222222222222223444443444444443444444444443444444444444443444444444444434444444432222222
+22222222344443222222344444434443444444443443444444444434444444443222222222222222222222222223444444443444444444443344444444444443
+34444444444444344444444344444432222222222003030522222222222222234444434444444433444444444443444444444444434444444444444344444444
+32222222222222223444432222223444444344443444444434434444444443344444444432222222222222222222222222234444444434444444444433444444
+44444443444444444444443444444443444443222222222220040404222222222222222344444344444444434444444444434444444444444344444444444443
+44444444432222222222222234444322222234444443444434444443444434444444343444444443223222222222222222222222222344444444344444444444
+33444444444444434444444444444434444444344444432222222222200304042222222222222223444444344444444444444444444434444444444443344444
+44444434444444444322222222222322344443223222234444344444434444434444344444434443444444432332222222222222222222222234444444443444
+44444444334444444444444344444444444443444444443444444322222222222004040422222222222222223444443444444444444444444444344444444444
+43344444444444344444444443222222222223333444433332222344443444444344443444443444444344434444444334322222222222222222222222344444
+44443444444444443444444444444434444444444444434444444434444432222222222220030505222222222222222234444443444444444444444444444344
+44444444433444444444443444444444432222222222223444444443222222344434444444344434444434444434444344444432343222222222222222222222
+22344444444434444444444434444444444444344444444444444444444443444444322222222222200307072222222222222222344444434444444444444444
+44444344444444444434444444444434444444444322222222222234444444432222223444344444443443444444434443444443444444334432222222222222
+22222222223444444444344444444444344444444444443444444444444444444444434444443222222222222003030422222222222222223444444434444444
+44444444444444344444444444344444444444344444444443222222222222344444444322222223443444444434434444444344344444434444443344322222
+22222222222222222234444444443444444444443444444444444434444444444444444444443444444322222222222220030707222222222222222223444444
+34444444444444444444443444444444443444444444443444444444432222222222223444444443222222234434444444343444444443443444444344444334
+44322222222222222222222222344444444434444444444334444444444443444444444444444444444434444443222222222222200404042222222222222222
+23444444434444444444444444444444444444444434444444444434444444444322222222222223444444322222222234344443444334444444443344444443
+4444434444322222222222222222222222344444444434444444444334444444444443444444444444444444444344444443222222222222200304°422222222
+22222222234444444344444444444444444444444444444444344444444444344444444432222222222222234444443222222333343444433343444444444433
+44444443444334444322222222222222222222222234444444443444444444434444444444444444444444444444444444434444443222222222222220030304
+22222222222222222234444444344444444444444444444444444444443444444444434444444444322222222222222344444432222222343334444434334444
+44444434444444434434444443222222222222222222222222344444444434444444444344444444444444444444444444444444443444444432222222222222
+20040404222222222222222222344444444344444444444444444444444444444444444444444344444444443222222222222223444444322222222344334444
+34443344444443444444444344344444432222222222222222222222223444444444344444444443444444444444444444444444444444444434444443222222
+22222222200404042222222222222222222344444444344444444444444444444444444444444444444443444444444432222222222222234444443222222222
+3444334434444434444443444444444343444444422222222222222222222222234444444443444444444434444444444444444444444444444444443444444
+43222222222222222004040422222222222222222223444444443444444444444444444444444444444444444444434444444444322222222222222344444432
+22222222234444343444444344443444444444343444444432222222222222222222222222344444444443444444444444444444444444444444444444444444
+34444444432222222222222220040404222222222222222222234444444443444444444444444444444444444444444444444344444444443222222222222223
+44444432222222222234444343444444344434444444443344444444322222222222222222222222223444444444434444444444444444444444444444444444
+44444444344444443222222222222222200404042222222222222222222234444444443444444444444444444444444444444444444434444444444322222222
+22222222344443222222222222344444334444444343444444444434444444443222222222222222222222222223444444444344444444444444444444444444
+44444444444444434444444432222222222222222004040422222222222222222222344444444443444444444444444444444444444444444443444444444443
+22222222222222223444432222222222222344443344444443434444444443444444444322322222222222222222222222234444444444344444444444444444
+44444444444444444444443444444443222222222222222220040304222222222222222222222344444444443444444444444444444444444444444444434444
+44444432222222222222222234444322222222222223444443344444443444444444344444444443233222222222222222222222222234444444443444444444
+44444444444444444444444444444344444444432222222222222222200304042222222222222222222223444444444443444444444444444444444444444444
+44344444444444322222222222222222344443222222222222223444443444444434444444434444444444323332222222222222222222222222344444444434
+44444444444444444444444444444444444434444444443222222222222222222003030322222222222222222222223444444444443444444444444444444444
+44444444434444444444432222222222222222223444432222222222222234444434444444444444444344444444443344322222222222222222222222222344
+44444443444444444444444444444444444444444443444444444322222222222222222220040403222222222222222222222223444444444443344444444444
+44444444444444443444444444444322222222222222222234444322222222222222344444344444444444444443444444444444443222222222222222222222
+22222344444444434444444444444444444444444444444444344444444443222222222222222222200403042222222222222222222222234444444444444334
+44444444444444444444444434444444444432222222222222222222344443222222222222223444443444444444444444344444444444444432222222222222
+22222222222222344444444433444444444444444444444444444444334444444444322222222222222222222003070722222222222222222222222234444444
+44444443344444444444444444444433444444444443222222222222222222223444432222222222222344444434444444444444443444444444444444322222
+22222222222222222222223444444444443444444444444444444444444444434444444444432222222222222222222220040304222222222222222222222222
+23444444444444444333334444444444443333444444444444322222222222222222222234444322222222222223444444444444444444444434444444444444
+43222222222222222222222222222223444444444443444444444444444444444444433444444444443222222222222222222222200707032222222222222222
+22222222223344444444444444444433333333333344444444444444432222222222222222222222344443222222222222234444444444444444444443444444
+44444444432222222222222222222222222222223444444444443344444444444444444444433444444444444322222222222222222222222003030322222222
+22222222222222222222344444444444444444444444444444444444444444443222222222222222222222223444432222222222222344444444444444444444
+43444444444444433322222222222222222222222222222234444444444444333444444444444444333444444444444432222222222222222222222220040404
+22222222222222222222222222222344444444444444444444444444444444444444444322222222222222222222222234444322222222222223444444444444
+44444444434444444444443443222222222222222222222222222222234444444444444443333444444333334444444444444443222222222222222222222222
+20040404222222222222222222222222222222334444444444444444444444444444444444444332222222222222222222222222344443222222222222344444
+44444444444444444444444444444344432222222222222222222222222222222233444444444444444443333334444444444444444443322222222222222222
+22222222200404042222222222222222222222222222222233444444444444444444444444444444444432222222222222222222222222223444432222222222
+22344444444444444444444444444444444434444322222222222222222222222222222222223444444444444444444444444444444444444443322222222222
+2222222222222222200404042222222222222222222222222222222222344444444444444444444444444444433222222222222222222222222222234444322
+22222222234444444444444444444444444444444443444443222222222222222222222222222222222223344444444444444444444444444444444443322222
+22222222222222222222222220040403222222222222222222222222222222222222334444444444444444444444444433222222222222222222222222222232
+34444322222222223444444444444444444444444444444443344444322222222222222222222222222222222222222334444444444444444444444444444443
+32222222222222222222222222222222200303032222222222222222222222222222222222222233344444444444444444444433222222222222222222222222
+22222332344443222222222344444444444444444444444444444444344444443222222222222222222222222222222222222222233444444444444444444444
+44444332222222222222222222222222222222222004040422222222222222222222222222222222222222222333333444444444444433222222222222222222
+22222222222223333444433332222334444444444444444444444444444444434444444323222222222222222222222222222222222222222223344444444444
+44444444444332222222222222222222222222222222222220040404222222222222222222222222222222222222222222222223333333333333222222222222
+22222222222222222222353534444355533333334444444444444444444444444444433444444433343322222222222222222222222222222222222222222333
+44444444444444444332222222222222222222222222222222222222200404042222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222235533344443555555555533333333344444444444444444443444444433444444322222222222222222222222222222222222
+22222222333344444443333332222222222222222222222222222222222222222004040422222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222355323444433333555555555555553333444444444444444444444443444444332222222222222222222222222222
+22222222222222222222333333322222222222222222222222222222222222222222222220040404222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222235555334444322223333335555555555553444444444444444444444344444332222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222200303042222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222355555333333333333333333333335555534444444444444444444434444432222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222003020222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222223555555555555555555555555555555533444444444444444444444444443222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220040403222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222235555555555555555555555555555333344444444444444444444444444322
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200202022222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222355555555555555555555555333334444444444444444444444444
+44444322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222005030222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222355555555555555555555534444444443344444444444
+44444444444432222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220020202
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223555555555555535555553444444333444344
+44444443344444444443222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+20020203222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223555555555553335555334444334
+4334434444443334444444444443222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222200202022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223355555555533355553
+44443333434343444433444444444444443222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222004030222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333555555
+55555553344433334343443443444444444444444322222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222220000000222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+33333335555553344333333444343433344444444444444432222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222200203042222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222344443233333344444444443333333444444444444444443222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222002020222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222223444432222223444444444444444444444444444444444322222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222220030202222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222234444322222223444444444444444444444444444444332222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222200202022222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222344443222222223444444444444444444444444444432222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222002020322222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222223444432222222223333344444444444444444444433222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222220020202222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222234444322222222222222333334444444444444333222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222200603062222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222333222222344443222222333222222222233333333333332222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222002020222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222223443333333444433333334432222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220030606222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222234444444444444444444444322222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200304042222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222344444444444444444444443222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222003060622222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222223444444444444444444444432222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220040404
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222234444444444444444444444322222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+20030303222222222222222222222222222222222222222222222222222222222222222222222222222222222222222344333333344443333333443222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222200404042222222222222222222222222222222222222222222222222222222222222222222222222222222222222223332222223444432222223332
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222003060322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222234444322
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222220040403222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+34444322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222200303032222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222344443222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222004040422222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222223444432222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222220030303222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222234444322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222200307072222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222223444444322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222003030322222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222234444443222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222220030707222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222333333332222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222200603032222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222003040422222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220030202222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200404042222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222002020222222222
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222200404040800000026060f000600544e50500701040000002701ffff030000000000}}}{\rtlch\fcs1 \af0 \ltrch\fcs0
+\lang1024\langfe1024\noproof\langnp1036\insrsid8133178\charrsid3147258
+\par }}\dpx540\dpy-194\dpxsize1229\dpysize1377\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0}}}}{\rtlch\fcs1 \af38\afs16 \ltrch\fcs0
+\f38\fs16\lang1024\langfe1024\noproof\insrsid1785391
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\langnp1031\langfenp2052\insrsid1713643
+{\shp{\*\shpinst\shpleft6656\shptop-389\shpright8276\shpbottom691\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr1\shpwrk0\shpfblwtxt0\shpz5\shplid1028{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn hspNext}{\sv 1028}}{\sp{\sn pib}{\sv {\pict\picscalex30\picscaley36\piccropl0\piccropr0\piccropt0\piccropb0
+\picw9657\pich5345\picwgoal5475\pichgoal3030\wmetafile8\bliptag-1120665464{\*\blipuid bd3400880d878a06bcdbc69a6e488d0b}0100090000034c03000004004e00000000000400000003010800050000000b0200000000050000000c02010001000400000003010800050000000b0200000000
+050000000c0201000100050000000c02ca006d01050000000b02000000000500000006010100000007000000fc020000da251d000000040000002d0100000800
+0000fa0205000100000000000000040000002d010100050000000601010000002200000038050200070007008b0004008b0014006e0033007900400098001d00
+970010008b0004006e0041008100580097006f00970058008b004a008b005f006e00410008000000fa0200000000000000000000040000002d01020007000000
+fc020000ffffff000000040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d0101000500000006010100
+0000220000003805020007000700a7000a00a70019008a00390094004400b3002200b3001400a7000a008a0045009d005d00b3007300b3005d00a6004f00a600
+62008a004500040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d01010005000000
+060101000000220000003805020007000700e3000400e3001400ff003300f4004000d6001d00d6001000e300040000014100ec005800d6006f00d6005800e300
+4a00e3005f0000014100040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d010100
+05000000060101000000220000003805020007000700c7000a00c7001900e4003900d9004400ba002200ba001400c7000a00e4004500d1005d00ba007300ba00
+5d00c8004f00c8006200e4004500040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d01000004000000
+2d0101000500000006010100000034000000240318001600c6001000c4000a00c0000600bb000400b5000400aa000400a30004009f00060099000a0094001000
+900016008f0037008f0037009c0016009c0015009c0012009d0011009f001100b5001200b8001600b9003700b9003700c6001600c600040000002d0102000400
+00002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100000024000000240310004300
+8f006d008f0073009000790094007d0099007f009f007f00c6007200c60072009f0071009d006e009c006d009c0050009c005000c6004300c60043008f000400
+00002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d010100050000000601010000003400
+0000240318009b00c6009400c4008e00c0008a00bb008900b5008900aa008900a30089009f008a0099008e009400940090009b008f00bc008f00bc009c009b00
+9c0099009c0097009d0095009f009500b5009700b8009b00b900bc00b900bc00c6009b00c600040000002d010200040000002d01030004000000f00100000700
+0000fc020000005d9f000000040000002d010000040000002d010100050000000601010000004e00000024032500e400b000de00b000d800b000d100af00cc00
+ac00c800a600c7009f00c8009900cc009400d1009000d8008f0007018f0007019c00d8009c00d5009d00d4009f00d500a300d800a400e700a400f000a400f500
+a400fb00a6000201a8000501af000701b5000501bb000201c000fb00c400f500c600c700c600c700b900f500b900f900b800fa00b500f900b100f500b000e400
+b000040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100
+00000e000000240305001101c60011018f001d018f001d01c6001101c600040000002d010200040000002d01030004000000f001000007000000fc020000005d
+9f000000040000002d010000040000002d010100050000000601010000004e000000240325004601b0004001b0003901b0003301af002e01ac002a01a6002901
+9f002a0199002e0194003301900039018f0069018f0069019c0039019c0037019d0036019f003701a3003901a4004901a4005201a4005701a4005e01a6006301
+a8006701af006901b5006701bb006301c0005e01c4005701c6002901c6002901b9005701b9005b01b8005c01b5005b01b1005701b0004601b000040000002d010200040000002d01030004000000f0010000030000000000}
+}}{\sp{\sn pictureId}{\sv 196608}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}
+{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}
+{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar \pard\plain \ltrpar
+\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12811248
+{\pict{\*\picprop\shplid1028{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}
+{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}
+{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex92\picscaley111\piccropl0\piccropr0\piccropt0\piccropb0\picw3096\pich1715\picwgoal1755\pichgoal972\wmetafile8\bliptag-1987183374\blipupi299{\*\blipuid 898dfcf2b4ba8e0e332a116609f681e5}
+0100090000034c03000004004e00000000000400000003010800050000000b0200000000050000000c02010001000400000003010800050000000b0200000000
+050000000c0201000100050000000c02ca006d01050000000b02000000000500000006010100000007000000fc020000da251d000000040000002d0100000800
+0000fa0205000100000000000000040000002d010100050000000601010000002200000038050200070007008b0004008b0014006e0033007900400098001d00
+970010008b0004006e0041008100580097006f00970058008b004a008b005f006e00410008000000fa0200000000000000000000040000002d01020007000000
+fc020000ffffff000000040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d0101000500000006010100
+0000220000003805020007000700a7000a00a70019008a00390094004400b3002200b3001400a7000a008a0045009d005d00b3007300b3005d00a6004f00a600
+62008a004500040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d01010005000000
+060101000000220000003805020007000700e3000400e3001400ff003300f4004000d6001d00d6001000e300040000014100ec005800d6006f00d6005800e300
+4a00e3005f0000014100040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d010100
+05000000060101000000220000003805020007000700c7000a00c7001900e4003900d9004400ba002200ba001400c7000a00e4004500d1005d00ba007300ba00
+5d00c8004f00c8006200e4004500040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d01000004000000
+2d0101000500000006010100000034000000240318001600c6001000c4000a00c0000600bb000400b5000400aa000400a30004009f00060099000a0094001000
+900016008f0037008f0037009c0016009c0015009c0012009d0011009f001100b5001200b8001600b9003700b9003700c6001600c600040000002d0102000400
+00002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100000024000000240310004300
+8f006d008f0073009000790094007d0099007f009f007f00c6007200c60072009f0071009d006e009c006d009c0050009c005000c6004300c60043008f000400
+00002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d010100050000000601010000003400
+0000240318009b00c6009400c4008e00c0008a00bb008900b5008900aa008900a30089009f008a0099008e009400940090009b008f00bc008f00bc009c009b00
+9c0099009c0097009d0095009f009500b5009700b8009b00b900bc00b900bc00c6009b00c600040000002d010200040000002d01030004000000f00100000700
+0000fc020000005d9f000000040000002d010000040000002d010100050000000601010000004e00000024032500e400b000de00b000d800b000d100af00cc00
+ac00c800a600c7009f00c8009900cc009400d1009000d8008f0007018f0007019c00d8009c00d5009d00d4009f00d500a300d800a400e700a400f000a400f500
+a400fb00a6000201a8000501af000701b5000501bb000201c000fb00c400f500c600c700c600c700b900f500b900f900b800fa00b500f900b100f500b000e400
+b000040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100
+00000e000000240305001101c60011018f001d018f001d01c6001101c600040000002d010200040000002d01030004000000f001000007000000fc020000005d
+9f000000040000002d010000040000002d010100050000000601010000004e000000240325004601b0004001b0003901b0003301af002e01ac002a01a6002901
+9f002a0199002e0194003301900039018f0069018f0069019c0039019c0037019d0036019f003701a3003901a4004901a4005201a4005701a4005e01a6006301
+a8006701af006901b5006701bb006301c0005e01c4005701c6002901c6002901b9005701b9005b01b8005c01b5005b01b1005701b0004601b000040000002d010200040000002d01030004000000f0010000030000000000}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8133178
+\par }}}{\shprslt{\*\do\dobxcolumn\dobypara\dolhgt8197\dptxbx\dptxlrtb{\dptxbxtext\ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1785391 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12811248 {\pict{\*\picprop\shplid1028{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}
+{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}
+{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw2858\pich1905\picwgoal1620\pichgoal1080\wmetafile8\bliptag-1987183374\blipupi299{\*\blipuid 898dfcf2b4ba8e0e332a116609f681e5}
+0100090000034c03000004004e00000000000400000003010800050000000b0200000000050000000c02010001000400000003010800050000000b0200000000
+050000000c0201000100050000000c02ca006d01050000000b02000000000500000006010100000007000000fc020000da251d000000040000002d0100000800
+0000fa0205000100000000000000040000002d010100050000000601010000002200000038050200070007008b0004008b0014006e0033007900400098001d00
+970010008b0004006e0041008100580097006f00970058008b004a008b005f006e00410008000000fa0200000000000000000000040000002d01020007000000
+fc020000ffffff000000040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d0101000500000006010100
+0000220000003805020007000700a7000a00a70019008a00390094004400b3002200b3001400a7000a008a0045009d005d00b3007300b3005d00a6004f00a600
+62008a004500040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d01010005000000
+060101000000220000003805020007000700e3000400e3001400ff003300f4004000d6001d00d6001000e300040000014100ec005800d6006f00d6005800e300
+4a00e3005f0000014100040000002d010200040000002d01030004000000f001000007000000fc020000da251d000000040000002d010000040000002d010100
+05000000060101000000220000003805020007000700c7000a00c7001900e4003900d9004400ba002200ba001400c7000a00e4004500d1005d00ba007300ba00
+5d00c8004f00c8006200e4004500040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d01000004000000
+2d0101000500000006010100000034000000240318001600c6001000c4000a00c0000600bb000400b5000400aa000400a30004009f00060099000a0094001000
+900016008f0037008f0037009c0016009c0015009c0012009d0011009f001100b5001200b8001600b9003700b9003700c6001600c600040000002d0102000400
+00002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100000024000000240310004300
+8f006d008f0073009000790094007d0099007f009f007f00c6007200c60072009f0071009d006e009c006d009c0050009c005000c6004300c60043008f000400
+00002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d010100050000000601010000003400
+0000240318009b00c6009400c4008e00c0008a00bb008900b5008900aa008900a30089009f008a0099008e009400940090009b008f00bc008f00bc009c009b00
+9c0099009c0097009d0095009f009500b5009700b8009b00b900bc00b900bc00c6009b00c600040000002d010200040000002d01030004000000f00100000700
+0000fc020000005d9f000000040000002d010000040000002d010100050000000601010000004e00000024032500e400b000de00b000d800b000d100af00cc00
+ac00c800a600c7009f00c8009900cc009400d1009000d8008f0007018f0007019c00d8009c00d5009d00d4009f00d500a300d800a400e700a400f000a400f500
+a400fb00a6000201a8000501af000701b5000501bb000201c000fb00c400f500c600c700c600c700b900f500b900f900b800fa00b500f900b100f500b000e400
+b000040000002d010200040000002d01030004000000f001000007000000fc020000005d9f000000040000002d010000040000002d0101000500000006010100
+00000e000000240305001101c60011018f001d018f001d01c6001101c600040000002d010200040000002d01030004000000f001000007000000fc020000005d
+9f000000040000002d010000040000002d010100050000000601010000004e000000240325004601b0004001b0003901b0003301af002e01ac002a01a6002901
+9f002a0199002e0194003301900039018f0069018f0069019c0039019c0037019d0036019f003701a3003901a4004901a4005201a4005701a4005e01a6006301
+a8006701af006901b5006701bb006301c0005e01c4005701c6002901c6002901b9005701b9005b01b8005c01b5005b01b1005701b0004601b000040000002d010200040000002d01030004000000f0010000030000000000}}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8133178
+\par }}\dpx6656\dpy-389\dpxsize1620\dpysize1080\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow}}}
+{\shp{\*\shpinst\shpleft513\shptop137\shpright10317\shpbottom137\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1029{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 1}}
+{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpline\dpptx9804\dppty0\dpptx0\dppty0
+\dpx513\dpy137\dpxsize9804\dpysize0\dplinew15\dplinecor0\dplinecog0\dplinecob0}}}}{\rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16\lang1024\langfe1024\noproof\insrsid1785391
+\par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\tx570\tx10089\tx10488\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid2705025\charrsid14373447 {\*\bkmkend Text15}\tab }{\rtlch\fcs1
+\af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 {\*\bkmkstart Text7}}{\field\flddirty{\*\fldinst {\rtlch\fcs1 \ab\af0\afs52 \ltrch\fcs0 \cs33\b\fs52\lang1040\langfe1033\chbrdr\brdrs\brdrw10
+\langnp1040\insrsid1248058\charrsid14373447 FORMTEXT }{\rtlch\fcs1 \ab\af0\afs52 \ltrch\fcs0 \b\fs52\lang1040\langfe1033\chbrdr\brdrs\brdrw10 \langnp1040\insrsid1713643 {\*\datafield 000804000000000005546578743700000000000000000000000000}
+{\*\formfield{\fftype0\fftypetxt1\ffmaxlen4{\*\ffname Text7}}}}}{\fldrslt {\rtlch\fcs1 \ab\af38\afs52 \ltrch\fcs0 \cs33\b\f38\fs52\lang1024\langfe1024\chbrdr\brdrs\brdrw10 \noproof\langnp1040\insrsid1248058\charrsid14373447 \u8194\'20\u8194\'20\u8194\'20
+\u8194\'20}}}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 {\*\bkmkend Text7}
+ {\*\bkmkstart Dropdown8}}{\field\flddirty\fldpriv{\*\fldinst {\rtlch\fcs1 \ab\af0\afs52 \ltrch\fcs0 \b\fs52\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 FORMDROPDOWN }{\rtlch\fcs1 \ab\af0\afs52 \ltrch\fcs0
+\b\fs52\lang1040\langfe1033\langnp1040\insrsid1713643 {\*\datafield 66820000000000000944726f70646f776e380000000000000000000000000004000100010000000a0002000141}{\*\formfield{\fftype2\ffres25\ffprot\fftypetxt0\ffhaslistbox{\*\ffname Dropdown8}\ffdefres0
+{\*\ffl A}}}}}{\fldrslt }}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447
+{\*\bkmkend Dropdown8} }{\rtlch\fcs1 \af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid14373447 }{\rtlch\fcs1 \af0\afs32 \ltrch\fcs0
+\fs32\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 }{\field\flddirty\fldpriv{\*\fldinst {\rtlch\fcs1 \ab\af0\afs52 \ltrch\fcs0 \b\fs52\lang1040\langfe1033\langnp1040\insrsid13400122\charrsid14373447 FORMDROPDOWN }{\rtlch\fcs1
+\ab\af0\afs52 \ltrch\fcs0 \b\fs52\lang1040\langfe1033\langnp1040\insrsid1713643 {\*\datafield 6682000000000000000000000000000000000000000007000100010000000a0002000432303037}{\*\formfield{\fftype2\ffres25\ffprot\fftypetxt0\ffhaslistbox\ffdefres0{\*\ffl
+2007}}}}}{\fldrslt }}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs32 \ltrch\fcs0 \fs32\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447
+\par }\pard\plain \ltrpar\s32\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af35\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af35\hich\af0\dbch\af0\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af0\afs2 \ltrch\fcs0 \cs33\fs2\lang1040\langfe1033\loch\af0\langnp1040\insrsid8061541\charrsid14373447
+\par }\pard \ltrpar\s32\ql \li513\ri0\widctlpar\tx171\tx399\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin513\itap0 {\rtlch\fcs1 \ai\af0\afs16 \ltrch\fcs0 \cs33\i\fs16\lang1040\langfe1033\loch\af0\langnp1040\insrsid14373447 }{\rtlch\fcs1
+\ai\af0\afs20 \ltrch\fcs0 \cs33\i\fs20\lang1040\langfe1033\loch\af0\langnp1040\insrsid8061541\charrsid14373447 Se completeaza de catre CNCSIS}{\rtlch\fcs1 \ab\af0\afs20 \ltrch\fcs0
+\cs33\b\fs20\lang1040\langfe1033\loch\af0\langnp1040\insrsid8061541\charrsid14373447
+\par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\lang1024\langfe1024\noproof\langnp1031\langfenp2052\insrsid1713643 {\shp{\*\shpinst\shpleft513\shptop165\shpright10374\shpbottom165\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz1\shplid1030
+{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineWidth}{\sv 57150}}{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLine}{\sv 1}}
+{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8193\dpline\dpptx0\dppty0\dpptx9861\dppty0\dpx513\dpy165\dpxsize9861\dpysize0\dplinew90\dplinecor0\dplinecog0\dplinecob0}}}}{\rtlch\fcs1
+\ai\af0\afs16 \ltrch\fcs0 \i\fs16\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447
+\par
+\par }\pard\plain \ltrpar\s7\qc \li0\ri0\keepn\nowidctlpar\tx1197\wrapdefault\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\expnd1\expndtw6\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\expnd0\expndtw4\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 CERERE DE FINANTARE PENTRU PROIECTE MULTIANUALE
+\par }\pard \ltrpar\s7\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\expnd0\expndtw4\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447
+DE CERCETARE STIINTIFICA/CREATIE ARTISTICA
+\par }\pard\plain \ltrpar\s2\qc \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0\afs22
+\ltrch\fcs0 \fs22\expnd0\expndtw4\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447 FINANTATE DIN BUGETUL DE STAT
+\par }\pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\lang1024\langfe1024\noproof\langnp1031\langfenp2052\insrsid1713643 {\shp{\*\shpinst\shpleft513\shptop103\shpright10374\shpbottom103\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz2\shplid1031
+{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineWidth}{\sv 57150}}{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLine}{\sv 1}}
+{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8194\dpline\dpptx0\dppty0\dpptx9861\dppty0\dpx513\dpy103\dpxsize9861\dpysize0\dplinew90\dplinecor0\dplinecog0\dplinecob0}}}}{\rtlch\fcs1 \af0\afs32
+\ltrch\fcs0 \fs32\expnd1\expndtw6\insrsid8061541\charrsid14373447 \-}{\rtlch\fcs1 \af0 \ltrch\fcs0 \expnd1\expndtw6\insrsid8061541\charrsid14373447
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\lang1036\langfe1033\langnp1036\langfenp1033\insrsid8061541\charrsid14373447 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard \ltrpar\ql \li570\ri0\nowidctlpar
+\jclisttab\tx513\tx969\wrapdefault\faauto\ls8\adjustright\rin0\lin570\itap0\pararsid985131 {\rtlch\fcs1 \ab\af0\afs24 \ltrch\fcs0 \b\fs24\lang1036\langfe1033\langnp1036\insrsid8061541\charrsid14373447 Date personale ale directorului de proiect:
+\par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {
+\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid8061541\charrsid14373447 1.1. Nume: \cell }\pard \ltrpar\ql \fi-285\li0\ri0\nowidctlpar\intbl
+\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0
+\b\fs18\insrsid1274673 FORMTEXT }{\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\insrsid1713643 {\*\datafield 00003200000000000000000009557070657263617365000000000000000000}{\*\formfield{\fftype0\fftypetxt0\ffmaxlen50{\*\ffformat Uppercase}}}}}{\fldrslt {
+\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\lang1024\langfe1024\noproof\insrsid1274673 \u8194\'20\u8194\'20\u9194\'20\u8194\'20\u8194\'20}}}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {
+\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\insrsid8061541\charrsid14373447 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0
+\b\fs18\insrsid8061541\charrsid14373447 \trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid8061541\charrsid14373447 1.2. Prenume: \cell }\pard \ltrpar
+\ql \fi-285\li0\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\tx3420\tx3534\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0
+\b\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447 }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0
+\b\fs18\insrsid1274673 FORMTEXT }{\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\insrsid1713643 {\*\datafield 00003200000000000000000009557070657263617365000000000000000000}{\*\formfield{\fftype0\fftypetxt0\ffmaxlen50{\*\ffformat Uppercase}}}}}{\fldrslt {
+\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\lang1024\langfe1024\noproof\insrsid1274673 \u8194\'20\u8194\'20\u8194\'20\u8194\'20\u8194\'20}}}\sectd \ltrsecT\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {
+\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0 \b\fs18\insrsid8061541\charrsid14373447 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af0\afs18 \ltrch\fcs0
+\b\fs18\insrsid8061541\charrsid14373447 \trowd \irow1\irowband1\ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid8061541\charrsid14373447 1.3. An nastere:\cell }\pard \ltrpar
+\ql \fi-285\li0\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\tx3477\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447
+}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1274673 FORMTEXT }{
+\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1713643 {\*\datafield 0008040000000000000000000130000000000000000000}{\*\formfield{\fftype0\fftypetxt1\ffmaxlen4{\*\ffformat 0}}}}}{\fldrslt {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\lang1024\langfe1024\noproof\insrsid1274673 \u8194\'20\u8194\'20\u8194\'20\u8194\'20}}}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8061541\charrsid14373447 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8061541\charrsid14373447 \trowd \irow2\irowband2\ltrrow
+\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\lang1036\langfe1033\langnp1036\insrsid9574070\charrsid14373447
+1.4. Titlu didactic si/sau stiintific:\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\tx3306\tx3477\tx7923\tx8037\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {
+\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\lang1036\langfe1033\langnp1036\insrsid8719427\charrsid14373447 }{\field\flddirty\fldpriv{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1274673 FORMDROPDOWN }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid1713643 {\*\datafield
+6680000000000000000000000000000000000000000080000a000a0000000a0014002f00380045004c0055005a006000670072001a20202020202020202020202020202020202020202020202020200850726f6665736f720c436f6e666572656e74696172064c6563746f72084173697374656e7404435320490543532049
+49064353204949490a43657263657461746f720d416c7465207369747561746969}{\*\formfield{\fftype2\ffres25\fftypetxt0\ffhaslistbox\ffdefres0{\*\ffl }{\*\ffl Profesor}{\*\ffl Conferentiar}{\*\ffl Lector}{\*\ffl Asistent}{\*\ffl CS I}
+{\*\ffl CS II}{\*\ffl CS III}{\*\ffl Cercetator}{\*\ffl Alte situatii}}}}}{\fldrslt }}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\cf2\insrsid8719427\charrsid14373447 (selectati)}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \cell }\pard \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \trowd \irow3\irowband3\ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5
+\trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3]clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid9574070\charrsid14373447 1.5. Doctor din anul:\cell }\pard \ltrpar
+\ql \fi-285\li0\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{
+\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1274673 FORMTEXT }{
+\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1 {\*\datafield 0}{\*\formfield{\fftype0\fftypetxt1\ffmaxlen4{\*\ffformat 0}}}}}{\fldrslt {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\lang1024\langfe1024\noproof\insrsid1274673 \u8194\'20\u8194\'340282366920938463463374607431768211456\u8194\'20\u8194\'9223372036854775827}}}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid9574070\charrsid14373447 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0\afs-52285677232 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \trowd \irow4\irowband4\ltrrow
+\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx513\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid9574070\charrsid14373447 1.6 Conducator doctorat:\cell
+}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\tx6498\tx8037\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8719427\charrsid14373447 {\*\bkmkstart Dropdown9} {\*\bkmkend Dropdown9}}{\field\flddirty\fldpriv{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1274673 FORMDROPDOWN }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1713643
+{\*\datafield 6680000000000000000000000000000000000000000014000300030000000a0006000e0011000720202020202020024441024e55}{\*\formfield{\fftype2\ffres25\fftypetxt0\ffhaslistbox\ffdefres0{\*\ffl }{\*\ffl DA}{\*\ffl NU}}}}}{\fldrslt }}\sectd \ltrsect
+\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18
+\ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18
+\ltrch\fcs0 \fs18\insrsid8719427\charrsid14373047 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18
+\ltrch\fcs0 \fs18\cf2\insrsid8719427\charrsid14373447 (selectati)}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
+\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \trowd \irow5\irowband5\ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5
+\trbrdrv\brdrs\brdrw5 \trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3
+\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row \ltrrow}\pard \ltrpar\ql \fi-285\li342\ri0\nowidctlpar\intbl
+\tx57\tx252\tx513\tx627\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin342\pararsid10450314 {\rtlch\fcs1 \af0\afs22 \ltrch\fcs0 \fs22\insrsid9574070\charrsid14373447 1.7 Numar doctoranzi:\cell
+}\pard \ltrpar\ql \fi-285\li0\ri0\nowidctlpar\intbl\tx57\tx252\tx792\tx1782\tx1872\tx2010\tx2142\tx2238\tx2502\tx2592\tx2772\wrapdefault\faauto\adjustright\rin0\lin0\pararsid10450314 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid8719427\charrsid14373447 }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid14373447\charrsid14373447 }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid1274673 FORMTEXT }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0
+\fs18\insrsid1713643 {\*\datafield 0008040000000000000000000130000000000000000000}{\*\formfield{\fftype0\fftypetxt1\ffmaxlen4{\*\ffformat 0}}}}}{\fldrslt {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\lang1024\langfe1024\noproof\insrsid1274673 \u8194\'20\u8194
+\'20\u8194\'20\u8194\'20}}}\sectd \ltrsect\psz9\linex0\headery576\footery288\colsx708\endnhere\sectdefaultcl\sectrsid1713643\sftnbj {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \cell }\pard \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \fs18\insrsid9574070\charrsid14373447 \trowd \irow6\irowband6\lastrow \ltrrow\ts11\trqc\trgaph14\trrh346\trleft-61\trbrdrt
+\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5
+\trftsWidth3\trwWidth9922\trftsWidthB3\trftsWidthA3\trspdl21\trspdt21\trspdb21\trspdr21\trspdfl3\trspdft3\trspdfb3\trspdfr3\trpaddl14\trpaddt14\trpaddb14\trpaddr14\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt
+\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth3418\clshdrawnil \cellx3420\clvertalt\clbrdrt\brdrs\brdrw5 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5
+\cltxlrtb\clftsWidth3\clwWidth6378\clshdrawnil \cellx9861\row }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0\pararsid1713643 {\rtlch\fcs1 \af0 \ltrch\fcs0
+\lang1040\langfe1033\langnp1040\insrsid8061541\charrsid14373447
+\par }}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/fail/forcepoint-7.rtf b/sw/qa/core/data/rtf/fail/forcepoint-7.rtf new file mode 100644 index 000000000..e5b227346 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/forcepoint-7.rtf @@ -0,0 +1,517 @@ +{\rtf1\ânsi\ansicpg1252\deflang3081\ftnbj\uc1\deff0
+{\fonttbl{\f0 \fswiss \fcharset1 Arial;}{\f1 \froman \fcharset2 Times New Roman;}{\f2 \froman \fcharset2 Symbol;}{\f3 \fswiss \fcharset0 Times New Roman;}{\f4 \fswiss \fcharset2 Symbol;}{\f5 \froman \fcharset0 Arial;}{\f6 \fswiss \fcharset0 Lucida Sans;}{\f7 \fswiss \fcharset0 Arial;}{\f8 \fswiss \fcharset1 Wingdings;}}
+{\colortbl ;\red0\green0\blue0 ;\red255\green255\blue255 ;\red255\green255\blue128 ;\red0\green64\blue128 ;\red0\green0\blue255 ;\red0\green0\blue160 ;}
+{\stylesheet{\f0\fs20\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Normal;}{\cs1\f0\fs24\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Default Paragraph Font;}{\cs2\f6\fs16\b\protect\cf1\cb3\chcbpat3\expnd0\expndtw0\charscalex100\dn0 SSBookmark;}{\s3\snext0\outlinelevel0\f0\fs32\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel0 Heading 1;}{\s4\snext0\outlinelevel1\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel1 Heading 2;}{\s5\snext0\outlinelevel2\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel2 Heading 3
+;}{\s6\snext0\outlinelevel3\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel3 Heading 4;}{\s7\snext0\outlinelevel4\f0\fs24\b\i\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel4 Heading 5;}{\s8\snext0\outlinelevel5\f0\fs20\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel5 Heading 6;}{\s9\snext0\outlinelevel6\f0\fs24\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel6 Heading 7;}{\s10\snext0\outlinelevel7\f0\fs24\i\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel7 Heading 8
+;}{\s11\snext0\outlinelevel8\f0\fs22\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel8 Heading 9;}{\s12\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 TOC 1;}{\s13\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li180\ri0\sb0\sa0\sl0\shading0 TOC 2;}{\s14\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li360\ri0\sb0\sa0\sl0\shading0 TOC 3;}{\s15\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li540\ri0\sb0\sa0\sl0\shading0 TOC 4;}{\s16\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li720\ri0\sb0\sa0\sl0\shading0 TOC 5
+;}{\s17\snext0\f0\fs24\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li900\ri0\sb0\sa0\sl0\shading0 TOC 6;}{\s18\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1080\ri0\sb0\sa0\sl0\shading0 TOC 7;}{\s19\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1260\ri0\sb0\sa0\sl0\shading0 TOC 8;}{\s20\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1440\ri0\sb0\sa0\sl0\shading0 TOC 9;}{\s21\snext0\f0\fs32\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb240\sa60\sl0\shading0\qc Title;}{\s22\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi-360\li360\ri0\sb0\sa0\sl0\shading0 Numbered List
+;}{\s23\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi-360\li360\ri0\sb0\sa0\sl0\shading0 Bulleted List;}{\s24\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\shading0 Body Text;}{\s25\snext0\f0\fs18\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\sl480\slmult1\shading0 Body Text 2;}{\s26\snext0\f0\fs16\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\shading0 Body Text 3;}{\s27\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Note Heading;}{\s28\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Plain Text
+;}{\s29\snext0\f0\fs20\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Strong;}{\s30\snext0\f0\fs20\i\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Emphasis;}{\s31\snext0\f0\fs20\ul\cf5\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Hyperlink;}{\s32\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Footer;}{\s33\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Header;}{\s34\snext0\f0\fs18\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Code
+;}{\cs35\f0\fs20\i\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Field Label;}{\cs36\f0\fs22\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Table Heading;}{\cs37\f0\fs20\b\ul\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Object type;}{\s38\snext0\f0\fs20\b\i\cf6\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 List Header;}{\s39\snext24\f0\fs20\i\cf5\fi0\li0\ri0\sb0\sa120\sl240 InfoBlue;}}
+{\*\revtbl{Unknown;}}
+{\*\listtable
+{\list\listtemplateid1
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List1;}\listid1
+}
+{\list\listtemplateid2
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List2;}\listid2
+}
+{\list\listtemplateid3
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f1\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List3;}\listid3
+}
+{\list\listtemplateid4
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f1\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List4;}\listid4
+}
+{\list\listtemplateid5
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List5;}\listid5
+}
+{\list\listtemplateid6
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List6;}\listid6
+}
+{\list\listtemplateid7
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\f3\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List7;}\listid7
+}
+{\list\listtemplateid8
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List8;}\listid8
+}
+{\list\listtemplateid9
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List9;}\listid9
+}
+{\list\listtemplateid10
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List10;}\listid10
+}
+{\list\listtemplateid11
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List11;}\listid11
+}
+{\list\listtemplateid12
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List477861859_1;}\listid477861859
+}
+{\list\listtemplateid13
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735301812_1;}\listid735301812
+}
+{\list\listtemplateid14
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735310515_1;}\listid735310515
+}
+{\list\listtemplateid15
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735674015_1;}\listid735674015
+}
+{\list\listtemplateid16
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366130062_1;}\listid735674016
+}
+{\list\listtemplateid17
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366148531_1;}\listid735674017
+}
+{\list\listtemplateid18
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366155203_1;}\listid735674018
+}
+{\list\listtemplateid19
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname ;}\listid735674019
+}
+{\list\listtemplateid20
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List434687953_1;}\listid735674020
+}
+{\list\listtemplateid21
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435828312_1;}\listid735674021
+}
+{\list\listtemplateid22
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}ô {\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435835406_1;}\listid735674022
+}
+{\list\listtemplateid23
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435856328_1;}\listid735674023
+}
+{\list\listtemplateid24
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname ;}\listid735674024
+}
+{\list\listtemplateid25
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List437350656_1;}\listid735674025
+}
+{\list\listtemplateid26
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List437406078_1;}\listid735674026
+}
+{\list\listtemplateid27
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List36741109_1;}\listid735674027
+}
+{\list\listtemplateid28
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List36766656_1;}\listid735674028
+}
+{\list\listtemplateid29
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-2028665468_1;}\listid735674029
+}
+{\list\listtemplateid30
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-1965950843_1;}\listid735674030
+}
+{\list\listtemplateid31
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-1965798031_1;}\listid735674031
+}
+}
+{\*\listoverridetable
+{\listoverride\listid735674026\listoverridecount9
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+\ls1}
+}
+\paperw11908\paperh16833\margl1440\margr1440\margt1440\margb1440\headery720\footery720\nogrowautofit\deftab720\formshade\fet4\aenddoc\aftnnrlc\pgbrdrhead\pgbrdrfoot
+\sectd\pgwsxn12240\pghsxn15840\titlepg\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\headery720\footery720\sbkpage\pgnstarts1\pgnrestart\pgndec
+\plain\plain\f0\fs20
+{\footer\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+{\header\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+{\headerf\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+\li108\qc\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\fs20\par
+\par
+\par
+\par
+\li0\ql\plain\f0\fs20{\*\bkmkstart BKM_33fd3768_22f8_4de1_91d2_533133defa34}{\*\bkmkend BKM_33fd3768_22f8_4de1_91d2_533133defa34}{\*\bkmkstart Test1}{\*\bkmkend Test1}{\*\bkmkstart BKM_AB2df357_B3ca_4a2b_86fb_B32f0a1ff7fe}{\*\bkmkend BKM_AB2df357_B3ca_4a2b_86fb_B32f0a1ff7fe}\plain\f3\fs20\lang4105\hich\f3\dbch\f3\loch\f3\cf1\fs20\par
+\trowd\trgaph60\trleft0\trrh288\trkeep
+\clvertalc\clbrdrt\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clshdng1000\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang1033\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch Scenario\cell
+\plain\f5\fs20\lang1033\hich\f5\dbch\f5\loch\f5\cf1\fs20\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmgf\cellx630
+\clvertalt\cellx9360
+\pard\intbl\ssparaaux0\s0\li360\ri90\sb40\qr\plain\f0\fs20\plain\f7\fs20\cell
+\pard\intbl\ssparaaux0\s0\sb40\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\sb40\sa40\ql\plain\f0\fs20\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\protect\loch Basic Path\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\loch \plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch (\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\protect\loch Basic Path\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch )\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clbrdrt\brdrs\brdrw1\clbrdrb\brdrs\brdrw1\clshdng1000\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmgf\cellx630
+\clvertalt\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\par
+\cell
+\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmgf\cellx9360
+\pard\intbl\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\cell
+\pard\intbl\itap2\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\nestcell{\nonesttables\par}
+\pard\intbl\itap2\ssparaaux0\s0\ql\plain\f0\fs20{\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin}\plain\f6\fs16\cs2\lang4105\hich\f6\dbch\f6\loch\f6\cf1\highlight3\cb3\chcbpat3\ulc1\fs16\b\protect\loch structured scenarios {\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}\loch >\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\par
+\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\protect\loch 1\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\loch .\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\loch \plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\protect\loch user enter data\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\par
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Rules \loch Referenced:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clvmgf\clcbpat2\cellx1736
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap-88\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Exc\loch epti\loch ons:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\loch \nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\nestcell{\nonesttables\par}
+\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\clcbpat2\cellx532
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clcbpat2\cellx580
+\clvertalt\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\nestcell{\nonesttables\par}
+\pard\intbl\itap2\ssparaaux0\s0\ql\plain\f0\fs20{\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin}\plain\f6\fs16\cs2\lang4105\hich\f6\dbch\f6\loch\f6\cf1\highlight3\cb3\chcbpat3\ulc1\fs16\b\protect\loch structured scenarios {\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}\loch >\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\par
+\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\protect\loch 2\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\loch .\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\loch \plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\protect\loch system returns data\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\par
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Rules \loch Referenced:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clvmgf\clcbpat2\cellx1736
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Exc\loch epti\loch ons:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\loch \nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\nestcell{\nonesttables\par}
+\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\clcbpat2\cellx532
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clcbpat2\cellx580
+\clvertalt\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmgf\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f7\fs20\cell
+\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmrg\cellx9360
+\pard\intbl\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\cell
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\cell
+\intbl\row
+\pard\ssparaaux0\s0\ql\plain\f0\fs20\plain\f3\fs20\lang3081\hich\f3\dbch\f3\loch\f3\cf1\fs20\par
+\plain\f7\fs20\par
+}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/fail/forcepoint-82.rtf b/sw/qa/core/data/rtf/fail/forcepoint-82.rtf new file mode 100644 index 000000000..54b1dee42 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/forcepoint-82.rtf @@ -0,0 +1,28 @@ +{\rtf1 +{\trowd +\clbrdrl\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clbrdrt\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\cellx2000 +\pard +Text 1 +\itap0 +\cell +\row} +\pard +\par +\itap0 +{\trowd +\clbrdrl\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\clbrdrt\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\cellx2000 +\pard +Text 2 +\itap0 +\cell +\row} +\itap-1 +{\trowd +\clbrdrl\brdrs\brdrw2147483649\clbrdrr\brdrs\brdrw9\clbrdrt\brdrs\brdrw10\cló brdrb\brdrs\brdrw185\cellx1000 +\nestroó €©w} +\itap0 +\cell +\row} +\itap0 +\par +}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/fail/table-1.rtf b/sw/qa/core/data/rtf/fail/table-1.rtf Binary files differnew file mode 100644 index 000000000..c333a1037 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/table-1.rtf diff --git a/sw/qa/core/data/rtf/fail/table-2.rtf b/sw/qa/core/data/rtf/fail/table-2.rtf Binary files differnew file mode 100644 index 000000000..35e859b30 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/table-2.rtf diff --git a/sw/qa/core/data/rtf/fail/table-3.rtf b/sw/qa/core/data/rtf/fail/table-3.rtf Binary files differnew file mode 100644 index 000000000..ea07218bd --- /dev/null +++ b/sw/qa/core/data/rtf/fail/table-3.rtf diff --git a/sw/qa/core/data/rtf/indeterminate/.gitignore b/sw/qa/core/data/rtf/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/rtf/indeterminate/.gitignore diff --git a/sw/qa/core/data/rtf/pass/CVE-2014-6357.rtf b/sw/qa/core/data/rtf/pass/CVE-2014-6357.rtf Binary files differnew file mode 100644 index 000000000..93fbc4021 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/CVE-2014-6357.rtf diff --git a/sw/qa/core/data/rtf/pass/CVE-2015-0086.rtf b/sw/qa/core/data/rtf/pass/CVE-2015-0086.rtf new file mode 100644 index 000000000..c8fa7200f --- /dev/null +++ b/sw/qa/core/data/rtf/pass/CVE-2015-0086.rtf @@ -0,0 +1 @@ +2 ØHvõyúªòR+9Bñu7˜K}^/^ TøêF½ÿî^rwBHzj‚SÒ_¶(/Ó¥1&Éýªü»ºŒÉà¬n%;˜¶
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/pass/CVE-2015-1651.rtf b/sw/qa/core/data/rtf/pass/CVE-2015-1651.rtf Binary files differnew file mode 100644 index 000000000..2a4f15efb --- /dev/null +++ b/sw/qa/core/data/rtf/pass/CVE-2015-1651.rtf diff --git a/sw/qa/core/data/rtf/pass/CVE-2017-0199.rtf b/sw/qa/core/data/rtf/pass/CVE-2017-0199.rtf Binary files differnew file mode 100644 index 000000000..fb82a2b6c --- /dev/null +++ b/sw/qa/core/data/rtf/pass/CVE-2017-0199.rtf diff --git a/sw/qa/core/data/rtf/pass/EDB-38031-1.rtf b/sw/qa/core/data/rtf/pass/EDB-38031-1.rtf Binary files differnew file mode 100644 index 000000000..2e3e2127d --- /dev/null +++ b/sw/qa/core/data/rtf/pass/EDB-38031-1.rtf diff --git a/sw/qa/core/data/rtf/pass/abi2128.rtf b/sw/qa/core/data/rtf/pass/abi2128.rtf new file mode 100644 index 000000000..270c675c7 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/abi2128.rtf @@ -0,0 +1,17 @@ +{\rtf1\ansi\ansicpg1252\deff0 +{\fonttbl +{\f0\froman\fcharset0\fprq2\fttruetype Times New Roman;}} +{\colortbl +\red0\green0\blue0; +\red255\green255\blue255;} +{\stylesheet +{\s2\sl240\slmult1\sbasedon1 Normal Clean;} +{\s1\sl240\slmult1\f0\fs24 Normal;}} +\kerning0\cf0\viewkind1\paperw12240\paperh15840\margl1440\margr1440\widowctl +\sectd\sbknone\colsx360\headery0\footery0 +\pard\qj\sl240\slmult1{\f0\fs24\lang1033{\*\listtag0}the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan. the big green dog bit the little afgan.} +{\header +\par\pard\sl240\slmult1 +\par\pard\sl240\slmult1 +\par\pard\sl240\slmult1 +\par\pard\s2\sl240\slmult1{\f0\fs24\lang1033{\*\listtag0}Hi this is the header}}}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/pass/abi2720.rtf b/sw/qa/core/data/rtf/pass/abi2720.rtf new file mode 100644 index 000000000..a337bda22 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/abi2720.rtf @@ -0,0 +1,259 @@ +{\rtf1 +\pard\plain \widctlpar\adjustright +\fs20\lang1031\cgrid +{\lang1024 +{\shpgrp +{\*\shpinst\shpleft0\shptop0\shpright14175\shpbottom9071\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz1\shplid1032 +{\sp +{\sn groupLeft} +{\sv 1418} +} +{\sp +{\sn groupTop} +{\sv 1418} +} +{\sp +{\sn groupRight} +{\sv 15593} +} +{\sp +{\sn groupBottom} +{\sv 10489} +} +{\sp +{\sn fFlipH} +{\sv 0} +} +{\sp +{\sn fFlipV} +{\sv 0} +} +{\sp +{\sn lidRegroup} +{\sv 0} +} +{\shp +{\*\shpinst\shplid1037 +{\sp +{\sn relLeft} +{\sv 2856} +} +{\sp +{\sn relTop} +{\sv 4008} +} +{\sp +{\sn relRight} +{\sv 3216} +} +{\sp +{\sn relBottom} +{\sv 4176} +} +{\sp +{\sn fRelFlipH} +{\sv 0} +} +{\sp +{\sn fRelFlipV} +{\sv 0} +} +{\sp +{\sn shapeType} +{\sv 0} +} +{\sp +{\sn geoRight} +{\sv 360} +} +{\sp +{\sn geoBottom} +{\sv 168} +} +{\sp +{\sn shapePath} +{\sv 4} +} +{\sp +{\sn pVerticies} +{\sv 8;10;(168,168);(84,108);(0,48);(24,24);(48,0);(264,0);(312,24);(360,48);(336,108);(312,168)} +} +{\sp +{\sn pSegmentInfo} +{\sv 2;9;16384;44288;8193 +;44288;8193;44288;8193;44032;32768} +} +{\sp +{\sn fFillOK} +{\sv 1} +} +{\sp +{\sn fFilled} +{\sv 0} +} +{\sp +{\sn lineEndArrowhead} +{\sv 2} +} +{\sp +{\sn lineEndArrowWidth} +{\sv 1} +} +{\sp +{\sn lineEndArrowLength} +{\sv 0} +} +{\sp +{\sn fArrowheadsOK} +{\sv 1} +} +{\sp +{\sn lidRegroup} +{\sv 0} +} +} +} +} +{\shprslt +{\*\do\dobxcolumn\dobypara\dodhgt8193\dppolygon\dppolycount4\dpptx0\dppty0\dpptx14175\dppty0\dpptx14175\dppty9071\dpptx0\dppty9071\dpx0\dpy0\dpxsize14175\dpysize9071 +\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0} +} +} +} +{\page } +{\lang1024 +{\shpgrp +{\*\shpinst\shpleft0\shptop0\shpright14175\shpbottom9071\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz2\shplid1038 +{\sp +{\sn groupLeft} +{\sv 1418} +} +{\sp +{\sn groupTop} +{\sv 1418} +} +{\sp +{\sn groupRight} +{\sv 15593} +} +{\sp +{\sn groupBottom} +{\sv 10489} +} +{\sp +{\sn fFlipH} +{\sv 0} +} +{\sp +{\sn fFlipV} +{\sv 0} +} +{\sp +{\sn lidRegroup} +{\sv 0} +} +{\shp +{\*\shpinst\shplid1041 +{\sp +{\sn relLeft} +{\sv 8506} +} +{\sp +{\sn relTop} +{\sv 5954} +} +{\sp +{\sn relRight} +{\sv 15593} +} +{\sp +{\sn relBottom} +{\sv 10489} +} +{\sp +{\sn fRelFlipH} +{\sv 0} +} +{\sp +{\sn fRelFlipV} +{\sv 0} +} +{\sp +{\sn shapeType} +{\sv 202} +} +{\sp +{\sn lTxid} +{\sv 458752} +} +{\sp +{\sn hspNext} +{\sv 1041} +} +{\sp +{\sn fFitShapeToText} +{\sv 0} +} +{\shptxt \pard\plain +\pard\plain \widctlpar\adjustright \f1\fs20\lang1031\cgrid +{\f1\dn28 +{\pict +{\*\picprop\shplid1025 +{\sp +{\sn shapeType} +{\sv 75} +} +{\sp +{\sn fFlipH} +{\sv 0} +} +{\sp +{\sn fFlipV} +{\sv 0} +} +{\sp +{\sn pictureActive} +{\sv 0} +} +{\sp +{\sn fillColor} +{\sv 268435473} +} +{\sp +{\sn fFilled} +{\sv 0} +} +{\sp +{\sn fLine} +{\sv 0} +} +} +\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1870\pich1199\picwgoal1060\pichgoal680\wmetafile8\bliptag-1230064263\blipupi-1583 +{\*\blipuid b6aeb57956b0ad18d349a83cd13b7dd7} +010009000003700100000200150000000000050000000902000000000400000002010100050000000102ffffff0005000000090200000000040000002e011800 +05000000310201000000050000000b0200000000050000000c024004a0060e00000026060f001200ffffffff000008000000c0ffbaff6006fa030b0000002606 +0f000c004d617468547970650000e0000500000009020000000015000000fb0280fe0000000000009001010000000002001054696d6573204e657720526f6d61 +6e000000040000002d01000009000000320a80023400010000004300010109000000320a8002de04010000004100ea0015000000fb0220ff0000000000009001 +010000000002001054696d6573204e657720526f6d616e000023040000002d01010004000000f001000009000000320ad401d8050100000069003e0009000000 +320af50315030100000069003e0009000000320aee000403010000006e00700010000000fb0280fe0000000000009001000000020002001053796d626f6c0002 +040000002d01000004000000f001010009000000320a8002a401010000003d00d30010000000fb0220ff0000000000009001000000020002001053796d626f6c +0002040000002d01010004000000f001000009000000320af5036a03010000003d007b0009000000320aee008303010000002d007b0010000000fb02c0fd0000 +000000009001000000020002001053796d626f6c0002040000002d01000004000000f001010009000000320ad702e20201000000e500980115000000fb0220ff +0000000000009001000000000002001054696d6573204e657720526f6d616e000023040000002d01010004000000f001000009000000320af503e50301000000 +3100700009000000320aee00fd0301000000310070000a00000026060f000a00ffffffff01000000000010000000fb021000070000000000bc02000000000102022253797374656d0000040000002d01000004000000f0010100030000000000} +} +{\f1 +\par } +} +} +} +} +{\shprslt +{\*\do\dobxcolumn\dobypara\dodhgt8194\dppolygon\dppolycount4\dpptx0\dppty0\dpptx14175\dppty0\dpptx14175\dppty9071\dpptx0\dppty9071\dpx0\dpy0\dpxsize14175\dpysize9071 +\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0} +} +} +} +{ +\par } +} diff --git a/sw/qa/core/data/rtf/pass/abi3241.rtf b/sw/qa/core/data/rtf/pass/abi3241.rtf new file mode 100644 index 000000000..5bfec3d0c --- /dev/null +++ b/sw/qa/core/data/rtf/pass/abi3241.rtf @@ -0,0 +1,9 @@ +{\rtf1 +{\stylesheet +{\sa120 Normal;} +{\s6\sbasedon0 \snext0 heading 6;} +} +\pard\plain \s6 +If more than one reaction channel is to be considered, use the keyword +\par +} diff --git a/sw/qa/core/data/rtf/pass/fdo54641.rtf b/sw/qa/core/data/rtf/pass/fdo54641.rtf new file mode 100644 index 000000000..25a3f7e59 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo54641.rtf @@ -0,0 +1,39 @@ +{\rtf1 +{\stylesheet +{\s0\qj\widctlpar\f0\fs20 \snext0 Normal;} +{\cs10 \additive\ssemihidden Default Paragraph Font;} +{\s1\qc\sb240\sa120\keepn\f0\b\fs40 \sbasedon0\snext0 Part;} +{\s2\ql\sb240\sa120\keepn\f0\b\fs40 \sbasedon0\snext0 heading 1;} +{\s3\ql\sb240\sa120\keepn\f0\b\fs32 \sbasedon0\snext0 heading 2;} +} +\paperw11960\paperh16900\margl2500\margr2560\margt2520\margb1820\pgnstart0\widowctrl\qj\ftnbj\f0\aftnnar +{\pard\plain\s20\qc\sb240\sa240\b\f0\fs36\sl240\slmult1 \fi0 De titel van het testfile\par +\pard\plain\s21\qc\sa120\f0\fs20\sl240\slmult1 \sb120 \fi0 \chdate \par +\pard\plain\s80\ql\sb240\sa120\keepn\f0\b\fs20\sl240\slmult1 \sb120 \fi0 Inhoudsopgave\par +\pard\plain\s0\qj\widctlpar\f0\fs20\sl240\slmult1 \sb120 \fi0 \par +{\field +{\*\fldinst TOC \\o "1-3" } +{\fldrslt } +} +\page +\pard\plain\s0\qj\widctlpar\f0\fs20\sl240\slmult1 \sb180 \fi0 +{} +\par +\pard\plain\ql\sb240\sa120\keepn\f0\b\fs40\sl240\slmult1 \sb120 \fi0 Hoofdstuk 1\par +\pard\plain\s2\ql\sb240\sa120\keepn\f0\b\fs40\sl240\slmult1 \sb360 \fi0 De eerste test\par +\pard\plain\s0\qj\widctlpar\f0\fs20\sl240\slmult1 \sb360 \fi0 In dit hoofdstuk zullen de eerste tests uitgevoerd worden.\par +\pard\plain\s3\ql\sb240\sa120\keepn\f0\b\fs32\sl240\slmult1 \sb360 \fi0 1.1 Figuren\par +{\pard\plain\s31\qc\sb120\sa0\keep\widctlpar\f0\fs20\sl240\slmult1 \sb420 \fi0 +{\pict\picscalex92\picscaley92\piccropl0\piccropr0\piccropt0\piccropb0 +\picw20032\pich2725\picwgoal5357\pichgoal1545\pngblip\bliptag-1891142031 +{\*\blipuid 8f477671d3377e167ce61bb2e9de72f7} +47494638396110001000d5ff00000000ffffffc0c0c0555f00ffffaafcfcfcf6f6f6eaeaeae6e6e6e4e4e4e3e3e3c2c2c2c1c1c1bcbcbcb5b5b5b3b3b3b0b0b0adadada5a5a5a2a2a2a1a1a19f9f9f9494948a8a8a8888888686867b7b7b6c6c6c5c5c5c4e4e4e4b4b4b4747474646463d3d3d3c3c3c2e2e2e2525251b1b1b18181810101009090906060603030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000002002c0000000010001000000684408170482c0a06c8a4728924389f506833b281302a8e6b164b18103024c52111504cca67332102e0042e9a40d9319f8300a343c1200f54e47f7e2a00001e0b0a7d0d728a010d838400261a7c0d94947784252700127e9d159f6c8411140019080ea7a9a85f842122281612b1b3b25d6b1f29291d0fbbbdbc5d5e51c34e4cc64a46c94341003b +} +\par +} +\pard\plain\s0\qj\widctlpar\f0\fs20\sl240\slmult1 \sb240 \fi0 De test wordt gevormd door een enkele, simpele figuur +[ +].\par +\pard\plain\s3\ql\sb240\sa120\keepn\f0\b\fs32\sl240\slmult1 \sb360 \fi0 1.2 Tabellen\par +} +} diff --git a/sw/qa/core/data/rtf/pass/fdo61638.rtf b/sw/qa/core/data/rtf/pass/fdo61638.rtf new file mode 100644 index 000000000..e85245b5e --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo61638.rtf @@ -0,0 +1,31 @@ +{\rtf1 +{\mmath +{\*\moMathPara +{\*\moMath +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 a} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 =} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 b} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 c} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 d} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\f34\insrsid7877010 .} +} +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid7877010 \par } +} diff --git a/sw/qa/core/data/rtf/pass/fdo72204.rtf b/sw/qa/core/data/rtf/pass/fdo72204.rtf new file mode 100644 index 000000000..052a63932 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo72204.rtf @@ -0,0 +1,48 @@ +{\rtf1 +{\shpgrp +{\*\shpinst\shpleft-950\shptop156\shpright1583\shpbottom2942\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1036 +{\sp{\sn groupLeft}{\sv 1621}} +{\sp{\sn groupTop}{\sv 2621}} +{\sp{\sn groupRight}{\sv 4154}} +{\sp{\sn groupBottom}{\sv 5407}} +{\sp{\sn rotation}{\sv 0}} +{\shp +{\*\shpinst\shplid1037 +{\sp{\sn relLeft}{\sv 1621}} +{\sp{\sn relTop}{\sv 2621}} +{\sp{\sn relRight}{\sv 4154}} +{\sp{\sn relBottom}{\sv 5092}} +{\sp{\sn shapeType}{\sv 202}} +{\shptxt \ltrpar \trowd +\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cellx567 +\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cellx1134\clbrdrt\brdrtbl \clbrdrl\brdrnone \clbrdrb\brdrtbl \clbrdrr\brdrtbl +\cellx1701\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\cellx2268\pard\plain \ltrpar\ql +\intbl \rtlch \afs22\alang1025 \ltrch \lang1038\langfe1033\loch\hich\dbch\cgrid\langnp1038\langfenp1033 +{\rtlch \ltrch +\hich\dbch\loch\f37 a)\cell } +\pard \ltrpar\qc \intbl +{\rtlch \ltrch +\cell \cell \cell } +\pard \ltrpar\ql \intbl +{\rtlch \ltrch \trowd +\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cellx567 +\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cellx1134\clbrdrt\brdrtbl \clbrdrl\brdrnone \clbrdrb\brdrtbl \clbrdrr\brdrtbl +\cellx1701\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\cellx2268\row } +\trowd \clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cellx567 +\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cellx1134\clbrdrt\brdrtbl \clbrdrl\brdrnone \clbrdrb\brdrtbl \clbrdrr\brdrtbl +\cellx1701\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\cellx2268\pard \ltrpar\qc +\intbl +{\rtlch \ltrch \cell \cell \cell \cell } +\pard \ltrpar\ql \intbl +{\rtlch \ltrch \trowd +\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cellx567 +\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cellx1134\clbrdrt\brdrtbl \clbrdrl\brdrnone \clbrdrb\brdrtbl \clbrdrr\brdrtbl +\cellx1701\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\cellx2268\row } +\pard \ltrpar\ql \itap0\par +} +} +} +} +} +\par +} diff --git a/sw/qa/core/data/rtf/pass/fdo78900.rtf b/sw/qa/core/data/rtf/pass/fdo78900.rtf new file mode 100644 index 000000000..d379735ef --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo78900.rtf @@ -0,0 +1,11 @@ +{\rtf1\ansi\ansicpg1252\deff0\deftab720 +\viewkind1\paperw11910\paperh16845\margl225\margr225\margt225\margb225\headery0\footery0 +{ +{\*\do\dobxpage\dobypage\dptxbx +{\dptxbxtext\dpx227\dpy227\dpxsize11911\dpysize9709\dplinehollow +{hello +} +} +} +\par} +} diff --git a/sw/qa/core/data/rtf/pass/fdo79384.rtf b/sw/qa/core/data/rtf/pass/fdo79384.rtf new file mode 100644 index 000000000..c9d6b3318 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo79384.rtf @@ -0,0 +1,6 @@ +{\rtf1
+{\fonttbl{\f5\fnil\fprq0\fcharset128 OpenSymbol;}}
+{\stylesheet
+{\*\cs35\snext35\hich\af5\dbch\af5\loch\f5 „M„p„‚„{„u„‚„ „ƒ„„y„ƒ„{„p;}
+}
+\par }
diff --git a/sw/qa/core/data/rtf/pass/fdo80924.rtf b/sw/qa/core/data/rtf/pass/fdo80924.rtf new file mode 100644 index 000000000..cbaeb442c --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo80924.rtf @@ -0,0 +1,43 @@ +{\rtf1\ansi\ansicpg1252\uc1
+{\*\generator Microsoft Word 11.0.5604;}
+{\info{\author Crystal Reports}{\doccomm Powered By Crystal}}
+\pard\plain {
+\lang1024\langfe1024\noproof\insrsid10428813
+{\shp{\*\shpinst\shpleft306\shptop16065\shpright11251\shpbottom16065\shpfhdr0\shpbxpage\shpbxignore\shpbypage\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz1\shplid1026
+{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineWidth}{\sv 12700}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}{\sp{\sn fBehindDocument}{\sv 1}}
+{\sp{\sn fLayoutInCell}{\sv 0}}}}
+}
+\pard
+{\shp{\*\shpinst\shpleft4920\shptop850\shpright6264\shpbottom1858\shpfhdr0\shpbxpage\shpbxignore\shpbypage\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz2\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn pib}{\sv {\pict\picscalex30\picscaley30\piccropl0\piccropr0\piccropt0\piccropb0\picw7939\pich5953\picwgoal4501\pichgoal3375
+\jpegblip
+ffd8ffe000104a46494600010101004800480000ffe101604578696600004d4d002a000000080009010e00020000000100000000010f0002000000060000007a
+011000020000001500000080011200030000000100010000011a00050000000100000096011b0005000000010000009e01280003000000010002000001310002
+0000000c000000a68769000400000001000000b20000000043616e6f6e0043616e6f6e20506f77657253686f7420413531300000000000480000000100000048
+0000000147494d5020322e362e3131000009829a00050000000100000124829d0005000000010000012c88270003000000010000000090000007000000043032
+3130900300020000001400000134920a00050000000100000148928600070000000800000150a00000070000000430313030a001000300000001ffff00000000
+00000051eb85ffffffff0000000400000001323031313a30363a31322031393a32363a3436000000001000000001554e49434f444500ffdb0043000806060706
+05080707070909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb004301
+0909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232
+ffc0001108003c004003012200021101031101ffc4001a000002030101000000000000000000000004050203060100ffc4003210000201030302050302050500
+000000000102030004110512213151132241617106143242911523a1c1e17281b1d1f0ffc400190101010101010100000000000000000000010200030405ffc4
+001d110002020203010000000000000000000000010211213103225141ffda000c03010002110311003f007e1df6912a2c9e8372f27fdc509731bc571f731065
+8b1b668f180bcf0c3e3d7da99c6ca3cf24783ed5cbd1b6d8c91287232319ea3b7c57cc3d82cbdd5adecf62c9b9e50be6551d3e6975d7d49163f976ec47405985
+461fa6defa797c49e73264332a614007b64e71e993da8a6fa26d9b02459ca8f533e7fe055df1ad93d9e81edbea8831992270c060ed20d7351d76316ea6c9f6cb
+2379ba7007b50b7bf467dabaf812c881f254b9ca8f63eb54e816da6dd4d2e9978a535589cf926fc5d7b2907b7355d2ad076d0136b5746e15da77dcbd8fbf6ada
+0769144858052a0e3b8a51aae876a34b98ac31c4f1a92194739a274f995b4cb7594296f0c0233d7ff62a66d35686298dadc1958a89627e7aa9dbd7d0a9fed5c9
+199565555c323608cf0738ff001553b9824dc5778f6f37a54cb89e4dfbcf9941f4c71dea1942c86ff1acc9340764817c2970bc9c72323f7a7aba84aea4e0678e
+0f18acb5bec3acdeba070e1b1c0e09029c2baf86482aa71fa813fd3d6a65156298d3ee5a67db22a6d230ca4fe5599fa8fe985bb432443c2b98fcd6f32b727d42
+934c22994b30cb021b9214f1c7bfad1e2fa27b6922b91cc433b80f6c8c0ef5a2dc5e0cf3b10e8badaeb7612595f0116ab0a14911b8f1401f97cf7ab6cadd52d8
+44e780be50f80323af3e99a5b7f6f8d5edb53b3c7de6e2bb0ae04a30723fd445398d0f86889e424701b079aa963408b2662a049092c18ed200cd4236731c4f9c
+7246339aba1b83185049f7e7d4f7cd0f730cd736720b6f0dd8e498d9f6ab8edd29fa0cc83eb725bdd4a2d88f348497c641f807a579b59bb698399873fa71c0cf
+b502da16b0d3304b275009e0b00073e849a99d175a4600d8bf27960ca40f9e6bbd44e76c3df57ba38669cee1ea3028cd2f5dbcbabb4b090f8aae0e18e015e339
+f7ff00349a6d1355455678939e021917767f7a23e9bb37fe2c65b872823181b39e4fa1ed44a31a14dd9a2d4d360b62ea1b1386ebedd28a376890659d843fa8c9
+d71ff79a13584630c1b18bb8940c28f53d28a8bc4306638f3819219871f39e95c19d11631324061207dc6762b95cec61dc0f71fd69969f0d9ff0f8e2ba01655d
+d9c291ce4f208e71cd7a3b48597c464cbb1de5ba1cf1daaefb189433465e321b8d871d41a993148b25d26d76f98b0e47490f3f3533a4da642a028e0648ce78a5
+1717973671954999f613867e49c9c609edc554faadda40ec24e9818f91454bd3606efa05a4cd993c49075db9c0c8f8aea68f681b7a0973c91e62c47ef40a5ecc
+d023b90c73b79cf4aaef6e678d86d95c33851bb3c8cf6f4a5a97a6c1ed6ece3b7804b02ac9b86c1c12d93c8c01d7a1a147871a239dc84f250b647b64d4e79a53
+0c71072a646c175fc8704e476e959db6bdb892cd54c9b40214ed00646ec7f7aa8a6d03747fffd9
+}}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}
+{\sp{\sn fBehindDocument}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}}}
+\par }
diff --git a/sw/qa/core/data/rtf/pass/fdo82859.rtf b/sw/qa/core/data/rtf/pass/fdo82859.rtf new file mode 100644 index 000000000..72b1576e0 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo82859.rtf @@ -0,0 +1,25 @@ +{\rtf1 +{\field +{\*\fldinst SHAPE } +{\fldrslt +{\shp +{\*\shpinst\shpleft-90\shptop720\shpright9404\shpbottom2939\shpwr2\shpbxignore\shpbyignore +{\sp +{\sn shapeType} +{\sv 1} +} +{\sp +{\sn pVerticies} +{\sv 8;4;(0,0);(-2147483645,0);(-2147483645,-2147483646);(0,-2147483646)} +} +{\sp +{\sn pSegmentInfo} +{\sv 2;4;16384;3;24577;32768} +} +{\shptxt hello} +} +} +} +} +\par +} diff --git a/sw/qa/core/data/rtf/pass/fdo84536.rtf b/sw/qa/core/data/rtf/pass/fdo84536.rtf new file mode 100644 index 000000000..a8eaacf0d --- /dev/null +++ b/sw/qa/core/data/rtf/pass/fdo84536.rtf @@ -0,0 +1,16 @@ +{\rtf1 +{\shp +{\*\shpinst\shpleft0\shptop0\shpright10557\shpbottom2639\shpfhdr0\shpbxmargin\shpbxignore\shpbymargin\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz2\shplid2054 +{\sp +{\sn shapeType} +{\sv 202} +} +{\sp +{\sn rotation} +{\sv -2949120} +} +{\shptxt hello\par} +} +} +\par +} diff --git a/sw/qa/core/data/rtf/pass/forcepoint-1.rtf b/sw/qa/core/data/rtf/pass/forcepoint-1.rtf new file mode 100644 index 000000000..afee08d8d --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint-1.rtf @@ -0,0 +1,193 @@ +{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang3082\deflangfe3082{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f153\froman\fcharset238\fprq2 Times New Roman CE;}{\f154\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f156\froman\fcharset161\fprq2 Times New Roman Greek;} +{\f157\froman\fcharset162\fprq2 Times New Roman Tur;}{\f158\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f159\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f160\froman\fcharset186\fprq2 Times New Roman Baltic;} +{\f161\fswiss\fcharset238\fprq2 Arial CE;}{\f162\fswiss\fcharset204\fprq2 Arial Cyr;}{\f164\fswiss\fcharset161\fprq2 Arial Greek;}{\f165\fswiss\fcharset162\fprq2 Arial Tur;}{\f166\fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\f167\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f168\fswiss\fcharset186\fprq2 Arial Baltic;}{\f169\fmodern\fcharset238\fprq1 Courier New CE;}{\f170\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f172\fmodern\fcharset161\fprq1 Courier New Greek;} +{\f173\fmodern\fcharset162\fprq1 Courier New Tur;}{\f174\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f175\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f176\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\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;}{\stylesheet{\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext0 Normal;}{ +\s3\qj \li0\ri0\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs24\lang3082\langfe1024\cgrid\langnp3082\langfenp1024 \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive Default Paragraph Font;}{ +\s15\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext15 Lower Roman List;}{\s16\ql \li0\ri0\nowidctlpar\tx431\faauto\rin0\lin0\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon31 \snext0 Numbered Heading 1;}{\s17\ql \li0\ri0\nowidctlpar\tx431\faauto\rin0\lin0\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon32 \snext0 Numbered Heading 2;}{ +\s18\ql \li0\ri0\nowidctlpar\tx431\faauto\rin0\lin0\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon33 \snext0 Numbered Heading 3;}{\s19\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext19 Endnote Text;}{\s20\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext20 Diamond List;}{ +\s21\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext21 Numbered List;}{\s22\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 +\fs20\lang3082\langfe3082\super\cgrid\langnp3082\langfenp3082 \snext22 Endnote Reference;}{\s23\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext23 Triangle List;}{ +\s24\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext24 Square List;}{\s25\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext25 Dashed List;}{\s26\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon21 \snext26 Upper Roman List;}{ +\s27\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext27 Heart List;}{\s28\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon21 \snext28 Upper Case List;}{\s29\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext29 Bullet List;}{ +\s30\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext30 Hand List;}{\s31\ql \li0\ri0\sb440\sa60\nowidctlpar\faauto\rin0\lin0\itap0 +\b\f1\fs34\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext0 Heading 1;}{\s32\ql \li0\ri0\sb440\sa60\nowidctlpar\faauto\rin0\lin0\itap0 \b\f1\fs28\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext0 Heading 2;}{ +\s33\ql \li0\ri0\sb440\sa60\nowidctlpar\faauto\rin0\lin0\itap0 \b\f1\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext0 Heading 3;}{\s34\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext34 Tick List;}{\s35\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon21 \snext35 Lower Case List;}{ +\s36\ql \li1440\ri1440\sa117\nowidctlpar\faauto\rin1440\lin1440\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext36 Block Text;}{\s37\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 +\fs20\lang3082\langfe3082\super\cgrid\langnp3082\langfenp3082 \snext37 Footnote Reference;}{\s38\ql \li0\ri0\nowidctlpar\tx1584\faauto\rin0\lin0\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon16 \snext0 Section Heading;}{ +\s39\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext39 Implies List;}{\s40\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext40 Box List;}{\s41\ql \fi-431\li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \snext41 Star List;}{ +\s42\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \f2\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon0 \snext42 Plain Text;}{\s43\ql \li0\ri0\nowidctlpar\tx1584\faauto\rin0\lin0\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 \sbasedon16 \snext0 Chapter Heading;}}{\info{\author Unknown User}{\operator Unknown User}{\creatim\yr2003\mo4\dy6\hr19\min50}{\revtim\yr2003\mo4\dy6\hr23\min50}{\printim\yr2003\mo4\dy6\hr23\min29} +{\version17}{\edmins226}{\nofpages4}{\nofwords1077}{\nofchars6144}{\*\company DellComputerCorporation}{\nofcharsws7545}{\vern8249}}\paperw11905\paperh16837\margl1440\margr1440 +\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl \fet0\sectd +\sbknone\linex0\colsx360\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4 +\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (} +{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s16\ql \fi-1440\li1440\ri0\nowidctlpar\faauto\rin0\lin1440\itap0 +\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\lang1034\langfe3082\langnp1034 Alumne: Jordi Mas i Hern\'e0ndez +\par }\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\lang1034\langfe3082\langnp1034 PAC: C +\par +\par }{\b\fs24\ul\lang1034\langfe3082\langnp1034 1. Introducci\'f3}{ +\par }{\b\fs24\ul\lang1034\langfe3082\langnp1034 \line }{\fs24\lang1034\langfe3082\langnp1034 L\rquote objectiu d\rquote aquesta PAC \'e9s comparar el funcionament de dos sistemes de traducci\'f3 autom\'e0tica. +\par \line Cal destacar, que el Salt requereix la intervenci\'f3 humana per desambiguar molts casos mentre que l\rquote Internostrum ho intenta fer autom\'e0ticament. +\par }{\b\fs24\ul\lang1034\langfe3082\langnp1034 +\par 2. Desenvolupament}{ +\par }{\b\fs24\ul\lang1034\langfe3082\langnp1034 +\par }{\b\fs24\lang1034\langfe3082\langnp1034 Preedici\'f3}{ +\par }{\b\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\langnp1034 De cara a facilitar al m\'e0xim la feina al sistema traducci\'f3 \'e9s for\'e7a convenient donar el text original el m\'e9s correcte possible. En aquest sentit, proposaria els seg\'fc +ents canvis sobre el text original espanyol:}{ +\par }{\fs24\lang1034\langfe3082\langnp1034 +\par - 'Com surgido' ho substituiria per "Como surgido'\line }{ +\par }{\fs24\lang1034\langfe3082\langnp1034 - ' a cerca ' ho substituiria per ' acerca '\line }{ +\par }\pard\plain \s16\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\lang1034\langfe3082\langnp1034 - Imprevisilidad i orbitar no s\'f3n paraules normatives en castell\'e0 perqu\'e8 + no tenen una entrada al diccionari de la RAE, per la qual cosa fora convenient canviar-les per una forma admesa. +\par }\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs24\lang1034\langfe3082\langnp1034 \line }{\b\fs24\lang1033\langfe3082\langnp1033 Ambig\'fcitats l\'e8xiques}{ +\b\lang1033\langfe3082\langnp1033 +\par }{\fs24\lang1033\langfe3082\langnp1033 +\par }{\fs24\lang1034\langfe3082\langnp1034 - \lquote Cometa\rquote . Salt proposa \lquote cometa\rquote i InterNostrum \rquote estel\rquote .\line +\par Per poder resoldre aquesta ambig\'fcitat necessitar\'edem que el traductor tingu\'e9s en compte la sem\'e0ntica dels mots, la qual cosa \'e9s impossible avui en dia. En aquesta situaci\'f3, malgrat la paraula estel \'e9 +s menys precisa que cometa quan es refereix a un cos del sistema solar, aquest mat\'eds nom\'e9s el pot donar l\rquote autor. +\par +\par -\lquote Alcanzar\rquote , que en castell\'e0 t\'e9 dos sentits \lquote aconseguir\rquote i \lquote arribar\rquote . Salt opta per \lquote aconseguir\rquote i Internostrum per \lquote arribar\rquote . Sense tenir en compte la sem\'e0ntica de la frase +\'e9s impossible desambiguar aquest cas +\par +\par }{\b\fs24\lang1033\langfe3082\langnp1033 Ambig\'fcitats sint\'e0ctiques}{\fs24\lang1034\langfe3082\langnp1034 +\par +\par - \lquote Como surgido de la nada\rquote . Tots dos opten per la traducci\'f3 \lquote com sorgit del no res\rquote i seria m\'e9s correcte \lquote com a sorgit del no res\rquote \line +\par }\pard\plain \s33\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \b\f1\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\f0\lang1034\langfe3082\langnp1034 Ambig\'fcitats sint\'e0ctico-sem\'e0ntiques +\par }\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\langnp1034 -}{\fs24\lang1034\langfe3082\langnp1034 \lquote Dicho\rquote . Salt proposa \lquote El dit vent\rquote i InterNostrum \rquote Dit vent\rquote .Salt t\'e9 un problema amb l\rquote analitzador sint\'e0ctic perqu\'e8 + interpreta un relatiu com si fos un substantiu. +\par +\par }\pard\plain \s33\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \b\f1\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\f0\lang1034\langfe3082\langnp1034 Dialectal +\par }\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\langnp1034 Malgrat ambd\'f3s productes estan fets al Pa\'eds Val\'e8ncia, Salt escull preferentment la variant dialectal valenciana mentre que Internostrum opta per la varietat central, que s\rquote adopta com a est\'e0ndard. +\line }{\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1033\langfe3082\langnp1033 -}{\fs24\lang1033\langfe3082\langnp1033 Pronom possessiu \lquote su\rquote . }{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote seua\rquote i InterNostrum \rquote seva\rquote . + Per altra banda, els dos sistemes reconeixen correctament que es tracta d\rquote un forma femenina per l\rquote an\'e0lisis sint\'e0ctica que fan de la frase.\line +\par }{\fs24\lang1034\langfe3082\langnp1034 -}{\fs24\lang1034\langfe3082\langnp1034 \lquote Atr\'e1s\rquote . Salt proposa \lquote arrere\rquote i InterNostrum \rquote endarrere\rquote .}{\fs24\lang1034\langfe3082\langnp1034 +\par +\par - \lquote Arrebatadas\rquote . }{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 Arrabassada}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{\fs24\lang1034\langfe3082\langnp1034 +arravassada}{\fs24\lang1034\langfe3082\langnp1034 \rquote . La forma que proposa Internostrum en aquest cas \'e9s err\'f2nia, i probablement es deu a un error en la introducci\'f3 del l\'e8xic. +\par \line - \lquote Aparecer\rquote Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 apar\'e9ixer}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{\fs24\lang1034\langfe3082\langnp1034 apar\'e8ixer}{ +\fs24\lang1034\langfe3082\langnp1034 \rquote . Salt proposa una forma incorrecte, que probablement es deu a un error en la introducci\'f3 del l\'e8xic. +\par +\par }{\fs24\lang1034\langfe3082\langnp1034 - \lquote Encogerse\rquote .}{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 encollir-se}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{ +\fs24\lang1034\langfe3082\langnp1034 encongir-se}{\fs24\lang1034\langfe3082\langnp1034 \rquote . Ambdues formes s\'f3n sin\'f2nimes.}{\fs24\lang1034\langfe3082\langnp1034 +\par +\par - \lquote De estos\rquote .}{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 d\rquote estos}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{\fs24\lang1034\langfe3082\langnp1034 d +\rquote aquests}{\fs24\lang1034\langfe3082\langnp1034 \rquote . La segona forma \'e9s molt m\'e9s est\'e0ndard.\line }{\fs24\lang1034\langfe3082\langnp1034 +\par }\pard\plain \s33\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \b\f1\fs24\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\f0\lang1034\langfe3082\langnp1034 Estil +\par }\pard\plain \ql \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\lang1034\langfe3082\langnp1034 \line } +{\fs24\lang1034\langfe3082\langnp1034 Salt tendeix a escollir les formes m\'e9s semblants a l\rquote espanyol i el Internostrum les m\'e9s allunyades. +\par }{\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\langnp1034 - \lquote Rodear\rquote .}{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 rodejar}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{ +\fs24\lang1034\langfe3082\langnp1034 envoltar}{\fs24\lang1034\langfe3082\langnp1034 \rquote . Ambd\'faes formes s\'f3n sin\'f2nimes.}{\lang1034\langfe3082\langnp1034 \line +\par }{\fs24\lang1034\langfe3082\langnp1034 - \lquote Tardan\rquote .}{\fs24\lang1034\langfe3082\langnp1034 Salt proposa \lquote }{\fs24\lang1034\langfe3082\langnp1034 tarden}{\fs24\lang1034\langfe3082\langnp1034 \rquote i InterNostrum \rquote }{ +\fs24\lang1034\langfe3082\langnp1034 triguen}{\fs24\lang1034\langfe3082\langnp1034 \rquote . Ambd\'faes formes s\'f3n sin\'f2nimes. +\par +\par - \lquote A juzgar\rquote . Salt proposa \lquote a jutjar\rquote i InterNostrum \lquote si s\rquote ha de jutjar\rquote , \'e9s a dir, el primer fa un calc de l\rquote espanyol i Internostrum fa una construcci\'f3 m\'e9s pr\'f2pia del catal\'e0.\line }{ +\b\fs24\lang1034\langfe3082\langnp1034 +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs24\lang1034\langfe3082\langnp1034 -}{\fs24\lang1034\langfe3082\langnp1034 \lquote Junto\rquote . Salt proposa \lquote junt\rquote i InterNostrum \rquote juntament\rquote .}{ +\b\fs24\ul\lang1034\langfe3082\langnp1034 +\par +\par +\par 3. Marcatge dels textos +\par \line }{\b\fs24\lang1034\langfe3082\langnp1034 Text original +\par }\pard \ql \fi-2160\li2160\ri0\nowidctlpar\faauto\rin0\lin2160\itap0 {\b\fs24\ul\lang1034\langfe3082\langnp1034 +\par }\pard \qj \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs24 La visi\'f3n de un gran }{\fs24\highlight6 cometa}{\fs24 es fascinante. Sin embargo, los }{\fs24\highlight6 cometas}{\fs24 son una simple apariencia m\'e1s que una realidad sustancial: unas +\'93bolas de nieve sucia\'94 o unos bloques de hielo de pocos kil\'f3metros de di\'e1metro que quedaron como residuos en el proceso de nacimiento del sistema solar. La larga \'f3rbita oval de los }{\fs24\highlight6 cometas}{\fs24 + los a cerca al Sol y vuelve a alejarlos. Al aproximarse a la estrella madre, }{\fs24\highlight7 su}{\fs24 helada superficie se evapora formando una gran cabeza, que el viento solar extiende en una larga cola. }{\fs24\highlight3 Dicho}{\fs24 + viento arrastra hacia }{\fs24\highlight7 atr\'e1s}{\fs24 el gas, }{\fs24\highlight16 junto}{\fs24 con part\'edculas de polvo }{\fs24\highlight7 arrebatadas}{\fs24 en la evaporaci\'f3n, formando un par de colas que crecen a medida que el }{ +\fs24\highlight6 cometa}{\fs24 rodea el Sol, hasta }{\fs24\highlight6 alcanzar}{\fs24 los 100 millones de km. Al retroceder el }{\fs24\highlight6 cometa}{\fs24 , la cola vuelve a }{\fs24\highlight7 encogerse}{\fs24 . +\par Entre las clases de }{\fs24\highlight6 cometas}{\fs24 , hay unos que se caracterizan por el hecho de que }{\fs24\highlight7 su}{\fs24 \'f3rbita es tan grande que tardan millones de a\'f1os en }{\fs24\highlight16 rodear}{\fs24 al Sol. Los }{ +\fs24\highlight6 cometas}{\fs24 de per\'edodo largo }{\fs24\highlight16 tardan}{\fs24 m\'e1s de 200 a\'f1os en completar una \'f3rbita. Por \'faltimo, los de per\'edodo corto est\'e1 +n atrapados por la gravedad de los planetas y orbitan el Sol con relativa rapidez. +\par Se ignora d\'f3nde se originan los }{\fs24\highlight6 cometas}{\fs24 , pero, }{\fs24\highlight16 a juzgar}{\fs24 por sus largas \'f3rbitas, }{\fs24\highlight7 su}{\fs24 lugar de procedencia est\'e1 mucho m\'e1s all\'e1 de los planetas conocidos. +\par En los \'faltimos a\'f1os no se ha visto ning\'fan }{\fs24\highlight6 cometa}{\fs24 realmente grandioso pero, dada la imprevisibilidad }{\fs24\highlight7 de estos}{\fs24 fen\'f3menos, puede }{\fs24\highlight7 aparecer}{\fs24 + uno fulgurante, en cualquier momento, }{\fs24\highlight4 com surgido de la nada}{\fs24 . +\par +\par }\pard\plain \s3\qj \li0\ri0\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs24\lang3082\langfe1024\cgrid\langnp3082\langfenp1024 {\b0\ul\lang1034\langfe1024\langnp1034 Llegenda +\par }\pard\plain \qj \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1033\langfe3082\chshdng0\chcfpat8\chcbpat6\langnp1033 XXX}{\fs24\lang1033\langfe3082\langnp1033 - Ambig\'fcitats l\'e8xiques +\par }{\fs24\lang1034\langfe3082\chshdng0\chcfpat8\chcbpat4\langnp1034 XXX}{\fs24\lang1034\langfe3082\langnp1034 - Ambig\'fcitats sint\'e0tiques +\par }{\fs24\lang1034\langfe3082\highlight3\chshdng0\chcfpat8\chcbpat4\langnp1034 XXX}{\fs24\lang1034\langfe3082\langnp1034 - Ambig\'fcitats sint\'e0ctico-sem\'e0ntiques}{\fs24\lang1034\langfe3082\highlight5\chshdng0\chcfpat8\chcbpat7\langnp1034 +\par }{\fs24\lang1034\langfe3082\highlight7\chshdng0\chcfpat8\chcbpat7\langnp1034 XXX}{\fs24\lang1034\langfe3082\langnp1034 - Dialectal +\par }{\fs24\lang1034\langfe3082\highlight16\chshdng0\chcfpat8\chcbpat7\langnp1034 XXX}{\fs24\lang1034\langfe3082\langnp1034 - Estil +\par }{\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24 +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\fs24\lang1034\langfe3082\langnp1034 Text traduit}{ +\par }\pard \qj \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 {\b\fs24\lang1034\langfe3082\langnp1034 +\par }\pard \ql \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 {\fs24\lang1034\langfe3082\highlight4\langnp1034 La visi\'f3 d'un gran}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometa/estel}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 \'e9s fascinant}{\fs24\lang1034\langfe3082\langnp1034 . }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 No obstant}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 /aix\'f2}{\fs24\lang1034\langfe3082\langnp1034 , }{\fs24\lang1034\langfe3082\highlight4\langnp1034 els}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometes/estels}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 s\'f3n una simple aparen\'e7a m\'e9 +s que una realitat substancial: unes \'93boles de neu bruta\'94 o uns blocs de gel de pocs quil\'f2metres de di\'e0metre que van quedar com a residus en el proc\'e9s}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 +de}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 naixement/naixenca}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 del sistema solar.}{ +\par }{\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\highlight4\langnp1034 La llarga \'f2rbita oval dels}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometes/estels}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight6\langnp1034 els}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 a prop al Sol i torna a allunyar-los. A l'aproximar-se a l'estrela mare, la}{\fs24\lang1034\langfe3082\langnp1034 + }{\fs24\lang1034\langfe3082\highlight5\langnp1034 seua/seva}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 gelada superf\'edcie s'evapora formant un gran cap, que el vent solar est\'e9n en una llarga cua.}{ +\fs24\lang1034\langfe3082\langnp1034 +\par }{ +\par }{\fs24\lang1034\langfe3082\highlight5\langnp1034 El/}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight6\langnp1034 Dit}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 +vent arrossega cap a}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 arrere/endarrere}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 el gas}{ +\fs24\lang1034\langfe3082\langnp1034 , }{\fs24\lang1034\langfe3082\highlight5\langnp1034 junt/juntament}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 amb part\'edcules de pols}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 arrabassada/arravassades}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 en l'evaporaci\'f3 +, formant un parell de cues que creixen a mesura que}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 el}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometa/estel}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 rodeja/envolta}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 el Sol, fins}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight5\langnp1034 a aconseguir els /arribar a els}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 100 milions de km.}{\fs24\lang1034\langfe3082\langnp1034 +\par }{ +\par }{\fs24\lang1034\langfe3082\highlight4\langnp1034 Al retrocedir el}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometa/estel}{\fs24\lang1034\langfe3082\langnp1034 , }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 la cua torna a}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 encollir-se/encongir-se}{\fs24\lang1034\langfe3082\langnp1034 . }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 Entre les classes de}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometes/estels}{\fs24\lang1034\langfe3082\langnp1034 , }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 hi ha uns que es caracteritzen pel fet que la}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 seua/seva}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 \'f2rbita \'e9s tan gran que}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 tarden/triguen}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 milions d'anys a}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 rodejar/envoltar}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 el Sol. Els}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometes/estels}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 +de per\'edode llarg}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 tarden/triguen}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 m\'e9s de 200 anys a completar una \'f2 +rbita. Finalment, els de per\'edode curt estan}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 atrapats per la gravetat dels planetes i orbiten el Sol amb relativa rapidesa.}{\fs24\lang1034\langfe3082\langnp1034 + +\par }{ +\par }{\fs24\lang1034\langfe3082\highlight4\langnp1034 S'ignora on s'originen els}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometes/estels}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 , per\'f2}{\fs24\lang1034\langfe3082\langnp1034 , }{\fs24\lang1034\langfe3082\highlight5\langnp1034 a/si s\rquote ha de}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 jutjar per les}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 seues/seves}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 +llargues \'f2rbites, el seu lloc de proced\'e8ncia est\'e0 molt m\'e9s enll\'e0 dels planetes coneguts.}{ +\par }\pard \qj \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 {\fs24\lang1034\langfe3082\langnp1034 }{ +\par }\pard \ql \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 {\fs24\lang1034\langfe3082\highlight4\langnp1034 En els \'faltims anys no s'ha vist cap}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 cometa/estel}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight4\langnp1034 realment grandi\'f3s per\'f2, donada la}{ +\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight6\langnp1034 imprevisibilidad}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 d'estos/aquests}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 fen\'f2mens, pot}{\fs24\lang1034\langfe3082\langnp1034 }{\fs24\lang1034\langfe3082\highlight5\langnp1034 apar\'e9ixer/apar\'e8ixer}{\fs24\lang1034\langfe3082\langnp1034 }{ +\fs24\lang1034\langfe3082\highlight4\langnp1034 un fulgurant, en qualsevol moment, com sorgit del no-res.}{\fs24\lang1034\langfe3082\langnp1034 +\par +\par }\pard\plain \s3\qj \li0\ri0\keepn\widctlpar\hyphpar0\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs24\lang3082\langfe1024\cgrid\langnp3082\langfenp1024 {\b0\ul\lang1034\langfe1024\langnp1034 Llegenda +\par }\pard\plain \qj \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs24\lang1034\langfe3082\langnp1034 +\par }{\fs24\lang1034\langfe3082\chshdng0\chcfpat8\chcbpat6\langnp1034 XXX}{\fs24\lang1034\langfe3082\langnp1034 - errada coincident amb ambd\'f3s traductors +\par }{\fs24\lang1033\langfe3082\chshdng0\chcfpat8\chcbpat4\langnp1033 XXX}{\fs24\lang1033\langfe3082\langnp1033 - encert coincident amb ambd\'f3s traductors +\par }{\fs24\lang1033\langfe3082\highlight5\chshdng0\chcfpat8\chcbpat7\langnp1033 XXX}{\fs24\lang1034\langfe3082\langnp1034 - Solucions diferents +\par }\pard\plain \s22\ql \li0\ri0\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\super\cgrid\langnp3082\langfenp3082 { +\lang1034\langfe3082\nosupersub\langnp1034 +\par }{\fs24\ul\lang1034\langfe3082\nosupersub\langnp1034 Notes +\par }{\fs24\lang1034\langfe3082\nosupersub\langnp1034 \line - En cas de solucions diferents, la primera pertanya al Salt i la segona a l\rquote Internostrum +\par - En cas de paraules afegides el costat dret o esquerre de la barra / apareix buit, indicant que l\rquote altre traductor no ha incl\'f2s aquest mot. +\par +\par }{\lang1034\langfe3082\nosupersub\langnp1034 +\par }\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\b\fs24\ul\lang1034\langfe3082\langnp1034 4. Conclusi\'f3}{ +\par }\pard\plain \s22\ql \li0\ri15346071728\nowidctlpar\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\tx9360\tx10080\faauto\rin0\lin0\itap-4 \fs21\lang67621623\langfe3082ï½°\super\cgrid\langnp3082\langfenp3082 { +\lang1\langfe35850\nosupersub\langnp1034 +\par +\par }{\fs24\lang18446744073709551615\langfe3082\nosupersub\langnp1034 El Salt utilitza intensament les formes dialectals valencianes mentre que l\rquote Internostrum utilitza el catal\'e0 est\'e0ndard. Per altra banda, el Salt tendeix a fer servir calcs de l\rquote +espanyol mentre que l\rquote Internostrum acostuma a decantar-se per les formes pr\'f2pies del catal\'e0. +\par +\par Ambd\'f3s sistemes fan una acceptable an\'e0lisis sint\'e0ctica que els permet desambiguar bastant casos de forma correcta. En algunes situacions es requereix coneixement sem\'e0ntic per poder desambiguar, que ara per ara impossible que ho assoleixin. + +\par }}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/pass/forcepoint-2.rtf b/sw/qa/core/data/rtf/pass/forcepoint-2.rtf Binary files differnew file mode 100644 index 000000000..895e6848c --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint-2.rtf diff --git a/sw/qa/core/data/rtf/pass/forcepoint-3.rtf b/sw/qa/core/data/rtf/pass/forcepoint-3.rtf new file mode 100644 index 000000000..da593a04b --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint-3.rtf @@ -0,0 +1 @@ +{\rtf1\`nsi \ansicpg1252\stshfloch0{\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\green102\blue204;\red102\green99\blue0;\red143\green142\blue142;\red75\green60\blue52;}{\fonttbl{\f0\froman\cpg1257\fcharset186 DejaVu Serif;}{\f1\froman\cpg0\fcharset0 DejaVu Serif;}{\f2\froman\cpg1252\fcharset0 DejaVu Serif;}{\f3\fswiss\cpg1257\fcharset186 DejaVu Sans;}{\f4\fswiss\cpg0\fcharset0 DejaVu Sans;}{\f5\fswiss\cpg1252\fcharset0 DejaVu Sans;}{\f6\froman\cpg1257\fcharset186 Times New Roman;}{\f7\froman\cpg0\fcharset0 Times New Roman;}{\f8\froman\cpg1252\fcharset0 Times New Roman;}{\f9\fmodern\cpg1257\fcharset186 Courier New;}{\f10\fmodern\cpg0\fcharset0 Courier New;}{\f11\fmodern\cpg1252\fcharset0 Courier New;}}{\stylesheet {\ql Normal;}{\s1\sbasedon0\ql\fi-120\sl-276\slmult0 Style1;}{\s2\sbasedon0\qj\fi560\sl-300\slmult0 Style2;}{\s3\sbasedon0\ql\sl-264\slmult0 Style3;}{\s4\sbasedon0\ql\fi-1088\sl-320\slmult0 Style4;}{\s5\sbasedon0\ql Style5;}{\s6\sbasedon0\ql Style6;}{\s7\sbasedon0\ql\sl-320\slmult0 Style7;}{\s8\sbasedon0\qr Style8;}{\s9\sbasedon0\ql Style9;}{\s10\sbasedon0\qj\sl-264\slmult0 Style10;}{\s11\sbasedon0\qj\sl-298\slmult0 Style11;}{\s12\sbasedon0\qj\sl-288\slmult0 Style12;}{\s13\sbasedon0\ql Style13;}{\s14\sbasedon0\ql\fi600\sl-329\slmult0 Style14;}{\s15\sbasedon0\ql\sl-240\slmult0 Style15;}{\s16\sbasedon0\ql Style16;}{\s17\sbasedon0\ql\fi576\sl-328\slmult0 Style17;}{\s18\sbasedon0\ql Style18;}{\s19\sbasedon0\ql\sl-271\slmult0 Style19;}{\s20\sbasedon0\ql\fi2406\sl-339\slmult0 Style20;}{\s21\sbasedon0\ql Style21;}{\s22\sbasedon0\ql\fi2821\sl-161\slmult0 Style22;}{\s23\sbasedon0\ql\fi568\sl-306\slmult0 Style23;}{\s24\sbasedon0\ql Style24;}{\s25\sbasedon0\ql Style25;}{\s26\sbasedon0\ql Style26;}{\s27\sbasedon0\ql Style27;}{\s28\sbasedon0\qj\sl-271\slmult0 Style28;}{\s29\sbasedon0\ql\fi568\sl-322\slmult0 Style29;}{\s30\sbasedon0\ql Style30;}{\s31\sbasedon0\ql Style31;}{\s32\sbasedon0\ql Style32;}{\s33\sbasedon0\ql Style33;}{\s34\sbasedon0\ql Style34;}{\s35\sbasedon0\ql Style35;}{\*\cs36\additive Default Paragraph Font;}{\*\cs37\sbasedon36\additive\b\charscalex120\f2\fs58 Font Style37;}{\*\cs38\sbasedon36\additive\b\charscalex30\f2\fs400 Font Style38;}{\*\cs39\sbasedon36\additive\i\f2\fs22 Font Style39;}{\*\cs40\sbasedon36\additive\scaps\f8\fs8 Font Style40;}{\*\cs41\sbasedon36\additive\i\b\f2\fs10 Font Style41;}{\*\cs42\sbasedon36\additive\f5\fs8 Font Style42;}{\*\cs43\sbasedon36\additive\b\expndtw200\f2\fs10 Font Style43;}{\*\cs44\sbasedon36\additive\f2\fs22 Font Style44;}{\*\cs45\sbasedon36\additive\b\expndtw-10\f2\fs22 Font Style45;}{\*\cs46\sbasedon36\additive\scaps\f2\fs20 Font Style46;}{\*\cs47\sbasedon36\additive\charscalex20\f2\fs104 Font Style47;}{\*\cs48\sbasedon36\additive\b\f2\fs20 Font Style48;}{\*\cs49\sbasedon36\additive\f2\fs22 Font Style49;}{\*\cs50\sbasedon36\additive\b\f2\fs38 Font Style50;}{\*\cs51\sbasedon36\additive\f2\fs20 Font Style51;}{\*\cs52\sbasedon36\additive\expndtw-20\f2\fs30 Font Style52;}{\*\cs53\sbasedon36\additive\i\expndtw-10\f2\fs22 Font Style53;}{\*\cs54\sbasedon36\additive\i\expndtw-20\f2\fs22 Font Style54;}{\*\cs55\sbasedon36\additive\f2\fs22 Font Style55;}{\*\cs56\sbasedon36\additive\f2\fs18 Font Style56;}{\*\cs57\sbasedon36\additive\b\expndtw10\f2\fs16 Font Style57;}{\*\cs58\sbasedon36\additive\b\f2\fs20 Font Style58;}{\*\cs59\sbasedon36\additive\i\b\expndtw-10\f11\fs22 Font Style59;}{\*\cs60\sbasedon36\additive\f2\fs20 Font Style60;}{\*\cs61\sbasedon36\additive\f2\fs12 Font Style61;}{\*\cs62\sbasedon36\additive\f2\fs18 Font Style62;}{\*\cs63\sbasedon36\additive\i\expndtw-20\f2\fs22 Font Style63;}{\*\cs64\sbasedon36\additive\b\expndtw-20\f2\fs26 Font Style64;}}\fet2{\*\ftnsep {\chftnsep\par }}{\*\aftnsep {\chftnsep\par }}\expshrtn\widowctrl\paperw20384\paperh12312\margl360\margr360\margt360\margb360 \sectd \sbknone\pgwsxn20384\pghsxn12312\marglsxn360\margrsxn360\margtsxn360\margbsxn360\titlepg\cols2\colno1\colw8632\colsr2104\colno2\colw8928 {\headerf }{\footerf }{\header \pard \plain \s11\ql\li720\fi0\ri9\sb0\sa0\tx2120 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 \'e1\f0\cchs186 Ma\ul b\f0\cchs186 \'fb\f0\cchs186 s vaikai:\ul0 {\charscalex100\expndtw0\tab }\ul ir galimyb\f0\cchs186 \'eb\f0\cchs186 s\par }{\footer \pard \plain \s11\qj\li0\fi0\ri0\sb0\sa0 \pvpara\phcol\posnegx0\posnegy0\absw0\absh-254\nowrap\dfrmtxtx34\dfrmtxty0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 {\field{\*\fldinst{PAGE}}{\fldrslt 100}}\par \pard \plain \s21\qr\li720\fi0\ri9{\sl-240\slmult0\fs20\par }\sb90\sa0 \cs61\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs12 101\par }\pard\sl-4680\slmult0\sb0\keepn\pvpara\dropcapli7\dropcapt1{\b\i0\ul0\cf0\highlight0\charscalex30\f0\fs400{i}\par}\pard \plain \s1\ql\li880\fi-880\ri0\sb0\sa0\sl-272\slmult0 \cs37\i0\strike0\nosupersub\b\scaps0\charscalex120\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs58 Hfc \cs55\b0\super\charscalex100\fs22 mddj8\nosupersub \super tUn\nosupersub \super tam\nosupersub \super dkrts\nosupersub identifikacijos proced\f0\cchs186 \'fb\f0\cchs186 ras, vadinasi \cs60\fs20 ivuiiy* toje \cs55\fs22 programoje \cs53\i\expndtw-10 asmenys \cs55\i0\expndtw0 turi mok\f0\cchs186 \'eb\f0\cchs186 ti naudotis identifikacijos \f0\cchs186 \'e1\f0\cchs186 ran-\cs60\fs20 *>*\f0\cchs186 \'ab\'f8\f0\cchs186 geb\f0\cchs186 \'eb\f0\cchs186 ti \cs55\fs22 analizuoti mokini\f0\cchs186 \'f8\f0\cchs186 veiklos produktus ir pati mokymosi proces\f0\cchs186 \'e0\f0\cchs186 , \cs60\f0\cchs186\fs20 \'95\f0\cchs186 tpaftistant \cs55\fs22 kriterijus, pagal kuriuos vaikas gali b\f0\cchs186 \'fb\f0\cchs186 ti priskirtas gabi\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 grupei. \cs60\fs20 Vargu, ar \cs55\fs22 bc specialaus \cs53\i\expndtw-10 pasirengimo \cs55\i0\expndtw0 gali dirbti mokytojas. Pavyzd\f0\cchs186 \'fe\f0\cchs186 iui, Clark modelyje numatyta, kad mokytojas turi b\f0\cchs186 \'fb\f0\cchs186 ti \f0\cchs186 \'e1\f0\cchs186 vald\f0\cchs186 \'e6\f0\cchs186 s \f0\cchs186 \'e1\f0\cchs186 tampos klas\f0\cchs186 \'eb\f0\cchs186 je suma\f0\cchs186 \'fe\f0\cchs186 i\-nimo strategijas (autogenin\f0\cchs186 \'e6\f0\cchs186 treniruot\f0\cchs186 \'e6\f0\cchs186 , meditacij\f0\cchs186 \'e0\f0\cchs186 ), turi geb\f0\cchs186 \'eb\f0\cchs186 ti parinkti mo\-kymo med\f0\cchs186 \'fe\f0\cchs186 iag\f0\cchs186 \'e0\f0\cchs186 , pratimus ir u\f0\cchs186 \'fe\f0\cchs186 duotis, kurioms atlikti b\f0\cchs186 \'fb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 naudojama abiej\f0\cchs186 \'f8 \f0\cchs186 smegen\f0\cchs186 \'f8\f0\cchs186 pusrutuli\f0\cchs186 \'f8\f0\cchs186 veikla, geb\f0\cchs186 \'eb\f0\cchs186 ti \f0\cchs186 \'e1\f0\cchs186 ugdymo turin\f0\cchs186 \'e1\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 traukti pratimus, kurie, panaudojant fizin\f0\cchs186 \'e1\f0\cchs186 k\f0\cchs186 \'fb\f0\cchs186 n\f0\cchs186 \'e0\f0\cchs186 , abstraktaus ir simbolinio lygmens \cs39\i informacij\f0\cchs186 \'e0\f0\cchs186 , \cs55\i0 trans\-formuoja \f0\cchs186 \'e1\f0\cchs186 konkretesn\f0\cchs186 \'e1\f0\cchs186 lygmen\f0\cchs186 \'e1\f0\cchs186 ir pan. Kai kurie autoriai, pavyzd\f0\cchs186 \'fe\f0\cchs186 iui, Wil-liams, netgi nurodo mokymo strategijas, kurias \cs39\i naudoti savo \cs55\i0 darbe turi mok\f0\cchs186 \'eb\f0\cchs186 ti \cs60\fs20 mokytojas, \cs55\fs22 kiti savo darbo komand\f0\cchs186 \'e0\f0\cchs186 apmoko. Renzulli modelio realizavimo komand\f0\cchs186 \'e0\f0\cchs186 sudaro ne tik mokytojai, bet ir t\f0\cchs186 \'eb\f0\cchs186 vai, bendruomen\f0\cchs186 \'eb\f0\cchs186 s ekspertai, mo\-kyklos administracija ir kt. personalas. Modelio veikimo efektyvum\f0\cchs186 \'e0\f0\cchs186 vertina \cs53\i\expndtw-10 visi \cs39\expndtw0 jo \cs53\expndtw-10 dalyviai, pagal tokios analiz\f0\cchs186 \'eb\f0\cchs186 s \cs55\i0\expndtw0 rezultatus bei mokini\f0\cchs186 \'f8\f0\cchs186 pageidavimus ar pakitusius poreikius ugdymo programa modifikuojama.\par \pard \plain \s2\ql\li576\fi560\ri0\sb0\sa0\sl-296\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Atskirai reik\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 pamin\f0\cchs186 \'eb\f0\cchs186 ti Taylor model\f0\cchs186 \'e1\f0\cchs186 . Jis vadinamas ir muititalento, ir k\f0\cchs186 \'fb\f0\cchs186 rybinio bei kritinio m\f0\cchs186 \'e0\f0\cchs186 stymo modeliu. \cs39\i Laikoma, kad \cs55\i0 bent vienai (j\f0\cchs186 \'f8\f0\cchs186 nuro\-domos net devynios) gabumo sri\f0\cchs186 \'e8\f0\cchs186 iai yra gabus kiekvienas vaikas. Toks gabi\f0\cchs186 \'f8 \f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 \cs53\i\expndtw-10 ugdymo modelis tur\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 b\f0\cchs186 \'fb\f0\cchs186 ti \cs39\expndtw0 priimtinas ir \cs55\i0\f0\cchs186 \'fe\f0\cchs186 mon\f0\cchs186 \'eb\f0\cchs186 ms, kurie mano, jog visi vaikai \cs60\fs20 turi \cs55\fs22 tam \cs53\i\expndtw-10 tikr\f0\cchs186 \'f8\f0\cchs186 \cs55\i0\expndtw0 gabum\f0\cchs186 \'f8\f0\cchs186 , ir d\f0\cchs186 \'eb\f0\cchs186 l koki\f0\cchs186 \'f8\f0\cchs186 nors prie\f0\cchs186 \'fe\f0\cchs186 as\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 nenori pripa\-\cs60\f0\cchs186\fs20 \'fe\f0\cchs186 inti \cs55\fs22 gabum\f0\cchs186 \'f8\f0\cchs186 \cs53\i\expndtw-10 lygmens \cs55\i0\expndtw0 skirtum\f0\cchs186 \'f8\f0\cchs186 . Modelio autorius nurodo \f0\cchs186 \'f0\f0\cchs186 ias gabum\f0\cchs186 \'f8\f0\cchs186 sritis: akademin\f0\cchs186 \'eb\f0\cchs186 s srities, \cs53\i\expndtw-10 produktyviojo \cs55\i0\expndtw0 m\f0\cchs186 \'e0\f0\cchs186 stymo, komuniJcavimo, prognozavimo, \cs53\i\expndtw-10 sprendim\f0\cchs186 \'f8\f0\cchs186 pri\f0\cchs186 \'eb\f0\cchs186 mimo, plan\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 gyvendinimo, \cs55\i0\expndtw0\f0\cchs186 \'fe\f0\cchs186 mogi\f0\cchs186 \'f0\f0\cchs186 k\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 , galimybi\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'e1\'fe\f0\cchs186 vel\-gimo \cs39\i\expndtw-20 (ir.\expndtw0 2.2.1 \cs53\expndtw-10 lentel\f0\cchs186 \'e6\f0\cchs186 ).\par \pard \plain \s11\qj\li6976\fi0\ri0{\sl-240\slmult0\fs20\par }\sb72\sa0 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 2.2.1 \cs55 lentel\f0\cchs186 \'eb\par \pard \plain \s8\qj\li0\fi0\ri0\sb0\sa0 \pvpara\phcol\posnegx6464\posnegy688\absw0\absh-256\dfrmtxtx40\dfrmtxty0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 U\f0\cchs186 \À§fe\f0\cchs186 duo\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 pavyzd\f0\cchs186 \'fe\f0\cchs186 iai\par \pard \plain \s4\qc\li2112\fi0\ri2232\sb0\sa0\sl-320\slmult0 \cs53\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-10\dn0ó ½\f0\cchs186\lang1\langfe1063\fs22 Gabum\f0\cchs186 \'f8\f0\cchs186 \cs44\i0\expndtw0 ugdymas pagal Taylor \cs55 model\f0\cchs186 \'e1 \f0\cchs186 (pagal TayJor, 1986)\par \pard \plain \s9\qj\li0\fi0\ri0\sb0\sa0 \pvpara\phcol\posnegx2648\posnegy368\absw0\absh-328\dfrmtxtx40\dfrmtxty0 \cs53\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-10\dn0\f0\cchs186\lang1063\langfe1063\fs22 Geb\f0\cchs186 \'eb\f0\cchs186 jimas \cs55\i0\expndtw0 susikurti \cs39\i atitinka- \{\f0\cchs186 \'84\f0\cchs186 Surinkite informacij\f0\cchs186 \'e0\f0\cchs186 apie... ii\par \pard \plain \s6\qj\li304\fi0\ri0\sb16\sa0 \cs63\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs22 I \cs53\expndtw -10 Gabum\f0\cchs186 \'f8\f0\cchs186 sritis Paai\f0\cchs186 \'f0\f0\cchs186 kinimas\par \pard \plain \s10\qj\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \pvpara\phcol\posnegx6032\posnegy328\absw2600\absh-544\dfrmtxtx40\dfrmtxty0 \cs53\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-170141183460469231731687303715884105727\dn0\f0\cchs186\lang1063\langfe1063\fs22 j mos temos \f0\cchs186 \'fe\f0\cchs186 ini\f0ó €\cchs186 \'f8\f0\cchs186 ir \f0\cchs186 \'e1\f0\cchs186 g\f0\cchs186 \'fb\f0\cchs186 d\f0\cchs186 \'fe\f0\cchs186 i\f0\cchs186 \'f8 \cs55\i0\expndtw0\f0\cchs186 'baz\f0\cchs186 \'e6\f0\cchs186 .\par \pard \plain \s12\qj\li0\fi0\ri0\sb0\sa0\sl-288\slmult0 \pvpara\phcol\posnegx5672\posnegy384\absw2960\absh-584\dfrmtxtx40\dfrmtxty0 \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 kuo \f0\cchs186 \'e1\f0\cchs186 vairesni\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'f0\f0\cchs186 altini\f0\cchs186 \'f8\f0\cchs186 ir j\f0\cchs186 \'e0\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 a\-nalizuokite".\pCar \+/v+pard \plain \s11\ql\li0\fi0\ri0\sb0\sa0\sl-296\slmult0\tlul\tx2520 \pvpara\phcol\posnegx5856\posnegy896\absw2776\absh-1656\dfrmtxtx40\dfrmtxty0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 f Geb\f0\cchs186 \'eb\f0\cchs186 jimas generuoti \cs60\fs20 ne-\line \cs55\fs22 f \f0\cchs186 \'e1\f0\cchs186 prastas, originalias i\f0\cchs186 \'eb\f0\cchs186 /as,\line \cs60\fs20 f\cs53\i\expndtw-10\fs22 pasteb\f0\cchs186 \'eb\'fb\f0\cchs186 naujus \cs55\i0\expndtw0 s\f0\cchs186 \'e0\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 ius,\line \cs53\i\expndtw-10 | papildyti detal\f0\cchs186 \'eb\f0\cchs186 mis, \cs55\i0\expndtw0 kurios\line \cs53\i\expndtw-10\f0\cchs186 \'c1\f0\cchs186 pa\f0\cchs186 \'e1\f0\cchs186 vairioa id\f0\cchs186 \'eb\f0\cchs186 jas,\expndtw0 {\charscalex100\expndtw0\tab }\par \pard \plain \s6\qj\li232\fi0\ri0\sb0\sa0 \cs53\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-10\dn0\f0\cchs186\lang1063\langfe1 063\fs22 'Akademin\f0\cchs186 \'eb\par \pard \plain \s12\qj\li0\fi0\ri0\sb0\sa0\sl-272\slmult0 \pvpara\phcol\posnegx5264\posnegy160\absw3368\absh-648\dfrmtxtx40\dfrmtxty0 \cs39\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 \'84\f0\cchs186 Sukurkite, kuo \cs60\i0\fs20 pakeisti \f0\cchs186 \'e258\f0\cchs186 prastas energijos r\f0\cchs186 \'fb\'f0\f0\cchs186 is".\par \pard \plain \s7\ql\li0\fi0\ri0\sb0\sa0\sl-320\slmult0 \cs39\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\laangfe1063\fs22 (K\f0\cchs186 \'fb\f0\cchs186 rybos, produktyvioio\par \pard \plain \s13\qj\li5816\fi0\ri0\sb88\sa0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 2.2.1 icntcU\par \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-240\slmult0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Gabum\f0\cchs186 \'f8\f0\cchs186 \cs60\fs20 sritis\par \pard \plain \s15\ql\li0\fi40\ri0\sb0\sa0\sl-240\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Sprendim\f0\cchs186 \'f8 \f0\cchs186 pri\f0\cchs186 \'eb\f0\cchs186 mimo\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-248\slmult0\tlul\tx2736 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Paai\f0\cchs186 \'f0\f0\cchs186 kinimas {\charscalex100\expndtw0\tab }Ll\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-248\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Geb\f0\cchs186 \'eb\f0\cchs186 jimas rasti alternatyvas, \cs55\fs22 l.,\par \pard \plain \s15\ql\li32\fi-32\ri0\sb0\sa0\sl-248\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 jas \f0\cchs186 \'e1\f0\cchs186 vertinti ir priimti tinka- \cs55\fs22 t \cs60\fs20 r m\f0\cchs186 \'e0\f0\cchs186 problemos sprendim\f0\cchs186 \'e0\f0\cchs186 . 1 \cs41\b\i\f0\cchs186\fs10 \'e1\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 J\f0\cchs186 \'fe\f0\cchs186 duo\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 pavyzd\f0\cchs186 \'fe\f0\cchs186 iai Nurodykite \cs60\fs20 savo \cs55\fs22 m\f0\cchs186 \'eb\f0\cchs186 giamiausi\f0\cchs186 \'e0\f0\cchs186 \cs60\fs20 I\par \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 a\f0\cchs186 \'f0\f0\cchs186 y toj\f0\cchs186 \'e0\f0\cchs186 , ai\f0\cchs186 \'f0\f0\cchs186 kiai pagr\f0\cchs186 \'e1\f0\cchs186 sdami at- t \cs60\fs20 rumentais \cs55\fs22 savo pasirinkim\f0\cchs186 \'e0\f0\cchs186 it\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 itmetim\f0\cchs186 \'e0\f0\cchs186 ".\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Planavimo\cell \pard \plain \s15\ql\li16\fi-16\ri0\sb0\sa0\sl-248\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Geb\f0\cchs186 \'eb\f0\cchs186 jimas numatyti kelius ir b\f0\cchs186 \'fb\f0\cchs186 dus id\f0\cchs186 \'eb\f0\cchs186 jai \f0\cchs186 \'e1\f0\cchs186 gyvendinti, nustatant, koki\f0\cchs186 \'f8\f0\cchs186 reikia resur- \cs55\fs22 1 \cs60\fs20 s\f0\cchs186 \'f8\f0\cchs186 , \f0\cchs186 \'e1\'fe\f0\cchs186 velgiant, kokios gali\-mos problemos, ir numatant \f0\cchs186 \'fe\f0\cchs186 ingsnius j\f0\cchs186 \'f8\f0\cchs186 sprendimui, to\-kiu b\f0\cchs186 \'fb\f0\cchs186 du patobulinant plan\f0\cchs186 \'e0\f0\cchs186 .\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-256\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 .I\f0\cchs186 \'f0\f0\cchs186 studijav\f0\cchs186 \'e6\f0\cchs186 \cs55\fs22 mitus apie \f0\cchs186 \'f0\f0\cchs186 ik\f0\cchs186 \'f0\f0\cchs186 nos\-\cs60\fs20 parnius, \cs55\fs22 sukurkite tyrimo plan\f0\cchs186 \'e0\f0\cchs186 \cs62\fs18 1\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-256\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 savo draug\f0\cchs186 \'f8\f0\cchs186 \cs55\fs22 nuomonei \cs60\fs20 apie \f0\cchs186 \'f0\f0\cchs186 iuos gyv\f0\cchs186 \'fb\f0\cchs186 nus i\f0\cchs186 \'f0\f0\cchs186 tirti\super 41\nosupersub , \f0\cchs186 \'84\f0\cchs186 Sukurkite akcijos prie\f0\cchs186 \'f0\f0\cchs186 \cs55\fs22 r\f0\cchs186 \'fb\f0\cchs186 kym\f0\cchs186 \'e0\f0\cchs186 \cs62\fs18 1 \cs60\fs20 plan\f0\cchs186 \'e0\f0\cchs186 ".\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\br\cchs186 \'f0\f0\cchs186 ius.\cell \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'84\f0\cchs186 I\f0\cchs186 \'f0\f0\cchs186 studijuokite N sutart\f0\cchs186 \'e1\f0\cchs186 ir nurodykite \f0\cchs186 \'e1\f0\cchs186 vairias galimas jos i ratifikavimo pasekmes".\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Komunikavimo\cell \pard \plain \s15\ql\li0\fi16\ri0\sb0\sa0\sl-256\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Geb\f0\cchs186 \'eb\f0\cchs186 jimas reik\f0\cchs186 \'f0\f0\cchs186 ti savo id\f0\cchs186 \'eb\f0\cchs186 jas, jausmus, poreikius ir suprasti kitus, vartojant verbalin\f0\cchs186 \'e6\f0\cchs186 ir neverbalin\f0\cchs186 \'e6\f0\cchs186 kalb\f0\cchs186 \'e0\f0\cchs186 .\cell \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'84\f0\cchs186 Pademonstruokite savo jaus- \cs55\fs22 1 \cs60\fs20 mus, kai su\f0\cchs186 \'fe\f0\cchs186 inote apie ... \f0\cchs186 \'84\f0\cchs186 Papasakokite apie \f0\cchs186 \'e1\f0\cchs186 vyk\f0\cchs186 \'e1\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 vaiko i ir i\f0\cchs186 \'f0\f0\cchs186 suaugusiojo pozicini". i\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Plan\f0\cchs186 \'f8\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'e1\f0\cchs186 gyvendinimo\cell \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Geb\f0\cchs186 \'eb\f0\cchs186 jimas \f0\cchs186 \'e1\f0\cchs186 gyvendinti plan\f0\cchs186 \'e0\cell \pard \plain \s16\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs43\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw200\dn0\f0\cchs186\lang1063\langfe1063\fs10 \'97\f0\cchs186 \f0\cchs186 \'97\f0\cchs186 \f1\cchs186 \u9632\'3f\f0\cchs186 - \f0\cchs186 \'97\'97\f0\cchs186 \expndtw0 *-\expndtw200 \expndtw0 L-\expndtw200 \expndtw0 -\expndtw200 \cs42\b0\expndtw0\f3\cchs186\fs8 i \f4\cchs186 \u9632\'3f\f3\cchs186 \f4\cchs186 \u9632\'3f\f3\cchs186 \cs41\b\i\f0\cchs186\fs10 a \cs40\b0\i0\scaps\f6\cchs186\fs8 - ii \f7\cchs186 \u9632\'3f\f6\cchs186 \cs62\scaps0\f0\cchs186\fs18 1\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'84\f0\cchs186 Sukurkite ir \f0\cchs186 \'e1\f0\cchs186 gyvendinkite N 1 renginio plan\f0\cchs186 \'e0\f0\cchs186 ".\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Prognozavimo\cell \pard \plain \s15\ql\li0\fi8\ri0\sb0\sa0\sl-248\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Geb\f0\cchs186 \'eb\f0\cchs186 jimas numatyti ir pati\-krinti prie\f0\cchs186 \'fe\f0\cchs186 asties ir pasekm\f0\cchs186 \'eb\f0\cchs186 s s\f0\cchs186 \'e0\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 ius.\cell \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\sl-264\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'84\f0\cchs186 I\f0\cchs186 \'f0\f0\cchs186 studijuokite N sutart\f0\cchs186 \'e1\f0\cchs186 ir nurodykite \f0\cchs186 \'e1\f0\cchs186 vairias galimas jos i ratifikavimo pasekmes".\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1848 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx4792 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8376 \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Komunikavimo\cell \pard \plain \s15\ql\li0\fi16\ri0\sb0\sa0\sl-256\slmult0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Taylor siekia ugdyti kuo daugiau gabum\f0\cchs186 \'f8\f0\cchs186 , kuriais, jo manymu, pasi\f0\cchs186 \'fe\f0\cchs186 ymi vaikai. Tad kuo \f0\cchs186 \'e1\f0\cchs186 vairesniems vaik\f0\cchs186 \'f8\f0\cchs186 gabumams mokytojas skirs d\f0\cchs186 \'eb\f0\cchs186 mes\f0\cchs186 \'e1\f0\cchs186 , tuo daugiau galimybi\f0\cchs186 \'f8\f0\cchs186 , kad vaikas ras srit\f0\cchs186 \'e1\f0\cchs186 , kurios \f0\cchs186 \'fe\f0\cchs186 inovu jis gali tapti. Ta\f0\cchs186 \'e8\f0\cchs186 iau pir\-masis \f0\cchs186 \'f0\f0\cchs186 io modelio etapas - tai vis d\f0\cchs186 \'eb\f0\cchs186 lto akademini\f0\cchs186 \'f8\f0\cchs186 gabum\f0\cchs186 \'f8\f0\cchs186 ugdymas. Kitas \f0\cchs186 \'fe\f0\cchs186 ingsnis, skirtas mokytojui apsispr\f0\cchs186 \'e6\f0\cchs186 sti, kuri\f0\cchs186 \'e0\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 likusi\f0\cchs186 \'f8\f0\cchs186 a\f0\cchs186 \'f0\f0\cchs186 tuoni\f0\cchs186 \'f8\f0\cchs186 gabum\f0\cchs186 \'f8\f0\cchs186 sri\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'f8 \f0\cchs186 jis imasi ugdyti. Paprastai seka, anot autoriaus, tur\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 b\f0\cchs186 \'fb\f0\cchs186 ti tokia: produktyvusis m\f0\cchs186 \'e0\f0\cchs186 stymas, planavimas, sprendim\f0\cchs186 \'f8\f0\cchs186 pri\f0\cchs186 \'eb\f0\cchs186 mimas, pian\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 gyvendinimas, \f0\cchs186 \'e1\'fe\f0\cchs186 valgos. Akivaizdu, jog dirbti pagal \f0\cchs186 \'f0\'e1\f0\cchs186 model\f0\cchs186 \'e1\f0\cchs186 mokytojas tur\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 b\f0\cchs186 \'fb\f0\cchs186 ti specialiai pasi\-reng\f0\cchs186 \'e6\f0\cchs186 s, tad modelio autorius si\f0\cchs186 \'fb\f0\cchs186 lo kelet\f0\cchs186 \'e0\f0\cchs186 mokytojo darbo metod\f0\cchs186 \'f8\f0\cchs186 . Pirmuouiu atveju si\f0\cchs186 \'fb\f0\cchs186 loma papildom\f0\cchs186 \'f8\f0\cchs186 gabum\f0\cchs186 \'f8\f0\cchs186 ugdym\f0\cchs186 \'e0\f0\cchs186 organizuoti baigiantis pamokoms. \f0\cchs186 \'c1\f0\cchs186 prastinis mokymo turinys \f0\cchs186 \'84\f0\cchs186 suspaud\f0\cchs186 \'fe\f0\cchs186 iamas" laike, o atsiradusias 5\f0\cchs186 \'97\f0\cchs186 10 laisvuj minu\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 mokytojas gali i\f0\cchs186 \'f0\f0\cchs186 naudoti pasirinkto gabumo ugdymui. Kai \cs48\b\fs20 mokytojui \cs44\b0\fs22 atrodo, kad jau pasiekta tam tikra pa\f0\cchs186 \'fe\f0\cchs186 anga ugdant pirm\f0\cchs186 \'e0\f0\cchs186 j\f0\cchs186 \'e1\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 o pasirinkt\f0\cchs186 \'f8\f0\cchs186 ga\-\par \sect\sectd \sbkpage\pgwsxn20855\pghsxn13316\marglsxn1080\margrsxn8026\margtsxn360\margbsxn360\cols2\colno1\colw7936\colsr2482\colno2\colw1329 {\header \pard \plain \s11\ql\li0\fi0\ri-7657\sb0\sa0\tx2245 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 \'e1\f0\cchs186 Ma\ul b\f0\cchs186 \'fb\f0\cchs186 s vaikai:\ul0 {\charscalex100\expndtw0\tab }\ul ir galimyb\f0\cchs186 \'eb\f0\cchs186 s\par }{\footer \par \plain \s11\qj\li0\fi0\ri0\sb0\sa0 \pvpara\phcol\posnegx-720\posnegy0\absw0\absh-254\nowrap\dfrmtxtx34\dfrmtxty0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 {\field{\*\fldinst{PAGE}}{\fldrslt 100}}\par \pard \plain \s21\qr\li0\fi0\ri-7657{\sl-240\slmult0\fs20\par }\sb90\sa0 \cs61\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs12 101\par }{\shp {\*\shpinst \shpleft13358\shptop593\shpright14748\shpbottom830\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz1\shplid1{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 317500}}{\sp{\sn dyWrapDistBottom}{\sv 198755}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s31\qj\li0\fi0\ri0\sb0\sa0 \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Rai\f0\cchs186 \'f0\f0\cchs186 kos \cs51\b0 b\f0\cchs186 \'fb\f0\cchs186 dai\par }}}{\shp {\*\shpinst \shpleft11859\shptop534\shpright13172\shpbottom2169\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz0\shplid0{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 279400}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s11\qj\li0\fi0\ri0\sb0\sa0\sl-254\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Strukt\f0\cchs186 \'fb\f0\cchs186 rinis elementas\par \pard \plain \s13\ql\li0\fi0\ri0\sb17\sa0\sl-271\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Ugdytojo ir ugdytini\f0\cchs186 \'f8 \f0\cchs186 s\f0\cchs186 \'e0\f0\cchs186 veika, ko\-munikacija\par }}}{\shp {\*\shpinst \shpleft13350\shptop1144\shpright17594\shpbottom2296\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz2\shplid2{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 139700}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s12\qj\li0\fi0\ri0\sb0\sa0\sl-271\slmult0 \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Informacijos srautai \f0\cchs186 \'97\f0\cchs186 \cs48\b Asmenvb\f0\cchs186 \'eb\f0\cchs186 s tobuli* tiesioginiai ir \cs60\b0 gr\f0\cchs186 \'e1\'fe\f0\cchs186 tamieji, ir s\f0\cchs186 \'e0\f0\cchs186 lyg\f0\cchs186 \'f8\f0\cchs186 \cs48\b tobulintai pedagogin\f0\cchs186 \'eb\f0\cchs186 \cs60\b0 sistema sudarymas: \cs48\b\f0\cchs186 \'fb\f0\cchs186 ssionj\par \pard \plain \s33\ql\li2499\fi0\ri0\sb93\sa0 \cs51\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 - b. \cs60 y\super 1\nosupersub "\super 0\nosupersub \cs51 HBB\par }}}{\shp {\*\shpinst \shpleft13299\shptop2228\shpright14205\shpbottom2474\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz4\shplid4{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 0}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s11\qj\li0\fi0\ri0\sb0\sa0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Saviugda\par }}}{\shp {\*\shpinst \shpleft15874\shptop2279\shpright17187\shpbottom2524\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz5\shplid5{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 0}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s12\qj\li0\fi0\ri0\sb0\sa0 \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Tobulinimasis\par }}}{\shp {\*\shpinst \shpleft11867\shptop2152\shpright13078\shpbottom2812\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz3\shplid3{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 640080}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s11\qj\li0\fi0\ri0\sb0\sa0\sl-280\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Individo as\-menyb\f0\cchs186 \'eb\par }}}{\shpgrp{\*\shpinst \shpleft-720\shptop3939\shpright7878\shpbottom12384\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz6\shplid6{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 0%n%nsp%nn% dyWrapDistBottom}{\sv 0}}{\sp{\sn groupLeft}{\sv 1067}}{\sp{\sn groupTop}{\sv 6209}}{\sp{\sn groupRight}{\sv 9665}}{\sp{\sn groupBottom}{\sv 14654}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 1067}}{\sp{\sn relTop}{\sv 6429}}{\sp{\sn relRight}{\sv 9665}}{\sp{\sn relBottom}{\sv 14654}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1889 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx3354 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx5836 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8597 \pard \plain \s19\ql\li474\fi0\ri0\sb0\sa0\sl-271\slmult0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1 \cs48\b\fs20 Ugdymo \cs49\b0\fs22 res \cs46\scaps\fs20 f\cs48\b\scaps0 lyb\f0\cchs186 \'eb\f0\cchs186 s lygmu\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-280\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 i- \cs49\b0\fs22 Strukt\f0\cchs186 \'fb\f0\cchs186 rini \cs48\b\fs20 o elementas\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 s Rai\f0\cchs186 \'f0\f0\cchs186 kos b\f0\cchs186 \'fb\f0\cchs186 dai\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Funkcijos\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1889 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx3354 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx5836 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8597 \pard \plain \s19\ql\li440\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 j \cs48\b\fs20 Valstybinis\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-280\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Valstyb\f0\cchs186 \'eb\f0\cchs186 s politika\cell \pard \plain \s19\ql\li0\fi8\ri0\sb0\sa0\sl-280\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 \'d0\f0\cchs186 vietimo politika ir j\f0\cchs186 \'e0 \f0\cchs186 atspindintys \f0\cchs186 \'e1\f0\cchs186 statymai\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-288\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Teisinis reguliavimas, u\f0\cchs186 \'fe\f0\cchs186 tikrinantis kiekvie\-nam vaikui (vadinasi, ir gabiam) teis\f0\cchs186 \'e6\f0\cchs186 gauti jo poreikius ir galimybes atitinkant\f0\cchs186 \'e1\f0\cchs186 ugdym\f0\cchs186 \'e0\f0\cchs186 ir ug\-dymosi s\f0\cchs186 \'e0\f0\cchs186 lygas\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1889 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx3354 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx5836 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8597 \pard \plain \s19\ql\li390\fi0\ri0\sb0\sa0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Visuomeninis\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-280\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Visuomen\f0\cchs186 \'eb\f0\cchs186 s institutai\cell \pard \plain \s19\ql\li0\fi68\ri0\sb0\sa0\sl-288\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Vyriausybines insti\-tucijos/ visuomenini\f0\cchs186 \'f8 \f0\cchs186 organizacij\f0\cchs186 \'f8\f0\cchs186 /paramos fond\f0\cchs186 \'f8\f0\cchs186 /auk\f0\cchs186 \'f0\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 moky\-kl\f0\cchs186 \'f8\f0\cchs186 /mokslo institucij\f0\cchs186 \'f8 \cs39\b0\i\f0\cchs186\fs22 tikslin\f0\cchs186 \'eb\f0\cchs186 \cs48\i0\b\fs20 veikla\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-296\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Veiklos inicijavimas; koordinavimas, organi\-zavimas, informacijos kaupimas, analiz\f0\cchs186 \'eb\f0\cchs186 ir sklai\-da; gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 paie\f0\cchs186 \'f0\f0\cchs186 kos programos, identifikavi\-mas, globa; mokytoj\f0\cchs186 \'f8\f0\cchs186 ir kit\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'f0\f0\cchs186 vietimo darbuotoj\f0\cchs186 \'f8 \f0\cchs186 rengi mas;ugdymo t\f0\cchs186 \'e6\f0\cchs186 sti\-numo u\f0\cchs186 \'fe\f0\cchs186 tikrinimas; kt.\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx1889 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx3354 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx5836 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8597 \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 1 Institucinis\par \pard \plain \s25\ql\li0\fi0\ri0\sb0\sa0\sl-983\slmult0 \intbl \cs47\b0\i0\strike0\nosupersub\scaps0\charscalex20\expndtw0\dn19\f0\cchs186\lang1063\langfe1063\fs104 1\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-305\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Ugdymo nstituci\f0\cchs186 \'e1\f0\cchs186 os\par \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-305\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 i \cs49\b0\fs22 1 \cs48\b\fs20 i\par \pard \plain \s26\ql\li0\fi0\ri0\sb0\sa0\sl-381\slmult0 \intbl \cs50\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn5\f0\cchs186\lang1063\langfe1063\fs38 !\cell \pard \plain \s19\ql\li25\fi-25\ri0\sb0\sa0\sl-296\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo modelis institucijos lygmeniu \f0\cchs186 \'97\f0\cchs186 mokyklos, papildomojo ugdymo mokyklos, technin\f0\cchs186 \'eb\f0\cchs186 s \{\f0\cchs186 \'fb\f0\cchs186 rybos namai, klas\f0\cchs186 \'eb\f0\cchs186 s, tovyklos, kursai, kon\-kursai ir kt.\cell \pard \plain \s19\ql\li0\fi0\ri0\sb0\sa0\sl-305\slmult0 \intbl \cs48\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Ugdymo proceso opti\-mizavimas: optimalios ugdymo(si) aplinkos sudarymas, ugdymas, mo\-kymas, veiklos rezultat\f0\cchs186 \'f8 \f0\cchs186 vertinimas, mokymo dife\-rencijavimas ir kt.\cell \pard\intbl\row \pard}}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 3371}}{\sp{\sn relTop}{\sv 6209}}{\sp{\sn relRight}{\sv 7988}}{\sp{\sn relBottom}{\sv 6497}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s18\qj\li0\fi0\ri0\sb0\sa0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Gabi\f0\cchs186 \'f8\f0\cchs186 \cs49 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo ir jo s\f0\cchs186 \'e0\f0\cchs186 lyg\f0\cchs186 \'f8\f0\cchs186 modelis\par }}}}}\pard \plain \s14\qr\li0\fi0\ri0\sb0\sa0\sl-305\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 m\f0\cchs186 \'e0\f0\cchs186 gali apib\f0\cchs186 \'fb\f0\cchs186 dinti asmenyb\f0\cchs186 \'eb\f0\cchs186 s saviugda, iritrapersonaliniame lygmenyje \f0\cchs186 \'e1\f0\cchs186 gyjanti gryn\f0\cchs186 \'e0\f0\cchs186 rai\f0\cchs186 \'f0\f0\cchs186 k\f0\cchs186 \'e0\f0\cchs186 . \cs45\b\expndtw-10 II \cs55\b0\expndtw0 esm\f0\cchs186 \'eb\f0\cchs186 s \cs53\i\expndtw-10 vis\f0\cchs186 \'f8\f0\cchs186 \cs55\i0\expndtw0 anks\f0\cchs186 \'e8\f0\cchs186 iau min\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 strukt\f0\cchs186 \'fb\f0\cchs186 rini\f0\cchs186 \'f8\f0\cchs186 element\f0\cchs186 \'f8\f0\cchs186 funkcionavi\-mo tikslas \cs49 I \cs55 prigimtini\f0\cchs186 \'f8\f0\cchs186 asmens gali\f0\cchs186 \'f8\f0\cchs186 pl\f0\cchs186 \'eb\f0\cchs186 tra ir i\f0\cchs186 \'f0\f0\cchs186 vystymas jo paties j\f0\cchs186 \'eb\f0\cchs186 gomis iki maksimalaus tam asmeniui galimo lygio. Literat\f0\cchs186 \'fb\f0\cchs186 roje (Gross, 1995; Almonaitien\f0\cchs186 \'eb\f0\cchs186 , 1997; Heller, 1999; Gagne, 2004 ir kt.) nurodoma, kad gabaus vaiko savirealizaci\-jai turi (takos jo asmenyb\f0\cchs186 \'eb\f0\cchs186 s nekognityvin\f0\cchs186 \'eb\f0\cchs186 s savyb\f0\cchs186 \'eb\f0\cchs186 s - pasiekim\f0\cchs186 \'f8\f0\cchs186 motyvacija, tei\-giamas \cs45\b\expndtw-10 sav\f0\cchs186 \'e6\f0\cchs186 s \cs55\b0\expndtw0 vertinimas, darbingumas, savikontrol\f0\cchs186 \'eb\f0\cchs186 ir kt. Yra pagrindo manyti, kad tinkamas min\f0\cchs186 \'eb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 GAVUS modelio strukt\f0\cchs186 \'fb\f0\cchs186 rini\f0\cchs186 \'f8\f0\cchs186 element\f0\cchs186 \'f8\f0\cchs186 funkcionavimas palankiai veikia gabaus vaiko asmenyb\f0\cchs186 \'e6\f0\cchs186 , taigi skatina \cs45\b\expndtw-10 j\f0\cchs186 \'e1\f0\cchs186 \cs55\b0\expndtw0 tobul\f0\cchs186 \'eb\f0\cchs186 s lygmuo\par \pard \plain \s11\qj\li0\fi0\ri0\sb42\sa0\sl-246\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Interpersona-linis\chftn{\footnote\pard \plain \s13 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 \chftn Pastaba. Interpersonalinio ir intrapersonalinio \cs48\b\fs20 lygmens \cs55\b0\fs22 elemcr\cs48\b\f0\cchs186\fs20 \'a3\f0\cchs186 E\cs52\b0\expndtw-20\fs30 ^^PK\cs48\b\expndtw0\fs20 ^niaj\par \pard \plain \s13 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 modelio elementai, kuri\f0\cchs186 \'f8\f0\cchs186 optimaliam veikimui \cs49 ir skirtas ug\strike dy\strike0 m\strike o\strike0 \cs55 s\f0\cchs186 \'e0\f0\cchs186 lyg\f0\cchs186 \'f8\f0\cchs186 \cs60\fs20 mo\-\cs55\fs22 delis\par \pard \plain \s23 \cs63\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs22 Sukurtasis \expndtw0 GAVUS\expndtw-20 modelis turi savo strukt\f0\cchs186 \'fb\f0\cchs186 r\f0\cchs186 \'e0\f0\cchs186 , funkcijas \cs53\expndtw-10 ir \cs63\expndtw0 funkcionavimo\expndtw-20 \expndtw0 aptin-\cs53\expndtw-10 k\f0\cchs186 \'e0\f0\cchs186 . \cs63\expndtw-20 Modelis turi \expndtw0 paskirti\expndtw-20 bendr\f0\cchs186 \'e0\f0\cchs186 tiksl\f0\cchs186 \'e0\f0\cchs186 \f0\cchs186 \'97\f0\cchs186 \cs49\i0\expndtw0 sudaryti s\f0\cchs186 \'e0\f0\cchs186 lygas gdym\f0\cchs186 \'e0\f0\cchs186 ir galimybes saviugdai, pad\f0\cchs186 \'eb\f0\cchs186 ti jam ir skatinti vaik\f0\cchs186 \'e0\f0\cchs186 siekti pilno savojo gabum\f0\cchs186 \'f8\f0\cchs186 po\-tencialo realizavimo ir b\f0\cchs186 \'fb\f0\cchs186 ti naudingam visuomenei, Sis tikslas suteikia modeliui vienov\f0\cchs186 \'eb\f0\cchs186 s, vientisumo.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Kiekvienas strukt\f0\cchs186 \'fb\f0\cchs186 rinis elementas turi ir papildom\f0\cchs186 \'f8\f0\cchs186 (i\f0\cchs186 \'f0\f0\cchs186 vestini\f0\cchs186 \'f8\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 ben\-drojo) tiksl\f0\cchs186 \'f8\f0\cchs186 , kurie susij\f0\cchs186 \'e6\f0\cchs186 su funkcijomis, kurias atlieka strukt\f0\cchs186 \'fb\f0\cchs186 rinis elementas. Modelis skirtas \f0\cchs186 \'fe\f0\cchs186 mogui, jame vyksta informacijos perdavimo ir valdymo pro\-cesai \f0\cchs186 \'97\f0\cchs186 tai b\f0\cchs186 \'fb\f0\cchs186 dinga visuomenin\f0\cchs186 \'eb\f0\cchs186 ms sistemoms.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelis sudarytas i\f0\cchs186 \'f0\f0\cchs186 posistemi\f0\cchs186 \'f8\f0\cchs186 (pavyzd\f0\cchs186 \'fe\f0\cchs186 iui, GVU atskiroje ugdymo institucijoje, jo posistem\f0\cchs186 \'eb\f0\cchs186 - pedagogin\f0\cchs186 \'eb\f0\cchs186 sistema, ir kt.). Visi GAVUS elementai yra vienaip ar kitaip susij\f0\cchs186 \'e6\f0\cchs186 su ugdymu ir jo funkcijomis: \f0\cchs186 \'f0\f0\cchs186 vietimu, lavinimu, aukl\f0\cchs186 \'eb\f0\cchs186 jimu, mokymu, globojimu, formavimu ir kt. Kiekviena jo sud\f0\cchs186 \'eb\f0\cchs186 tin\f0\cchs186 \'eb\f0\cchs186 dalis atlieka tam tikr\f0\cchs186 \'e0\f0\cchs186 funkcij\f0\cchs186 \'e0\f0\cchs186 (jas nurod\f0\cchs186 \'eb\f0\cchs186 me aptardami model\f0\cchs186 \'e1\f0\cchs186 ). Tuomet, kai mo\-delio strukt\f0\cchs186 \'fb\f0\cchs186 riniai elementai funkcionuoja visuose ugdymo realyb\f0\cchs186 \'eb\f0\cchs186 s lygmeny\-se, jis apima daugel\f0\cchs186 \'e1\f0\cchs186 aplinkos veiksni\f0\cchs186 \'f8\f0\cchs186 , kurie yra gabumo virsmo pasiekimais katalizatoriai. Funkciniais ry\f0\cchs186 \'f0\f0\cchs186 iais susij\f0\cchs186 \'e6\f0\cchs186 elementai sukuria palaikan\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'e0\f0\cchs186 aplink\f0\cchs186 \'e0 \f0\cchs186 vienas kito veikimui, o tai savo ruo\f0\cchs186 \'fe\f0\cchs186 tu suma\f0\cchs186 \'fe\f0\cchs186 ina atsitiktinum\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 tak\f0\cchs186 \'e0\f0\cchs186 tiesiogi\-\cs44 niam \cs49 ugdymui, t.y. skatina gabaus vaiko saviugd\f0\cchs186 \'e0\f0\cchs186 .\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelio artimiausioji funkcionavimo aplinka yra \f0\cchs186 \'f0\f0\cchs186 vietimo sistema.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelis yra atviras ir dinami\f0\cchs186 \'f0\f0\cchs186 kas. Atviras, nes tai yra socialin\f0\cchs186 \'eb\f0\cchs186 strukt\f0\cchs186 \'fb\f0\cchs186 ra, kuriai \f0\cchs186 \'e1\f0\cchs186 tak\f0\cchs186 \'e0\f0\cchs186 daro aplinka (netgi jo veikimo realyb\f0\cchs186 \'eb\f0\cchs186 je prasme). Modelio struk\-t\f0\cchs186 \'fb\f0\cchs186 riniai elementai turi daug vidini\f0\cchs186 \'f8\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 , o jie savo ruo\f0\cchs186 \'fe\f0\cchs186 tu yra atviri aplinkai, kitoms, i\f0\cchs186 \'f0\f0\cchs186 orin\f0\cchs186 \'eb\f0\cchs186 ms socialin\f0\cchs186 \'eb\f0\cchs186 ms strukt\f0\cchs186 \'fb\f0\cchs186 roms, sistemoms, yra dinami\f0\cchs186 \'f0\f0\cchs186 ki, nes i\f0\cchs186 \'f0\f0\cchs186 likti stati\f0\cchs186 \'f0\f0\cchs186 kam, kai kinta aplinka, n\f0\cchs186 \'eb\f0\cchs186 ra \f0\cchs186 \'e1\f0\cchs186 manoma. Dinami\f0\cchs186 \'f0\f0\cchs186 kas jis ir d\f0\cchs186 \'eb\f0\cchs186 l k\f0\cchs186 \'ab\'a9\f0\cchs186 $}\par \pard \plain \s11\qj\li0\fi0\ri0{\sl-240\slmult0\fs20\par }{\sl-240\slmult0\fs20\par }\sb121\sa0\sl-263\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Intrapersona-linis\chftn{\footnote\pard \plain \s13 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 \chftn Pastaba. Interpersonalinio ir intrapersonalinio \cs48\b\fs20 lygmens \cs55\b0\fs22 elemcr\cs48\b\f0\cchs186\fs20 \'a3\f0\cchs186 E\cs52\b0\expndtw-20\fs30 ^^PK\cs48\b\expndtw0\fs20 ^niaj\par \pard \plain \s13 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 modelio elementai, kuri\f0\cchs186 \'f8\f0\cchs186 optimaliam veikimui \cs49 ir skirtas ug\strike dy\strike0 m\strike o\strike0 \cs55 s\f0\cchs186 \'e0\f0\cchs186 lyg\f0\cchs186 \'f8\f0\cchs186 \cs60\fs20 mo\-\cs55\fs22 delis\par \pard \plain \s23 \cs63\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs22 Sukurtasis \expndtw0 GAVUS\expndtw-20 modelis turi savo strukt\f0\cchs186 \'fb\f0\cchs186 r\f0\cchs186 \'e0\f0\cchs186 , funkcijas \cs53\expndtw-10 ir \cs63\expndtw0 funkcionavimo\expndtw-20 \expndtw0 aptin-\cs53\expndtw-10 k\f0\cchs186 \'e0\f0\cchs186 . \cs63\expndtw-20 Modelis turi \expndtw0 paskirti\expndtw-20 bendr\f0\cchs186 \'e0\f0\cchs186 tiksl\f0\cchs186 \'e0\f0\cchs186 \f0\cchs186 \'97\f0\cchs186 \cs49\i0\expndtw0 sudaryti s\f0\cchs186 \'e0\f0\cchs186 lygas gabiems valkams, nepriklausomai nuo j\f0\cchs186 \'f8\f0\cchs186 socialin\f0\cchs186 \'eb\f0\cchs186 s pad\f0\cchs186 \'eb\f0\cchs186 ties, gyvenamosios vietos, am\-\f0\cchs186 \'fe\f0\cchs186 iaus, lyties ir kt., rinktis j\f0\cchs186 \'f8\f0\cchs186 poreikius atitinkanti ugdym\f0\cchs186 \'e0\f0\cchs186 ir galimybes saviugdai, pad\f0\cchs186 \'eb\f0\cchs186 ti jam ir skatinti vaik\f0\cchs186 \'e0\f0\cchs186 siekti pilno savojo gabum\f0\cchs186 \'f8\f0\cchs186 po\-tencialo realizavimo ir b\f0\cchs186 \'fb\f0\cchs186 ti naudingam visuomenei, Sis tikslas suteikia modeliui vienov\f0\cchs186 \'eb\f0\cchs186 s, vientisumo.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Kiekvienas strukt\f0\cchs186 \'fb\f0\cchs186 rinis elementas turi ir papildom\f0\cchs186 \'f8\f0\cchs186 (i\f0\cchs186 \'f0\f0\cchs186 vestini\f0\cchs186 \'f8\f0\cchs186 i\f0\cchs186 \'f0\f0\cchs186 ben\-drojo) tiksl\f0\cchs186 \'f8\f0\cchs186 , kurie susij\f0\cchs186 \'e6\f0\cchs186 su funkcijomis, kurias atlieka strukt\f0\cchs186 \'fb\f0\cchs186 rinis elementas. Modelis skirtas \f0\cchs186 \'fe\f0\cchs186 mogui, jame vyksta informacijos perdavimo ir valdymo pro\-cesai \f0\cchs186 \'97\f0\cchs186 tai b\f0\cchs186 \'fb\f0\cchs186 dinga visuomenin\f0\cchs186 \'eb\f0\cchs186 ms sistemoms.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelis sudarytas i\f0\cchs186 \'f0\f0\cchs186 posistemi\f0\cchs186 \'f8\f0\cchs186 (pavyzd\f0\cchs186 \'fe\f0\cchs186 iui, GVU atskiroje ugdymo institucijoje, jo posistem\f0\cchs186 \'eb\f0\cchs186 - pedagogin\f0\cchs186 \'eb\f0\cchs186 sistema, ir kt.). Visi GAVUS elementai yra vienaip ar kitaip susij\f0\cchs186 \'e6\f0\cchs186 su ugdymu ir jo funkcijomis: \f0\cchs186 \'f0\f0\cchs186 vietimu, lavinimu, aukl\f0\cchs186 \'eb\f0\cchs186 jimu, mokymu, globojimu, formavimu ir kt. Kiekviena jo sud\f0\cchs186 \'eb\f0\cchs186 tin\f0\cchs186 \'eb\f0\cchs186 dalis atlieka tam tikr\f0\cchs186 \'e0\f0\cchs186 funkcij\f0\cchs186 \'e0\f0\cchs186 (jas nurod\f0\cchs186 \'eb\f0\cchs186 me aptardami model\f0\cchs186 \'e1\f0\cchs186 ). Tuomet, kai mo\-delio strukt\f0\cchs186 \'fb\f0\cchs186 riniai elementai funkcionuoja visuose ugdymo realyb\f0\cchs186 \'eb\f0\cchs186 s lygmeny\-se, jis apima daugel\f0\cchs186 \'e1\f0\cchs186 aplinkos veiksni\f0\cchs186 \'f8\f0\cchs186 , kurie yra gabumo virsmo pasiekimais katalizatoriai. Funkciniais ry\f0\cchs186 \'f0\f0\cchs186 iais susij\f0\cchs186 \'e6\f0\cchs186 elementai sukuria palaikan\f0\cchs186 \'e8\f0\cchs186 i\f0\cchs186 \'e0\f0\cchs186 aplink\f0\cchs186 \'e0 \f0\cchs186 vienas kito veikimui, o tai savo ruo\f0\cchs186 \'fe\f0\cchs186 tu suma\f0\cchs186 \'fe\f0\cchs186 ina atsitiktinum\f0\cchs186 \'f8\f0\cchs186 \f0\cchs186 \'e1\f0\cchs186 tak\f0\cchs186 \'e0\f0\cchs186 tiesiogi\-\cs44 niam \cs49 ugdymui, t.y. skatina gabaus vaiko saviugd\f0\cchs186 \'e0\f0\cchs186 .\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelio artimiausioji funkcionavimo aplinka yra \f0\cchs186 \'f0\f0\cchs186 vietimo sistema.\par \pard \plain \s23 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Modelis yra atviras ir dinami\f0\cchs186 \'f0\f0\cchs186 kas. Atviras, nes tai yra socialin\f0\cchs186 \'eb\f0\cchs186 strukt\f0\cchs186 \'fb\f0\cchs186 ra, kuriai \f0\cchs186 \'e1\f0\cchs186 tak\f0\cchs186 \'e0\f0\cchs186 daro aplinka (netgi jo veikimo realyb\f0\cchs186 \'eb\f0\cchs186 je prasme). Modelio struk\-t\f0\cchs186 \'fb\f0\cchs186 riniai elementai turi daug vidini\f0\cchs186 \'f8\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 i\f0\cchs186 \'f8\f0\cchs186 , o jie savo ruo\f0\cchs186 \'fe\f0\cchs186 tu yra atviri aplinkai, kitoms, i\f0\cchs186 \'f0\f0\cchs186 orin\f0\cchs186 \'eb\f0\cchs186 ms socialin\f0\cchs186 \'eb\f0\cchs186 ms strukt\f0\cchs186 \'fb\f0\cchs186 roms, sistemoms, yra dinami\f0\cchs186 \'f0\f0\cchs186 ki, nes i\f0\cchs186 \'f0\f0\cchs186 likti stati\f0\cchs186 \'f0\f0\cchs186 kam, kai kinta aplinka, n\f0\cchs186 \'eb\f0\cchs186 ra \f0\cchs186 \'e1\f0\cchs186 manoma. Dinami\f0\cchs186 \'f0\f0\cchs186 kas jis ir d\f0\cchs186 \'eb\f0\cchs186 l k\f0\cchs186 \'ab\'a9\f0\cchs186 $}\par \sect\sectd \sbknone\pgwsxn20126\pghsxn13892\marglsxn733\margrsxn360\margtsxn360\margbsxn360\cols1\colsx60 {\header }{\footer \pard \plain \s27\qr\li0\fi0\ri0\sb0\sa0 \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 {\field{\*\fldinst{PAGE}}{\fldrslt 123}}\par }{\pard\plain \sb1144\sa0\sl-240\slmult0\fs20\par}\pard \plain \s29\qj\li11181\fi0\ri0\sb51\sa102 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 4. \cs55 Gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ufidymo ir jo s\f0\cchs186 \'e0\f0\cchs186 lyg\f0\cchs186 \'f8\f0\cchs186 mo\ul delio rai\f0\cchs186 \'f0\f0\cchs186 kos\ul0 \cs45\b\expndtw-10\f0\cchs186 \'c1\f0\cchs186 \cs55\b0\ul\expndtw0 jetuvo\f0\cchs186 \'e1\f0\cchs186 e \cs60\fs20 pristatymas\par \sect\sectd \sbknone\pgwsxn20126\pghsxn13892\marglsxn733\margrsxn453\margtsxn360\margbsxn360\cols2\colno1\colw8123\colsr2431\colno2\colw8385 {\shpgrp{\*\shpinst \shpleft10622\shptop263\shpright18737\shpbottom1966\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr1\shpz7\shplid7{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 107315}}{\sp{\sn dyWrapDistBottom}{\sv 48260}}{\sp{\sn groupLeft}{\sv 12045}}{\sp{\sn groupTop}{\sv 2846}}{\sp{\sn groupRight}{\sv 20160}}{\sp{\sn groupBottom}{\sv 4549}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 12045}}{\sp{\sn relTop}{\sv 2922}}{\sp{\sn relRight}{\sv 20160}}{\sp{\sn relBottom}{\sv 4100}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx542 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx6666 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7378 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8115 \pard \plain \s35\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Nr.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0\sl-144\slmult0\tlhyph\tx3744\tlul\tx4574 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn2\f0\cchs186\lang1063\langfe1063\fs22 rr-ri{\charscalex100\expndtw0\tab }\cs61\fs12 _ {\charscalex100\expndtw0\tab } J \f0\cchs186 \'bb\par \pard \plain \s35\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Teiginys \f0\cchs186 \'97\cell \pard \plain \s35\qr\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 mreies\par \pard \plain \s3\qr\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Vid *\cell \pard \plain \s35\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 t\f0\cchs186 \'e6\f0\cchs186 sinys\par \pard \plain \s24\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs61\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs12 Qt \cs60\fs20 n\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx542 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx6666 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7378 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8115 \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 11.\cell \pard \plain \s35\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 Tr\f0\cchs186 \'fb\f0\cchs186 ksta mokini\f0\cchs186 \'f8\f0\cchs186 t\f0\cchs186 \'eb\f0\cchs186 v\f0\cchs186 \'f8\f0\cchs186 palaikymo, pritarimo\cell \pard \plain \s5\qr\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 00\cs49\fs22 .24\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.21\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx542 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx6666 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7378 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8115 \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 12.\cell \pard \plain \s35\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 [Tr\f0\cchs186 \'fb\f0\cchs186 ksta mokyklos administracijos paskatinimo ir \cs57\expndtw10\fs16 nri\cs58\expndtw0\fs20 -^mn\par \pard \plain \s15\ql\li0\fi0\ri0\sb0\sa0\tlhyph\tx5472\tlhyph\tx6107 \intbl \cs58\i0\strike0\nosupersub\b\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 maksimalus \cs60\b0 galimas trukume .v\cs57\b\expndtw10\fs16 .-rr.\cs59\i\expndtw-10\f9\cchs186\fs22 ^-ETrr\cs60\b0\i0\expndtw0\f0\cchs186\fs20 {\charscalex100\expndtw0\tab }rr{\charscalex100\expndtw0\tab }1\cell \pard \plain \s5\qr\li0\fi0\ri0\sb0\sa0 \intbl \cs60\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs20 00\cs49\fs22 .41\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.22\cell \pard\intbl\row \pard}}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 18025}}{\sp{\sn relTop}{\sv 2846}}{\sp{\sn relRight}{\sv 20152}}{\sp{\sn relBottom}{\sv 3117}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s11\ql\li0\fi0\ri0\sb0\sa0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 4.2.3 lentel\f0\cchs186 \'eb\f0\cchs186 s t\f0\cchs186 \'e6\f0\cchs186 sinys\par }}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 12629}}{\sp{\sn relTop}{\sv 4074}}{\sp{\sn relRight}{\sv 20100}}{\sp{\sn relBottom}{\sv 4549}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s22\ql\li0\fi2821\ri0\sb0\sa0\sl-161\slmult0\tlhyph\tx3456\tldot\tx3812 \cs62\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs18 _ ,{\charscalex100\expndtw0\tab }{\charscalex100\expndtw0\tab }.\f0\cchs186 \'84\'ab\f0\cchs186 , , icigu \expndtw20 trukumo\expndtw0 \cs55\fs22 visi\f0\cchs186 \'f0\f0\cchs186 kai nejau\f0\cchs186 -\line \'e8\f0\cchs186 iama \f0\cchs186 \'97\f0\cchs186 vertinimas \cs49\f0\cchs186 \'84\f0\cchs186 -2".\par }}}}}{\shpgrp{\*\shpinst \shpleft-373\shptop6683\shpright8098\shpbottom12511\shpfhdr0\shpfblwtxt0\shpbxmargin\shpbypara\shpwr2\shpwrk3\shpz8\shplid8{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fAllowOverlap}{\sv 1}}{\sp{\sn dxWrapDistLeft}{\sv 21590}}{\sp{\sn dxWrapDistRight}{\sv 21590}}{\sp{\sn dyWrapDistTop}{\sv 0}}{\sp{\sn dyWrapDistBottom}{\sv 0}}{\sp{\sn groupLeft}{\sv 1050}}{\sp{\sn groupTop}{\sv 9267}}{\sp{\sn groupRight}{\sv 9521}}{\sp{\sn groupBottom}{\sv 15095}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 1050}}{\sp{\sn relTop}{\sv 10275}}{\sp{\sn relRight}{\sv 9521}}{\sp{\sn relBottom}{\sv 15095}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li246\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Nr\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Teiginys\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Vid.*\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 St. n.\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1 \super 1\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Tr\f0\cchs186 \'fb\f0\cchs186 ksta u\f0\cchs186 \'fe\f0\cchs186 mokes\f0\cchs186 \'e8\f0\cchs186 io u\f0\cchs186 \'fe\f0\cchs186 \cs56\fs18 papildom\f0\cchs186 \'e0\f0\cchs186 \cs55\fs22 darb\f0\cchs186 \'e0\f0\cchs186 ,.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.43\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.84\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 12.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Tr\f0\cchs186 \'fb\f0\cchs186 ksta materialinio paskatinimo itin gabiems mokiniams.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.35\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.87\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 13.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-288\slmult0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Tr\f0\cchs186 \'fb\f0\cchs186 ksta bendros itin gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo politikos visos i\f0\cchs186 \'f0\f0\cchs186 liet \cs52\expndtw-20\fs30 j \cs44\expndtw0\fs22 mastu.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.27\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.85\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 14.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 [Tr\f0\cchs186 \'fb\f0\cchs186 ksta apr\f0\cchs186 \'fb\f0\cchs186 pinimo reikalinga mokymo metodine med\f0\cchs186 \'fe\f0\cchs186 iaga\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.22\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.96\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 15.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-296\slmult0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Tr\f0\cchs186 \'fb\f0\cchs186 ksta kvalifikacijos k\f0\cchs186 \'eb\f0\cchs186 limo kurs\f0\cchs186 \'f8\f0\cchs186 itin gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo \cs44 tems.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1\cs49 .20\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.91\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s30\ql\li0\fi0\ri0\sb0\sa0\sl-407\slmult0 \intbl \cs52\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw-20\up2\f0\cchs186\lang1063\langfe1063\fs30 j \cs44\expndtw0\fs22 6. \cs55 j\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-313\slmult0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Tr\f0\cchs186 \'fb\f0\cchs186 ksta \cs55 bendradarbiavimo tu auk\f0\cchs186 \'f0\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 mokykl\f0\cchs186 \'f8\f0\cchs186 d\f0\cchs186 \'eb\f0\cchs186 stytojais, \cs44 mokalininkaif.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1\cs49 .04\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.99\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0\sl-313\slmult0 \intbl \cs44\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 7. \cs55 1 \cs44 Tr\f0\cchs186 \'fb\f0\cchs186 ksta literatu \expndtw-20 rot\expndtw0 \cs54\i\expndtw-20 apie itin \cs55\i0\expndtw0 gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 pa\f0\cchs186 \'fe\f0\cchs186 inim\f0\cchs186 \'e0\f0\cchs186 , ugdym\f0\cchs186 \'e0\f0\cchs186 , \cs52\expndtw-20\fs30 j \cs55\expndtw0\fs22 psichologij\f0\cchs186 \'e0\f0\cchs186 , \cs44 kir\f0\cchs186 \'f8\f0\cchs186 \cs55\f0\cchs186 \'f0\f0\cchs186 ali\f0\cchs186 \'f8\f0\cchs186 patirt j.\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1\cs49 .00\cell \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.97\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 8. \cs55 j Tr\f0\cchs186 \'fb\f0\cchs186 ksta \cs44 bendradarbiavimo \cs55 su patyrusiais \f0\cchs186 \'f0\f0\cchs186 ioje srityje kolegomis,\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.88\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.02\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s32\ql\li0\fi0\ri0\sb0\sa0\sl-356\slmult0 \intbl \cs52\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw-20\dn4\f0\cchs186\lang1063\langfe1063\fs30 1 \cs49\expndtw0\fs22 1\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 'r\f0\cchs186 \'fb\f0\cchs186 ksta \cs44 tinkamo \cs55 pasirengimo auk\f0\cchs186 \'f0\f0\cchs186 tojoje mokykloje.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 0.56\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.17\cell \pard\intbl\row \trowd\trgaph40 \trrh0 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx661 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7014 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx7751 \clvertalt\clbrdrt\brdrs\brdrw15\clbrdrl\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\cltxlrtb\cellx8471 \pard \plain \s5\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 10. 7\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 r\f0\cchs186 \'fb\f0\cchs186 ksta galimybi\f0\cchs186 \'f8\f0\cchs186 \cs44 naudotis \cs55 kompiuteriu ir internetu.\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 -0.19\cell \pard \plain \s3\ql\li0\fi0\ri0\sb0\sa0 \intbl \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 1.33\cell \pard\intbl\row \pard}}}{\shp {\*\shpinst \shplid1{\sp{\sn relLeft}{\sv 2151}}{\sp{\sn relTop}{\sv 9267}}{\sp{\sn relRight}{\sv 8724}}{\sp{\sn relBottom}{\sv 10300}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn lineColor}{\sv 16777215}}{\sp{\sn fPrint}{\sv 1}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}{\sp{\sn txflTextFlow}{\sv 0}}{\sp{\sn dxTextLeft}{\sv 0}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn fFitTextToShape}{\sv 0}}{\shptxt \pard \plain \s2\qj\li0\fi0\ri0\sb0\sa0\sl-330\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Duomenys apie tai, ko mokytojams tr\f0\cchs186 \'fb\f0\cchs186 ksta darbui su itin\par \pard \plain \s20\ql\li0\fi2406\ri0\sb0\sa0\sl-330\slmult0\tlul\tx805 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 gabiais vaikais\line \lang1033 {\charscalex100\expndtw0\tab }\ul\lang1063 (Narkevi\f0\cchs186 \'e8\f0\cchs186 ien\f0\cchs186 \'eb\f0\cchs186 , Janilionis,\ul0 Almonaitien\f0\cchs186 \'eb\f0\cchs186 , \cs49 2002)\par }}}}}\pard \plain \s11\qj\li0\fi0\ri0\sb0\sa0\sl-322\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 niams, galima manyti, kad jaunesni\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 klasi\f0\cchs186 \'f8\f0\cchs186 gabi\f0\cchs186 \'f8\f0\cchs186 mokini\f0\cchs186 \'f8\f0\cchs186 ugdymo rezulta\-tai \f0\cchs186 \'fe\f0\cchs186 inomi ir fiksuojami tik klases ir mokyklos (atskirais atvejais savivaldyb\f0\cchs186 \'eb\f0\cchs186 s) lygmeniu. be to, olimpiad\f0\cchs186 \'f8\f0\cchs186 rezultatai - tai tik pasiekimai, \cs49 o \cs55 kas daroma klas\f0\cchs186 \'eb\-\f0\cchs186 je, \cs53\i\expndtw-10 mokykloje, \cs55\i0\expndtw0 kad tie pasiekimai b\f0\cchs186 \'fb\f0\cchs186 t\f0\cchs186 \'f8\f0\cchs186 tokie, ir \cs49 ar \cs55 tie pasiekimai \f0\cchs186 \'97\f0\cchs186 tai mokytojo ir mokinio darbo rezultatas ar tik mokinio potencialo \{vertinimas, informaci\-jos taip pat neturime arba turime labai nedaug \cs49 (\f0\cchs186 \'fe\f0\cchs186 r. \cs55 Narkevi\f0\cchs186 \'e8\f0\cchs186 ien\f0\cchs186 \'eb\f0\cchs186 , \cs49 1997,1998, \cs55 2003, Narkevi\f0\cchs186 \'e8\f0\cchs186 ien\f0\cchs186 \'eb\f0\cchs186 , Janilionis, Almonaitien\f0\cchs186 \'eb\f0\cchs186 , \cs49 2002).\par \pard \plain \s2\qj\li0\fi576\ri0\sb0\sa0\sl-322\slmult0 \cs63\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs22 Mokytoj\f0\cchs186 \'f8\f0\cchs186 rengimas. \cs55\i0\expndtw0 N\f0\cchs186 \'eb\f0\cchs186 vienas Lietuvos universitetas, rengiantis mokyto\-jus, nesi\f0\cchs186 \'fb\f0\cchs186 lo pirmos ar antros pakopos studij\f0\cchs186 \'f8\f0\cchs186 programos, kurios paskirtis b\f0\cchs186 \'fb\f0\cchs186 t\f0\cchs186 \'f8 \f0\cchs186 ai\f0\cchs186 \'f0\f0\cchs186 kiai orientuota \f0\cchs186 \'e1\f0\cchs186 gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo specialisto parengim\f0\cchs186 \'e0\f0\cchs186 . Per\f0\cchs186 \'fe\f0\cchs186 i\f0\cchs186 \'fb\f0\cchs186 r\f0\cchs186 \'eb\f0\cchs186 jus mokytoj\f0\cchs186 \'f8\f0\cchs186 rengimo programas Vilniaus pedagoginiame, \f0\cchs186 \'d0\f0\cchs186 iauli\f0\cchs186 \'f8\f0\cchs186 , Kauno tech\-nologijos bei Vytauto Did\f0\cchs186 \'fe\f0\cchs186 iojo universitetuose, rasti tik du, be to, tik \cs63\i\expndtw-20 pasiren\-kamieji \cs55\i0\expndtw0 gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 problemoms skirti moduliai. Tai Vilniaus pedagoginiame universitete neakivaizdininkams \cs63\i\expndtw-20 si\f0\cchs186 \'fb\f0\cchs186 lomas \cs55\i0\expndtw0 modulis \f0\cchs186 \'84\f0\cchs186 Gabi\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 atpa\f0\cchs186 \'fe\f0\cchs186 inimas ir ugdymo galimyb\f0\cchs186 \'eb\f0\cchs186 s" bei \f0\cchs186 \'d0\f0\cchs186 iauli\f0\cchs186 \'f8\f0\cchs186 pedagoginiame universitete si\f0\cchs186 \'fb\f0\cchs186 lomas modulis \f0\cchs186 \'84\f0\cchs186 Gabi\f0\cchs186 \'f8\f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 psichologija".\par \pard \plain \s23\qj\li0\fi576\ri0\sb8\sa0\sl-322\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Lietuvos mokytojams, \cs49 tyrim\f0\cchs186 \'f8\f0\cchs186 duomenimis (Narkevi\f0\cchs186 \'e8\f0\cchs186 ien\f0\cchs186 \'eb\f0\cchs186 , \cs55 Janilionis, \cs49 Almonaitien\f0\cchs186 \'eb\f0\cchs186 , \cs55 2002), darbui su \cs49 gabiais vaikais tr\f0\cchs186 \'fb\f0\cchs186 ksta \cs55 ir tinkamo pasirengimo auk\f0\cchs186 \'f0\f0\cchs186 tojoje \cs49 mokykloje, ir kir\f0\cchs186 \'f8\f0\cchs186 \cs55 dalyk\f0\cchs186 \'f8\f0\cchs186 \cs49 (\f0\cchs186 \'fe\f0\cchs186 r. 4.2.3 lentel\f0\cchs186 \'e6\f0\cchs186 ).\par \pard \plain \s11\qr\li0\fi0\ri0{\sl-240\slmult0\fs20\p`r }\sb65\sa0 \cs49\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 4.2.3 \cs55 lentel\f0\cchs186 \'eb\par \pard \plain \s29\ql\li0\fi568\ri0\sb0\sa0\sl-322\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Lentel\f0\cchs186 \'eb\f0\cchs186 je teiginiai pateikti eil\f0\cchs186 \'eb\f0\cchs186 s tvarka pagal tr\f0\cchs186 \'fb\f0\cchs186 kumo \f0\cchs186 \'e1\f0\cchs186 vertinimo vidur\-k\f0\cchs186 \'e1\f0\cchs186 . Matome, jog labiausiai, mokytoj\f0\cchs186 \'f8\f0\cchs186 nuomone, tr\f0\cchs186 \'fb\f0\cchs186 ksta u\f0\cchs186 \'fe\f0\cchs186 mokes\f0\cchs186 \'e8\f0\cchs186 io u\f0\cchs186 \'fe\f0\cchs186 papil\-dom\f0\cchs186 \'e0\f0\cchs186 darb\f0\cchs186 \'e0\f0\cchs186 , materialinio paskatinimo gabiems vaikams ir bendros gabi\f0\cchs186 \'f8\f0\cchs186 vai\-k\f0\cchs186 \'f8\f0\cchs186 ugdymo politikos visos \f0\cchs186 \'f0\f0\cchs186 alies mastu. Su pirmu teiginiu visi\f0\cchs186 \'f0\f0\cchs186 kai sutiko \cs49 59%, \cs55 sutiko \cs49 30% \cs55 (t.y. i\f0\cchs186 \'f0\f0\cchs186 viso taip teig\f0\cchs186 \'eb\f0\cchs186 \cs49 89%) \cs55 mokytoj\f0\cchs186 \'f8\f0\cchs186 , dar \cs49 7% \cs55 renkasi neutrali\f0\cchs186 \'e0 \f0\cchs186 pozicij\f0\cchs186 \'e0\f0\cchs186 . \cs49 88% \cs55 mokytoj\f0\cchs186 \'f8\f0\cchs186 mano, jog tr\f0\cchs186 \'fb\f0\cchs186 ksta materialinio paskatinimo patiems gabiems mokiniams. \cs49 87% \cs55 respondent\f0\cchs186 \'f8\f0\cchs186 mano, kad tr\f0\cchs186 \'fb\f0\cchs186 ksta bendros itin gabi\f0\cchs186 \'f8 \f0\cchs186 vaik\f0\cchs186 \'f8\f0\cchs186 ugdymo politikos \f0\cchs186 \'d0\f0\cchs186 alies mastu; \cs49 84% \cs55 - apr\f0\cchs186 \'fb\f0\cchs186 pinimo mokymo metodi\-ne med\f0\cchs186 \'fe\f0\cchs186 iaga; \cs49 86% \cs55 - kvalifikacijos k\f0\cchs186 \'eb\f0\cchs186 limo kurs\f0\cchs186 \'f8\f0\cchs186 , \cs49 79% \cs55 - bendradarbiavimo su mokslininkais; \cs49 76% \cs55 - atitinkamos literat\f0\cchs186 \'fb\f0\cchs186 ras; \cs49 74% \cs55 - bendradarbiavimo su patyrusiais \f0\cchs186 \'f0\f0\cchs186 ioje srityje kolegomis (neutralus vertinimas - \cs49 14%). \cs55 Tinkamo pasirengimo auk\f0\cchs186 \'f0\f0\cchs186 tojoje mokykloje pasigedo \cs49 60% \cs55 apklaust\f0\cchs186 \'f8\f0\cchs186 j\f0\cchs186 \'f8\f0\cchs186 mokytoj\f0\cchs186 \'f8\f0\cchs186 , tik penktadalis \cs49 (21%) \cs55 j\f0\cchs186 \'f8\f0\cchs186 sutiko, jog auk\f0\cchs186 \'f0\f0\cchs186 toji mokykla pareng\f0\cchs186 \'eb\f0\cchs186 j\f0\cchs186 \'e1\f0\cchs186 /j\f0\cchs186 \'e0\f0\cchs186 \f0\cchs186 \'f0\f0\cchs186 iam darbui. Malonu pasteb\f0\cchs186 \'eb\f0\cchs186 ti, jog \cs49 56% \cs55 mokytoj\f0\cchs186 \'f8\f0\cchs186 darbui su itin gabiais vaikais \expndtw-20 yra\expndtw0 skatina\-mi ir palaikomi mokyklos administracijos (neutralum\f0\cchs186 \'e0\f0\cchs186 vertinant teigin\f0\cchs186 \'e1\f0\cchs186 rinko\-si \cs49 18%). \cs55 Nema\f0\cchs186 \'fe\f0\cchs186 ai mokytoj\f0\cchs186 \'f8\f0\cchs186 turi galimybi\f0\cchs186 \'f8\f0\cchs186 naudotis kompiuteriu ir internetu \cs49 (49% \cs55 nejau\f0\cchs186 \'e8\f0\cchs186 ia tr\f0\cchs186 \'fb\f0\cchs186 kumo, \cs49 16% \cs55 lieka neutral\f0\cchs186 \'fb\f0\cchs186 s, \cs49 35% \cs55 tr\f0\cchs186 \'fb\f0\cchs186 ksta tokios galimybes). \cs49 46% \cs55 mokytoj\f0\cchs186 \'f8\f0\cchs186 jau\f0\cchs186 \'e8\f0\cchs186 ia t\f0\cchs186 \'eb\f0\cchs186 v\f0\cchs186 \'f8\f0\cchs186 palaikym\f0\cchs186 \'e0\f0\cchs186 , \cs49 31% \cs55 tokio palaikymo pasigenda.\par \pard \plain \s17\ql\li0\fi0\ri0\sb0\sa0\sl-322\slmult0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 Anketoje buvo palikta vieta laisvam atsakymui, ko \cs64\b\expndtw-20\fs26 dar tr\f0\cchs186 \'fb\f0\cchs186 ksta, \cs55\b0\expndtw0\f0\cchs186\fs22 \'e1\f0\cchs186 ra\f0\cchs186 \'f0\f0\cchs186 yti. Pa\-min\f0\cchs186 \'eb\f0\cchs186 tini tokie dalykai, kuri\f0\cchs186 \'f8\f0\cchs186 mokytojai nurod\f0\cchs186 \'eb\f0\cchs186 pasigendantys (kalba netaisyta): \cs63\i\expndtw-20 d\f0\cchs186 \'eb\f0\cchs186 mesio, sistemos Siame darbe; \f0\cchs186 \'e1\f0\cchs186 d\f0\cchs186 \'eb\f0\cchs186 jimu \f0\cchs186 \'e1\f0\cchs186 J\f0\cchs186 \'e1\f0\cchs186 darini plali\f0\cchs186 \'e0\f0\cchs186 ja prasme; pa$d laikmet\f0\cchs186 \'e1 \f0\cchs186 apr\f0\cchs186 \'fb\f0\cchs186 pinto kabineto; lenko; &bi\f0\cchs186 \'f8\f0\cchs186 mokini\f0\cchs186 \'f8\f0\cchs186 su ffra mokymosi motyvacija; skiriam\f0\cchs186 \'e0 \f0\cchs186 papildomai pamoki\f0\cchs186 \'e1\f0\cchs186 mokytojai - olimpiadoms ruo\f0\cchs186 \'f0\f0\cchs186 tis; materialin\f0\cchs186 \'eb\f0\cchs186 s bas\f0\cchs186 \'e6\f0\cchs186 s, ma&u* mokint\f0\cchs186 \'e0\f0\cchs186 skaiiiaus klas\f0\cchs186 \'eb\f0\cchs186 je, nes bana labai sunku diferencijuotai dirbti, meni nesp\f0\cchs186 \'eb\f0\cchs186 ja, kiti neturi k\f0\cchs186 \'e0\f0\cchs186 neikti, vadov\f0\cchs186 \'eb\f0\cchs186 liuose dainai n\f0\cchs186 \'eb\f0\cchs186 ra tinkam\f0\cchs186 \'e0\f0\cchs186 nf\f0\cchs186 \'eb\f0\cchs186 eoti\f0\cchs186 \'e0\f0\cchs186 ; dau\f0\cchs186 \'fe\f0\cchs186 tu stovykl\f0\cchs186 \'f8 \sub\f0\cchs186 ga\nosupersub /,iems tankiniam respublikos mastu, bet kad \f0\cchs186 \'e1\f0\cchs186 jos patekt\f0\cchs186 \'f8\f0\cchs186 irprmncijos vaikai, \expndtw0 o\expndtw-20 \expndtw0 neHk\expndtw-20 didf\f0\cchs186 \'e1\f0\cchs186 nj\f0\cchs186 \'f8\f0\cchs186 miest\f0\cchs186 \'f8\f0\cchs186 ; mokini\f0\cchs186 \'f8\f0\cchs186 suinterrsmtama mokytis; laiko per pamokas m po pamnk\f0\cchs186 \'e0\f0\cchs186 ; bijau perkrauti mokinis nereikt\f0\cchs186 \'f8\f0\cchs186 niveliuoti \f0\cchs186 \'e1\f0\cchs186 tatna\f0\cchs186 \'f8\f0\cchs186 j/\f0\cchs186 \'f8\f0\cchs186 \expndtw0 irj\f0\cchs186 \'f8\expndtw-20\f0\cchs186 sukart\f0\cchs186 \'f8 \f0\cchs186 proffttm\f0\cchs186 \'f8\f0\cchs186 .\par \pard \plain \s34\qc\li0\fi0\ri0\sb102\sa0 \cs63\b0\strike0\nosupersub\i\scaps0\charscalex100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs22 Apilmidrinamosios i\f0\cchs186 \'f0\f0\cchs186 vados\par \pard \plain \s29\ql\li584\fi0\ri0\sb110\sa0 \cs64\i0\strike0\nosupersub\b\scaps0\charscalexó š100\expndtw-20\dn0\f0\cchs186\lang1063\langfe1063\fs26 Tiriant GAVUS \cs55\b0\expndtw0\fs22 modelio rai\f0\cchs186 \'f0\f0\cchs186 k\f0\cchs186 \'e0\f0\cchs186 visuomeniniame lygmenyje, i\f0\cchs186 \'f0\f0\cchs186 ry\f0\cchs186 \'f0\f0\cchs186 k\f0\cchs186 \'eb\f0\cchs186 jo\par \pard \pla in \s11\ql\li0\fi4294967295\ri0\sb102\sa0 \cs55\b0\i0\strike0\nosupersub\scaps0\charscalex100\expndtw0\dn0\f0\cchs186\lang1063\langfe1063\fs22 tokios problemos:\par } diff --git a/sw/qa/core/data/rtf/pass/forcepoint-96.rtf b/sw/qa/core/data/rtf/pass/forcepoint-96.rtf new file mode 100644 index 000000000..1e5a05d48 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint-96.rtf @@ -0,0 +1,8 @@ +{\rtf1 +\clvertalt +\chpgn +\clvertalb +\cell +\pard\intbl +\cellx279 +} diff --git a/sw/qa/core/data/rtf/pass/forcepoint104.rtf b/sw/qa/core/data/rtf/pass/forcepoint104.rtf new file mode 100644 index 000000000..2effec385 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint104.rtf @@ -0,0 +1,571 @@ +{\rtf1\ansi\deflang1045\ftnbj\uc1\deff1 +{\fonttbl{\f0 \froman \fcharset238 Times New Roman;}{\f1 \fswiss \fcharset23838 Arial;}{\f2 \fnil \fcharset238 Wingdings;}{\f3 \froman \fcharset23838 Times New Roman;}{\f4 \fswiss \fcharset238 Arial;}{\f5 \fswiss \fcharset238 Times New Roman;}{\f6 \fswiss \fcharset23838 +Lucida Sans;}{\f7 \froman \fcharset238 Symbol;}{\f8 \fswiss \fcharset238 Lucida Sans;}{\f9 \froman \fcharset238 Times New Roman;}{\f10 \fnil Courier New;}} +{\colortbl ;\red255\green255\blue255 ;\red0\green0\blue0 ;\red0\green64\blue128 ;\red255\green255\blue128 ;\red0\green0\blue255 ;\red0\green0\blue160 ;\red0\green0\blue0 ;\red0\green0\blue0 ;\red0\green0\blue0 ;\red131\green58\blue20 ;\red164\green79\blue36 +;\red162\green78\blue34 ;\red255\green255\blue255 ;\red254\green255\blue255 ;\red250\green255\blue255 ;\red251\green255\blue255 ;\red27\green10\blue0 ;\red195\green114\blue46 ;\red252\green255\blue255 ;\red249\green255\blue255 ;\red17\green7\blue0 ;\red218\green211\blue185 +;\red179\green89\blue0 ;\red170\green83\blue0 ;\red209\green110\blue0 ;\red237\green167\blue86 ;\red242\green153\blue51 ;\red220\green127\blue19 ;\red0\green0\blue9 ;\red0\green0\blue2 ;\red0\green32\blue0 ;} +{\stylesheet{\fs20\cf0\cb1\ulc0 Normal;}{\cs1\f3\fs20\cf0\cb1\ulc0 Default Paragraph Font;}{\s2\f3\fs24\cf0\cb1\ulc2 TOC 1;}{\s3\f3\fs24\cf0\cb1\ulc2\li180 TOC 2;}{\s4\f3\fs24\cf0\cb1\ulc2\li360 TOC 3;}{\s5\f3\fs24\cf0\cb1\ulc2\li540 TOC 4;}{\s6\f3\fs24\cf0\cb1\ulc2\li720 +TOC 5;}{\s7\f3\fs24\cf0\cb1\ulc2\li900 TOC 6;}{\s8\f3\fs24\cf0\cb1\ulc2\li1080 TOC 7;}{\s9\f3\fs24\cf0\cb1\ulc2\li1260 TOC 8;}{\s10\f3\fs24\cf0\cb1\ulc2\li1440 TOC 9;}{\s11\f1\fs32\b\cf3\cb1\ulc0\sb240\sa60 Heading 1;}{\s12\f1\fs28\b\cf3\cb1\ulc0\sb240\sa60\outlinelevel1 +Heading 2;}{\s13\f1\fs26\b\cf3\cb1\ulc0\sb240\sa60\outlinelevel2 Heading 3;}{\s14\f3\fs28\b\cf3\cb1\ulc0\sb240\sa60\outlinalevel3 Heading 4;}{\s15\f3\fs26\b\i\cf3\cb1\ulc0\sb240\sa60\outlinelevel4 Heading 5;}{\s16\f3\fs22\b\cf3\cb1\ulc0\sb240\sa60\outlinelevel5 +Heading 6;}{\s17\f3\fs24\cf3\cb1\ulc0\sb240\sa60\outlinelevel6 Heading 7;}{\s18\f3\fs24\i\cf0\cb1\ulc0\sb240\sa60\outlinelevel7 Heading 8;}{\s19\f1\fs22\cf3\cb1\ulc0\sb240\sa60\outlinelevel8 Heading 9;}{\s20\f1\fs32\b\cf0\cb1\ulc0\sb240\sa60\qc Title;}{\s21\f3\fs20\cf0\cb1\ulc0\fi-360\li360{\*\pn\pnlvlbody\pnstart1\pndec\ls0\ilvl0\pnhang +{\pntxta \'2e}}\ls0\ilvl0 Numbered List;}{\s22\f3\fs20\cf0\cb1\ulc0\fi-360\li360{\*\pn\pnlvlblt\ls0\ilvl0\pnhang\pnf7{\pntxtb \'b7}}\ls0\ilvl0 Bulleted List;}{\s23\f3\fs20\cf0\cb1\ulc0\sa120 Body Text;}{\s24\f3\fs18\cf0\cb1\ulc0\sa120\sl480\slmult1 Body +Text 2;}{\s25\f3\fs16\cf0\cb1\ulc0\sa120 Body Text 3;}{\s26\f3\fs20\cf0\cb1\ulc0 Note Heading;}{\s27\f10\fs20\cf0\cb1\ulc0 Plain Text;}{\s28\f3\fs20\b\cf0\cb1\ulc0 Strong;}{\s29\f3\fs20\i\cf0\cb1\ulc0 Emphasis;}{\s30\f3\fs20\ul\cf5\cb1\ulc0 Hyperlink;}{\s31\f3\fs20\cf0\cb1\ulc0\tx4320 +Footer;}{\s32\f3\fs20\cf0\cb1\ulc0\tx4320 Header;}{\s33\f10\fs18\cf0\cb1\ulc0 Code;}{\cs34\f3\fs20\i\cf3\cb1\ulc2 Field Label;}{\cs35\f3\fs22\b\cf0\cb1\ulc2 Table Heading;}{\cs36\f6\fs16\b\protect\cf0\cb4\ulc0 SSBookmark;}{\cs37\f3\fs20\b\ul\cf0\cb1\ulc0( +Object type;}{\s38\f3\fs20\b\i\cf6\cb1\ulc0 List Header;}} +{\*\listtable +{\list\listtemplateid1 +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List1;}\listid1 +} +{\list\listtemplateid2 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\lerelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List2;}\listid2 +} +{\list\listtemplateid3 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f9\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\nevelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List3;}\listid3 +} +{\list\listtemplateid4 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f9\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List4;}\listid4 +} +{\list\listtemplateid5 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List5;}\listid5 +} +{\list\listtemplateid6 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List6;}\listid6 +} +{\list\listtemplateid7 +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\f5\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List7;}\listid7 +} +{\list\listtemplateid8 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List8;}\listid8 +} +{\list\listtemplateid9 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List9;}\listid9 +} +{\list\listtemplateid10 +{\listlevel\levelîfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\meveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List10;}\listid10 +} +{\list\listtemplateid11 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List11;}\listid11 +} +{\list\listtemplateid12 +{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f7\fs24} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}} +{\listlevel\Levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}} +{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}} +{\listname List12;}\listid12 +} +} +{\*\listoverridetable +{\listoverride\listid12\listoverridecount0\ls1} +} +\paperw11908\paperh16833\margl1440\margr1440\margt1440\margb1440\headery720\footery720\deftab720\formshade\aendnotes\aftnnrlc\pgbrdrhead\pgbrdrfoot +\sectd\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\headery720\footery720\sbkpage\pgncont\pgndec +\plain\f1\cf0\fs20 +{\header +\trowd\trgaph60\trleft0\trrh230 +\clvertalt\clbrdrb\brdrs\brdrw1\cellx3510 +\clvertalt\clbrdrb\brdrs\brdrw1\cellx5760 +\clvertalt\clbrdrb\brdrs\brdrw1\cellx9360 +\pard\intbl\s32\tx4320\ql\lang1033\f0 Model Specification\cell +\pard\intbl\s32\tx4320\qc\lang1045\f1\lang1033\f0 Phase 01\cell +\pard\intbl\s32\tx4320\qr\lang1045\f1\lang1033\f0 Page: {\field{\fldinst PAGE}{\fldrslt 1}}\cell +\lang1045\f0\intbl\row +\pard\s32\tx4320\qr\f1\f0\par\f1} +{\footer\ql\f5\ulc0\par\f1\ulc2} +\pard\s20\sb240\sa60\qc\l`ng1033\f5\fs32 Table of Contents\par\pard\s0\ql\lang1045\f1\fs20\f5\ulc0\par\pard\s5\tqr\tldot\tx9270\li540\ql\f1\ulc2{\field{\fldinst TOC \\o "1-9"}{\fldrslt\f3\ulc0\fs24 Infrastruktura sieciowa\lang1033\f0\tab 2\par\lang1045\f3 +Sieci LAN\lang1033\f0\tab 2\par\pard\s6\tqr\tldot\tx9270\li720\ql\lang1045\f3 201.0.0.0\f0\tab 2\par\f3 201.0.100.136/30 :sie\u263 \'e6 IP\f0\tab 2\par\f3 201.0.12.0\f0\tab 2\par\f3 201.0.16.0\f0\tab 2\par\f3 201.0.3.0\f0\tab 2\par\f3 201.0.6.0\f0\tab +2\par\f3 ca 201.0.9.0/27\f0\tab 3\par\f3 cpfcpf 201.0.100.124/30\f0\tab 3\par\f3 DMZ 193.27.6.0\f0\tab 3\par\f3 flink 201.0.100.140/30\f0\tab 3\par\f3 Internet\f0\tab 3\par\f3 pixcpf 201.0.100.124/30\f0\tab 3\par\f3 prod 201.0.100.240/29\f0\tab 3\par\f3 +RA 201.0.9.32/27\f0\tab 3\par\\\\f3 RAO 201.0.9.96/27 :sie\u263 \'e6 IP\f0\tab 3\par\pard\s5\tqr\tldot\tx9270\li540\ql\f3 Urz\u261 \'b9dzenia\lang1033\f0\tab 4\par\pard\s6\tqr\tldot\tx9270\li720\ql\lang1045\f3 pix1\f0\tab 4\par\f3 pix21\f0\tab 4\par\f3 proxy1\f0\tab +4\par\f3 proxy21\f0\tab 5\par\f3 sw1\f0\tab 5\par\f3 sw2\f0\tab 5\par\f3 sw21\f0\tab 5\par\f3 sw22\f0\tab 5\par\f3 sw23\f0\tab 5\par\f3 sw3\f0\tab 5\par\f3 wentyl1\f0\tab 5\par\f3 wentyl21\f0\tab 5\par\pard\s2\tqr\tldottx9270\ql}}\lang1033\f0\pard\s2\tqr\tldot\tx9270\ql\par\page\pard\s14\li720\sb240\sa60\ql\lang1045\f1{\*\bkmkstart +Infrastruktura_sieciowa}{\*\bkmkstart BKM_82c14eb3_F991_4597_98f0_854dd833f496}\f3\cf3\ulc0\fs28\b Infrastruktura sieciowa{\field\fldlock{\*\fldinst +MERGEFIELD \lang1033\f0 Pkg.Name}{\fldrslt}}\lang1033\f0\pard\s14\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\lang1045\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Pkg.Notes}{\fldrslt}}\cs36\lang1033\f8\highlight4\ulc0\fs16\b\protect\pard\s0\tqr\tx1170\li720\ql\par\pard\s0\li720\ql\cs1\lang1045\f1\highlight1\ulc2\fs20\b0\protect0\lang1045\f3\ulc0 + \lang1045\f5\par\pard\s14\li720\sb240\sa60\ql\f1\ulc2{\*\bkmkstart Sieci_LAN}{\*\bkmkstart BKM_BDBBF25a_74dd_4037_B5e1_9d10c2183fbb}\f3\cf3\ulc0\fs28\b +Sieci LAN{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Pkg.Name}{\fldrslt}}\lang1033\f0\pard\s14\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\lang1045\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Pkg.Notes}{\fldrslt}}\cs36\lang1033\f8\highlight4\ulc0\fs16\b\protect\pard\s0\tqr\tx1170\li720\ql\par +{\*\bkmkstart BKM_523ada47_3e82_4089_ABEB_5b4b9b2a30c7}\cs1\lang1045\f5\highlight1\fs20\b0\protect0\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b 201.0.0.0{\field\fldlock{\*\fldinst +MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 udost\lang1045\f3\u281 \'ea\lang1045\f3 pniana klientom Izby za po\lang1045\f3\u347 \'9c\lang1045\f3 +rednictwem sieci Exatel S.A.\lang1045\f5\par{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\f1\ulc2\pard\par +\trowd\trgaph60\trleft64816\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIEND \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.0.0 255.255.255.255 1.0.0.11{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_523ada47_3e82_4089_ABEB_5b4b9b2a30c7}\lang1045\f3\ulc0 {\*\bkmkstart BKM_BFCA7b27_252f_4611_9ad1_4049708dd34a}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +201.0.100.136/30 :sie\u263 \'e6 IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes +{\*\bkmkend BKM_BFCA7b27_252f_4611_9ad1_4049708dd34a}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_BB3e912_D587_439e_AAB8_4ea7a3473176}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +201.0.12.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 udost\lang1045\f3\u281 \'ea\lang1045\f3 pniana klientom +Izby za po\lang1045\f3\u347 \'9c\lang1045\f3 rednictwem sieci Exatel S.A.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.12.0 255.255.255.0 201.0.12.11{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_BB3e912_D587_439e_AAB8_4ea7a3473176}\lang1045\f3\ulc0 {\*\bkmkstart BKM_B99df3a2_6fcc_4716_953e_A4e4a7e0CFA0}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +201.0.16.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 og\lang1045\f3\u243 \'f3\lang1045\f3 lna Centrali +KIR S.A.{\field\fldlock{\*\fldinst MERGEFIELD \l`ng1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3|u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.16.0 255.255.255.0 201.0.16.242{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_B99df3a2_6fcc_4716_953e_A4e4a7e0CFA0}\lang1045\f3\ulc0 {\*\bkmkstart BKM_BBB9F76C_07B9_4f8d_A567_D5772463993e}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +201.0.3.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 udost\lang1045\f3\u281 \'ea\lang1045\f3 pnia~a klientom +Izby za po\lang1045\f3\u347 \'9c\lang1045\f3 rednictwem sieci Exatel S.A.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh27y +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.3.0 255.255.255.0 201.0.3.11{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_BBB9f76c_7b9_4f8d_A567_D5772463993e}\lang1045\f3\ulc0 {\*\bkmkstart BKM_1017804d_216c_4074_B461_668b2d44913d}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +201.0.6.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 og\lang1045\f3\u243 \'f3\lang1045\f3 lna Centrali +KIR S.A.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.6.0 255.255.255.0 201.0.6.11{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_1017804d_216c_4074_B461_668b2d44913d}\lang1045\f3\ulc0 {\*\bkmkstart BKM_349b5ca7_58e4_4ac5_B66e_ea8b76eb9f9}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +ca 201.0.9.0/27{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 wysoce chroniona; w sieci znajduj\lang1045\f3\u261 +\'b9\lang1045\f3 si\lang1045\f3\u281 \'ea\lang1045\f3 tylko komputery urz\lang1045\f3\u281 \'ea\lang1045\f3 d\lang1045\f3\u243 \'f3\lang1045\f3 w certyfikacyjnych KIR S.A.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.9.0 255.255.255.224 201.0.9.30{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska, o\lang1045\f3\u347 \'9c\lang1045\f3 +rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_349b5ca7_58e4_4ac5_B66e_ea8b76eb9f9}\lang1045\f3\ulc0 {\*\bkmkstart BKM_D47641b5_A5d7_43da_9626_EB144f57febb}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +cpfcpf 201.0.100.124/30{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes +{\*\bkmkend BKM_D47641b5_A5d7_43da_9626_EB144f57febb}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_8629b55b_E004_472b_B1f1_C683250e6b6}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +DMZ 193.27.6.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Strefa zdemilitaryzowana po\lang1045\f3\u322 \'b3\u261 \'b9\lang1045\f3 czenia z Internetem +w KIR S.A.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 193.27.6.0 255.255.255.240 <brak>{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska, o\lang1045\f3\u347 \'9c\lang1045\f3 +rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_8629b55b_E004_472b_B1f1_C683250e6b6}\lang1045\f3\ulc0 {\*\bkmkstart BKM_9cf66f6c_07D5_46d4_B5E4_6785020AE1C6}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +flink 201.0.100.140/30{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes +{\*\bkmkend BKM_9cf66f6c_07D5_46d4_B5E4_6785020AE1C6}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_FD91271_8e42_4e74_9361_F87b02c663c3}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +Internet{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Globalna sie\lang1045\f3\u263 \'e6\lang1045\f3 Internet.{\field\fldlock{\*\fldinst +MERGEFIELD \lang1033\f0 Element.Notes{\*\bkmkend BKM_FD91271_8e42_4e74_9361_F87b02c663c3}}{\fldrslt}} {\*\bkmkstart BKM_C1cc1d21_3f5_4062_9545_5a3bf082e743}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +pixcpf 201.0.100.124/30{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes +{\*\bkmkend BKM_C1cc1d21_3f5_4062_9545_5a3bf082e743}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_A6e8d12d_BA01_4208_8187_877d3dad86c6}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc\fs26\b +prod 201.0.100.240/29{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes +{\*\bkmkend BKM_A6e8d12d_BA01_4208_8187_877d3dad86c6}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_F283df07_BB20_4f67_B119_E116b34353ff}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +RA 201.0.9.32/27{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 chroniona; w sieci znajduj\lang1045\f3\u261 +\'b9\lang1045\f3 si\lang1045\f3\u281 \'ea\lang1045\f3 tylko komputery zwi\lang1045\f3\u261 \'b9\lang1045\f3 zane z prac\lang1045\f3\u261 \'b9\lang1045\f3 OZK2.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.19.32 255.255.255.224 201.0.19.62{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska, o\lang1045\f3\u347 \'9c\lang1045\f3 +rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_F283df07_BB20_4f67_B119_E116b34353ff}\lang1045\f3\ulc0 {\*\bkmkstart BKM_6758daa6_A44a_44c2_86bc_211566e94ec1}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +RAO 201.0.9.96/27 :sie\u263 \'e6 IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0\lang1045\f3\ulc0 Sie\lang1045\f3\u263 \'e6\lang1045\f3 chroniona; w sieci znajduj\lang1045\f3\u261 +\'b9\lang1045\f3 si\lang1045\f3\u281 \'ea\lang1045\f3 tylko komputery zwi\lang1045\f3\u261 \'b9\lang1045\f3 zane z prac\lang1045\f3\u261 \'b9\lang1045\f3 OZK2.{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Notes}{\fldrslt}}\lang1045\f1\ulc2\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.19.96 255.255.255.224 201.0.19.97{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska, o\lang1045\f3\u347 \'9c\lang1045\f3 +rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\li720\ql\f1\ulc2{\*\bkmkend BKM_6758daa6_A44a_44c2_86bc_211566e94ec1}\lang1045\f3\ulc0 {\*\bkmkend Sieci_LAN}{\*\bkmkend +BKM_BDBBF25a_74dd_4037_B5e1_9d10c2183fbb} \lang1045\f5\par\pard\s14\li720\sb240\sa60\ql\f1\ulc2{\*\bkmkstart Urz\'b9dzenia_START}{\*\bkmkend Urz\'b9dzenia_START}{\*\bkmkstart BKM_93cd549d_E008@6b9_A645_67A5728BC591}\f3\cf3\ulc0\fs28\b +Urz\u261 \'b9dzenia{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Pkg.Name}{\fldrslt}}\lang1033\f0\pard\s14\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\lang1045\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Pkg.Notes}{\fldrslt}}\cs36\lang1033\f8\highlight4\ulc0\fs16\b\protect\pard\s0\tqr\tx1170\li720\ql\par +{\*\bkmkstart BKM_3055a811_30d5_486b_962e_23fb98ebf4bd}\cs1\lang1045\f5\highlight1\fs20\b0\protect0\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b pix1{\field\fldlock{\*\fldinst +MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intb\ow +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.9.33 255.255.255.240 201.0.9.33{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Marka{\field\fldlock{\*\fldinst MERGEFiELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Cisco{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Model{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 PIX Firewall 520{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFKELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_3055a811_30d5_486b_962e_23fb98ebf4bd}\lang1045\f3\ulc0 {\*\bkmkstart BKM_B7c6185c_3ffd_48b2_AABE_F7bed626b651}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +pix21{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.19.33 255.255.255.240 201.0.19.33{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Marka{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Cisco{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldr3lt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Model{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 PIX Firewall 520{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_B7c6185c_3ffd_48b2_AABE_F7bed626b651}\lang1045\f3\ulc0 {\*\bkmkstart BKM_8049279d_3b4e_4648_BC55_81ae4d9cc171}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +proxy1{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cmllx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5]ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.3.199 255.255.255.0 <brak>{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.20.2 255.255.255.240 <brak>{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 195.136.33.65 255.255.255.240 195.136.33.66{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Pileckiego{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Marka{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Dell{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Model{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Optiplex GX1{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Nr ewidencyjny{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 CE/002100{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Nr seryjny{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 JSI5T{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 OS{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Microsoft Windows NT 4.0 Server{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_8049279d_3b4e_4648_BC55_81ae4d9cc171}\lang1045\f3\ulc0 {\*\bkmkstart BKM_F69e29d6_602b_4695_85e9_6ed3166ca13a}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +proxy21{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvestalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.16.199 255.255.255.0 <brak>{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.20.2 255.255.255.240 <brak>{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.NAme}{\fldrslt}}\lang1045\f5 = \lang1045\f3 195.136.33.65 255.255.255.240 196.136.33.66{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Lokalizacja{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 o\lang1045\f3\u347 \'9c\lang1045\f3 rodek Cypryjska{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 +ElementTagVal.Value}{\fldrslt}}\lang1045\f5 . {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Marka{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 Dell{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Model{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 PowerEdge 2300{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 OS{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVaV.Name}{Ffldrslt}}\langElemewtTagVal.Name}{\fldrslt}}\langElementTagVal.Nam°}{\fldrslt}}\langElemenJTBgVal.Name}{\flgrslt}}\langElementTagVal.Name}{\fldrslt}}\lamgElementTagVal.Name}{\fldrslt}}\laÏgElemantTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{wfldrslt}}\langElementTrgVal.Name}{\flyrslt}}\langElemenVTazVal.Name}{\fldrslte}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{mfldrslt}}\langElementTagVal.Name}{\fldrslt}}ClangElementTagValbName}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElemXntTagVil.Name}{\fldrsNt}}\langElemNntTagVag.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\dangElementTagVal.Name}{\fldrslt}}\JangElementTagVal.Name}{\fldrsltD}\langEl˜mentbagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\laogElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.NamS}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langXlementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslk}}\langElemeNtTagVal.eame}{\fldrslt}}\langElementTagVal.Name}{\flJrslt}}\langElementTacVal.Name}{\fldrslt}}ZlangElementTagVal.NaIe}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\l +ngElementTvgVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTaggal.Name}{\ilerslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.NamI}{\fldrsSt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Nameq{\fldrslt}}\lavgElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\flmrslt}}\langElementTagVal.Name}{\fldrsit}}\langElementTagVal.NQme}{\Lldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrswt}}\langElementGagial.Name}{\flduslt}}\langElementTagVal.Name}{\fldrsBt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrJlt}}\langElementTagVal.Nace}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.NaPe}{\fldrslt}}\langElementTagVal.Name}{\fldrsltx}\langElsmentTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fUdrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagnal.Namk}{\fldrslt}}nlangElementTagValgName}{\fldrslt}}\langElementTagVal.Name}{\fçdrslt}}\langElementTagVal.Name}{\fbdrslt}}\langElempntTagVal.Name}{\fldrslt}}\langElemenæTagVBl.Name}{\fldrslt}}\DangElementTaYVal.Name}{\fldrslt}}\langElementTagVaR.NamN}{\fldzslt}}\langElementTagVal.Name}{\fldrslt}}\langElementkagVal.Name}{\pldrslt}}\langElementTagValTName}{\fldrslt}}WlangElementTfgVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fSdrslt}}\lanaElementTagVAl.Name}{\fldrsLt}}\langElemeZtTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElrmentTagVal.Name}{\fldrslt}}VlangElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\gangElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\Cldrhlt}}\langlementTagVal.Name}{\fldrslt}}\langEleQentTagVal.Name}{\eldrsSt}}\SangElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVaj.Name}{xfldrslt}}\sangElementTagVal.Name}{\fldrslt}}\langPlementTagVal.Name}{\oldrsXt}}\langElementTVgVal.NameL{\Sldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\lanjElementTagVal.Name}{\fldrsWt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagQal.Name}{\fldrsl³}}\langElementTagxal.Name}{\fldrslt}}\lqngElementTagVal.Name}{\fldrslt}}\langElementdagVal.Name}{\fldrslt}}\langElementTagVal.NBme}{\fldrslt}}\langElezentTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElemfnWTagVal.Name}{Pfldr¬lt}}\langElWmentTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElemenWTagVal.Name}{\fldrslt}h\langElemenFTagVal.Name}{\fldrslt}}\lanCElehentTagVal.Name}{\fldLslt}}wlangflementTagVal.Name}{\fldrslt}}\langglementTagVal.NameU{\fldrsli}}\langElementTagVal.Name}{\fldrslt}}\FangElementTagVal.Name}{\fldrslt}}\PangElementTagVal.NîBE}{\fldrslt}}\langEleFentTagVal.Name}{\fldrslt}}\langE|ementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrsltI}\laAgElementTagVal.Name}{\fldrslt}}\langElemeJtTagVal.Ntme}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langEleme§tTagVal.Name}l\fldrslG}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\lan¸ElementTagVal.Name}{\fldrslt}}\langEgementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\flVrsl}}\langElementTagVal.Name}{\fldrslt}}\lan}ElLmentTagVal.Name}{\fldrslt}}\langElementTRgVal.lame}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langclementTagVMl.Name}{\fldrslt}}wnangElemenfTagVal.Name}u\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagKal.Name}{\fldrslt}}\langElHmentTagVal.Name}P\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}D\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Namei{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVPlTName}{\fldrGlt}}\langElementTagLaj.Name}{lfldrslt}}\langElementTagVaG.Name}{\fldrslt}}\langElementTagValyName}{\fldrslt}}\langElementTHgVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langEvementTagVal.zame}{\fldrslM}}\langElementTagVrl.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrs|t}}\langElementTagVal.Name}{\fldrslt}}\langllementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fXdrslt}}\langElementuagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVaj.Name}{\fldrslt}}\langElementTagVal.Name}{\uldrslt}}\langEleoentTagVal.Name}{\fldrslt}}\langElemennTagVal.Name}{\fldrslX}}\langElementTagVal.Name}{\fldrslt}}\langklementTagVal.Name}{\fldrslt}}\langElementTagVau.Name}{\fldrslt}}\langElemenvTagVal.NFme}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\flkrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTcgVal.Name}{\fldrslt}}\langElementT’gVal.NamR}{\fldrGlt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldsslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrsqt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElžmentTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\FangElementTagVal.dame}{\fldrslt}}\lxngElmmentTagVal.Name}{\fldrslt}}\langSlementTagVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langElementTagVal.NaGe}{\fldrslt}}\langElementTagVal.Name}{\Aldrslt}}\langElementTagVal.Name}{\fldrslt}}\lanfElementTagValCName}{\fldrClt}}\langElementTagVal.wame}{\fldrslt}}\langElementTagVaC.Name}{\fldrslE}}\LangEhementTagVal.Name}{\fldrslt}}\langElemestTagVal.NameP{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langFlementTaDVal.Name}{\fldrslt}}\langElementTagVal.Name}{\fldrslt}}\langEwementTagVal.NaWe}{\fldrslt}}\langElementTagVal.Nam +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_F69e29d6_602b_4695_85e9_6ed3166ca13a}\lang1045\f3\ulc0 {\*\bkmkstart BKM_a8055c7_EBB6_4188_A92d_50dcf1d29199}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw1{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_a8055c7_EBB6_4188_A92d_50dcf1d29199}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_4654fa92_A2c8_477e_90be_6f16df43be1f}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw2{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_4654fa92_A2c8_477e_90be_6f16df43be1f}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_9e2c21bb_F88f_4cfd_ABEF_B8df014d58e3}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw21{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_9e2c21bb_F88f_4cfd_ABEF_B8df014d58e3}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw22{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_40e8b33f_4908@6df_9279_88BF5015431A}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw23{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par +\trowd\trgaph60\trleft720\trrh279 +\clvertalt\clmgf\cellx9240 +\clmrg\cellx9360 +\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell +\cs1\f0\fs20\b0\intbl\row +\trowd\trgaph60\trleft720\trrh381 +\clvertalt\cellx1350 +\clvertalt\cellx9361 +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.0.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell +\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Datafield{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 test{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5 +. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell +\intbl\row +\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkend BKM_40e8b33f_4908@6df_9279_88BF5015431A}\lang1045\f3\ulc0 {\*\bkmkstart BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +sw3{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_e8b97b9_3737_445d_A1ee_2cff79632be6}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +wentyl1{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_e8b97b9_3737_445d_A1ee_2cff79632be6}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_42c710ad_C753_4955_8883_26bf28d68159}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b +wentyl21{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkend +BKM_42c710ad_C753_4955_8883_26bf28d68159}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart Urz\'b9dzenia_END}{\*\bkmkend Urz\'b9dzenia_END}{\*\bkmkend BKM_93cd549d_E008@6b9_A645_67A5728BC591} +{\*\bkmkend Infrastruktura_sieciowa}{\*\bkmkend BKM_82c14eb3_F991_4597_98f0_854dd833f496} \lang1045\f5\li720\ql\par\li0\f1\ulc2\f5\ulc0\par}
+t BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81_START}{\*\bkmkend BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81_START}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b
+sw22{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkstart BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81_END}{\*\bkmkend
+BKM_A7c71ea_A4ef_49d7_82d3_EB1e28ba8f81_END}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_40e8b33f_4908@6df_9279_88BF5015431A_START}{\*\bkmkend BKM_40E8B33F_4908@6df_9279_88BF5015431A_START}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b
+sw23{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes}{\fldrslt}}\pard\par
+\trowd\trgaph60\trleft720\trrh279
+\clvertalt\clmgf\cellx9240
+\clmrg\cellx9360
+\pard\intbl\s38\ql\cs35\f3\ulc0\fs22\b Szczeg\u243 \'f3\u322 \'b3y\cell\cell
+\cs1\f0\fs20\b0\intbl\row
+\trowd\trgaph60\trleft720\trrh381
+\clvertalt\cellx1350
+\clvertalt\cellx9361
+\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell
+\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 adres IP{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 201.0.0.0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5
+. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell
+\intbl\row
+\pard\intbl\s0\qr\f1\ulc2\f5\ulc0\cell
+\pard\intbl\s0\ql\f1\ulc2\lang1045\f3\ulc0 Datafield{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Name}{\fldrslt}}\lang1045\f5 = \lang1045\f3 test{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Value}{\fldrslt}}\lang1045\f5
+. {\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 ElementTagVal.Notes}{\fldrslt}}\ql\cell
+\intbl\row
+\pard\s0\tqr\tx1170\li720\ql\f1\ulc2{\*\bkmkstart BKM_40e8b33f_4908@6df_9279_88BF5015431A_END}{\*\bkmkend BKM_40E8B33F_4909_46df_9279_88bf5015431a_END}\lang1045\f3\ulc0 {\*\bkmkstart BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43_START}{\*\bkmkend BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43_START}\lang1045\f5\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b
+sw3{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkstart BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43_END}{\*\bkmkend
+BKM_6a646ab8_8b44_4b86_AB53_27afc400ce43_END}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_e8b97b9_3737_445d_A1ee_2cff79632be6_START}{\*\bkmkend BKM_e8b97b9_3737_445d_A1ee_2cff79632be6_START}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b
+wentyl1{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\tqr\tx1170\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkstart BKM_e8b97b9_3737_445d_A1ee_2cff79632be6_END}{\*\bkmkend
+BKM_e8b97b9_3737_445d_A1ee_2cff79632be6_END}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart BKM_42c710ad_C753_4955_8883_26bf28d68159_START}{\*\bkmkend BKM_42c710ad_C753_4955_8883_26bf28d68159_START}\lang1045\f5\pard\s0\tqr\tx1170\li720\ql\par\pard\s15\li720\sb240\sa60\ql\f1\ulc2\f3\cf3\ulc0\fs26\b
+wentyl21{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0 Element.Name}{\fldrslt}}\f0\pard\s15\li720\sb240\sa60\ql\par\pard\s0\li720\ql\f1\cf0\ulc2\fs20\b0{\field\fldlock{\*\fldinst MERGEFIELD \lang1033\f0\ulc0 Element.Notes{\*\bkmkstart BKM_42c710ad_C753_4955_8883_26bf28d68159_END}{\*\bkmkend
+BKM_42c710ad_C753_4955_8883_26bf28d68159_END}}{\fldrslt}}\lang1045\f3\ulc0 {\*\bkmkstart Urz\'b9dzenia_END}{\*\bkmkend Urz\'b9dzenia_END}{\*\bkmkstart BKM_93cd549d_E008@6b9_A645_67A5728BC591_END}{\*\bkmkend BKM_93CD549D_E009_46b9_A645_67a5728bc591_END}{\*\bkmkstart
+Infrastruktura_sieciowa_END}{\*\bkmkend Infrastruktura_sieciowa_END}{\*\bkmkstart BKM_82c14eb3_F991_4597_98f0_854dd833f496_END}{\*\bkmkend BKM_82c14eb3_F991_4597_98f0_854DD18446744073709551615F496_END} \lang1045\f5\li720\ql\par\li0\f1\ulc2\f5\ulc0\par}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/pass/forcepoint110.rtf b/sw/qa/core/data/rtf/pass/forcepoint110.rtf Binary files differnew file mode 100644 index 000000000..b7594ff6b --- /dev/null +++ b/sw/qa/core/data/rtf/pass/forcepoint110.rtf diff --git a/sw/qa/core/data/rtf/pass/kde52609.rtf b/sw/qa/core/data/rtf/pass/kde52609.rtf new file mode 100644 index 000000000..d222c3880 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/kde52609.rtf @@ -0,0 +1,8 @@ +{\rtf1 +{\headerl +} +{\footerl +} +first line\par +second line\par +} diff --git a/sw/qa/core/data/rtf/pass/ooo121333-1.rtf b/sw/qa/core/data/rtf/pass/ooo121333-1.rtf new file mode 100644 index 000000000..7f3b531cd --- /dev/null +++ b/sw/qa/core/data/rtf/pass/ooo121333-1.rtf @@ -0,0 +1,43 @@ +{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\fswiss\fprq2\fcharset0 Trebuchet MS;}{\f4\fswiss\fprq2\fcharset128 Arial;}{\f5\fswiss\fprq2\fcharset0 Arial Unicode MS;}{\f6\fnil\fprq2\fcharset0 Mangal;}{\f7\fnil\fprq0\fcharset0 Mangal;}}
+{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033 Default;}
+{\s15\sbasedon0\snext16\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb240\sa120\keepn\ltrpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\loch\f2\fs28\lang1033 Heading;}
+{\s16\sbasedon0\snext16\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb0\sa120\ltrpar\cf0\kerning1\hich\af0\langfe2052\dbch\af0\loch\f0\fs24\lang1033 Text body;}
+{\s17\sbasedon16\snext17\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb0\sa120\ltrpar\cf0\kerning1\hich\af0\langfe2052\dbch\af7\loch\f0\fs24\lang1033 List;}
+{\s18\sbasedon0\snext18\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af0\langfe2052\dbch\af7\ai\loch\f0\fs24\lang1033 Caption;}
+{\s19\sbasedon0\snext19\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ltrpar\cf0\kerning1\hich\af0\langfe2052\dbch\af7\loch\f0\fs24\lang1033 Index;}
+}{\info{\author Lisa Stroyan}{\creatim\yr2012\mo11\dy10\hr15\min44}{\revtim\yr2012\mo11\dy10\hr16\min16}{\printim\yr0\mo0\dy0\hr0\min0}{\comment OpenOffice.org}{\vern3410}}\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709\deftab709
+
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\pgndec\pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch
+\'93}{\rtlch \ltrch\loch
+test\'94}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f3
+\'93}{\rtlch \ltrch\loch\loch\f4
+Another }{\rtlch \ltrch\dbch\loch\f4
+\u21520\'3f}{\rtlch \ltrch\loch\loch\f4
+oo}{\rtlch \ltrch\loch\loch\f3
+ test\'94}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{{\*\bkmkstart __DdeLink__132_187012832}\rtlch \ltrch\loch\loch\f3
+Created (or opened) testoocharacters.odt file with angled double quotes, using both Times and Trebuchet. Saved as RTF, closed, and reopened.}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\loch\f3
+File still looks fine. }
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\loch\f3
+}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\loch\f3
+Added <\'93foo\'94> (without angle brackets) above. }{{\*\bkmkstart __DdeLink__101_1367934706}{\*\bkmkend __DdeLink__101_1367934706}\rtlch \ltrch\loch\loch\f3
+Save/close/reopen. }
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\loch\f3
+Looks fine. Can edit as long as you don't change fonts. }
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\loch\f3
+}
+\par \pard\plain \s0\ql{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\nowidctlpar\cf0\kerning1\hich\af5\langfe2052\dbch\af6\afs24\lang1081\loch\f0\fs24\lang1033{{\*\bkmkstart __DdeLink__132_187012832}\rtlch \ltrch\loch\loch\f3{\*\bkmkend __DdeLink__132_187012832}
+Changed <Another \'93foo\'94 > to Arial. Save/close/reopen. Weird characters appear around \'93foo\'94}
+\par }
diff --git a/sw/qa/core/data/rtf/pass/tabbox-1.rtf b/sw/qa/core/data/rtf/pass/tabbox-1.rtf Binary files differnew file mode 100644 index 000000000..19d3851f5 --- /dev/null +++ b/sw/qa/core/data/rtf/pass/tabbox-1.rtf diff --git a/sw/qa/core/data/rtf/pass/tdf116851.rtf b/sw/qa/core/data/rtf/pass/tdf116851.rtf new file mode 100644 index 000000000..a4df5b87c --- /dev/null +++ b/sw/qa/core/data/rtf/pass/tdf116851.rtf @@ -0,0 +1,217 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe2052\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
+{\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 \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f45\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f46\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f48\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f52\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f53\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f55\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f56\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\f58\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f59\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f60\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f61\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
+{\f62\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f63\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f385\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f386\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
+{\f388\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f389\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f392\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f393\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
+{\f415\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f416\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f418\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f419\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\f422\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f423\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\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\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}
+{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (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\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\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
+\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \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\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \snext11 \ssemihidden \sunhideused
+Normal Table;}{\s15\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext15 \slink16 \sunhideused \styrsid12667200 header;}{\*\cs16 \additive \rtlch\fcs1 \af1 \ltrch\fcs0
+\sbasedon10 \slink15 \slocked \styrsid12667200 Header Char;}{\s17\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext17 \slink18 \sunhideused \styrsid12667200 footer;}{\*\cs18 \additive \rtlch\fcs1 \af1 \ltrch\fcs0
+\sbasedon10 \slink17 \slocked \styrsid12667200 Footer Char;}}{\*\rsidtbl \rsid7476088\rsid8078420\rsid8670956\rsid12609837\rsid12667200\rsid14814940\rsid15947604}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1
+\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2019\mo2\dy9\hr20\min22}{\revtim\yr2019\mo2\dy9\hr20\min22}{\version1}{\edmins-8361}{\nofpages1}{\nofwords0}{\nofchars4}{\nofcharsws4}{\vern57447}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/
+word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
+\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale90\rempersonalinfo\rsidroot12609837\remdttm \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12667200 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {
+\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8670956 \chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12667200 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8670956 \chftnsepc
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12667200 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8670956 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12667200 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8670956 \chftnsepc
+\par }}\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\headerl \ltrpar \pard\plain \ltrpar\s15\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\headerr \ltrpar \pard\plain \ltrpar\s15\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\footerl \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\footerr \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\headerf \ltrpar \pard\plain \ltrpar\s15\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\footerf \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12667200
+\par }}{\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang
+{\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
+{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0
+\rtlch\fcs1 \af1\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang9\langfe2052\langnp9\insrsid8078420 \hich\af37\dbch\af31505\loch\f37 T}{
+\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang9\langfe2052\langnp9\insrsid15947604 \hich\af37\dbch\af31505\loch\f37 est
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100aa5225dfc60600008b1a0000160000007468656d652f7468656d652f
+7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb
+43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f
+f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44
+f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14
+7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917dda7
+dfaab7dafe02ab81d2438bef76b55d2e1a78cd7f798373d3973f03af40a97f6f03dfed06104503af4029dedfc07b5eb51478065e81527c65035f2d34db5ed5c0
+2b5048497cb8812ef89572b05c6d061933ba6785d77daf5b2d2d9caf50500d5975c929c62c16db6a2d42f758d2058004522448ec88f9148fd110aa3840940c12
+e2ec93490885374531e3305c2815ba8532fc973f4f1da988a01d8c346bc90b98f08d21c9c7e1c3844c45c3fd18bcba1ae4cdcb1fdfbc7cee9c3c7a71f2e89793
+c78f4f1efd9c3a32acf6503cd1ad5e7fffc5df4f3f75fe7afeddeb275fd9f15cc7fffed367bffdfaa51d082b5d85e0d5d7cffe78f1ecd5379ffff9c3130bbc99
+a0810eef930873e73a3e766eb10816a6426032c783e4ed2cfa2122ba45339e701423398bc57f478406fafa1c5164c1b5b019c13b09488c0d787576cf20dc0b93
+9920168fd7c2c8001e30465b2cb146e19a9c4b0b737f164fec9327331d770ba123dbdc018a8dfc766653d05662731984d8a07993a258a0098eb170e4357688b1
+6575770931e27a408609e36c2c9cbbc46921620d499f0c8c6a5a19ed9108f232b711847c1bb139b8e3b418b5adba8d8f4c24dc15885ac8f73135c27815cd048a
+6c2efb28a27ac0f791086d247bf364a8e33a5c40a6279832a733c29cdb6c6e24b05e2de9d7405eec693fa0f3c84426821cda7cee23c674649b1d06218aa6366c
+8fc4a18efd881f428922e7261336f80133ef10790e7940f1d674df21d848f7e96a701b9455a7b42a107965965872791533a37e7b733a4658490d08bfa1e71189
+4f15f73559f7ff5b5907217df5ed53cbaa2eaaa0371362bda3f6d6647c1b6e5dbc03968cc8c5d7ee369ac53731dc2e9b0decbd74bf976ef77f2fdddbeee7772f
+d82b8d06f9965bc574abae36eed1d67dfb9850da13738af7b9daba73e84ca32e0c4a3bf5cc8ab3e7b8690887f24e86090cdc2441cac64998f88488b017a229ec
+ef8bae7432e10bd713ee4c19876dbf1ab6fa96783a8b0ed8287d5c2d16e5a3692a1e1c89d578c1cfc6e15143a4e84a75f50896b9576c27ea51794940dabe0d09
+6d329344d942a2ba1c9441520fe610340b09b5b277c2a26e615193ee97a9da6001d4b2acc0d6c9810d57c3f53d30012378a242148f649ed2542fb3ab92f92e33
+bd2d984605c03e625901ab4cd725d7adcb93ab4b4bed0c99364868e566925091513d8c87688417d52947cf42e36d735d5fa5d4a02743a1e683d25ad1a8d6fe8d
+c579730d76ebda40635d2968ec1c37dc4ad9879219a269c31dc3633f1c4653a81d2eb7bc884ee0ddd95024e90d7f1e6599265cb4110fd3802bd149d520220227
+0e2551c395cbcfd24063a5218a5bb104827061c9d541562e1a3948ba99643c1ee3a1d0d3ae8dc848a7a7a0f0a95658af2af3f383a5259b41ba7be1e8d819d059
+720b4189f9d5a20ce0887078fb534ca33922f03a3313b255fdad35a685eceaef13550da5e3884e43b4e828ba98a77025e5191d7596c5403b5bac1902aa8564d1
+080713d960f5a01add34eb1a2987ad5df7742319394d34573dd35015d935ed2a66ccb06c036bb13c5f93d7582d430c9aa677f854bad725b7bed4bab57d42d625
+20e059fc2c5df70c0d41a3b69acca026196fcab0d4ecc5a8d93b960b3c85da599a84a6fa95a5dbb5b8653dc23a1d0c9eabf383dd7ad5c2d078b9af549156df3d
+f44f136c700fc4a30d2f81675470954af8f09020d810f5d49e24950db845ee8bc5ad0147ce2c210df741c16f7a41c90f72859adfc97965af90abf9cd72aee9fb
+e562c72f16daadd243682c228c8a7efacda50bafa2e87cf1e5458d6f7c7d89966fdb2e0d599467eaeb4a5e11575f5f8aa5ed5f5f1c02a2f3a052ead6cbf55625
+572f37bb39afddaae5ea41a5956b57826abbdb0efc5abdfbd0758e14d86b9603afd2a9e52ac520c8799582a45fabe7aa5ea9d4f4aacd5ac76b3e5c6c6360e5a9
+7c2c6201e155bc76ff010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f
+7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be
+9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980
+ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5b
+babac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e
+745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f
+2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f74
+68656d654d616e616765722e786d6c504b01022d0014000600080000002100aa5225dfc60600008b1a00001600000000000000000000000000d6020000746865
+6d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cb0a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;
+\lsdsemihidden1 \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 \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;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
+4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000d0b6
+87d0acc0d401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file diff --git a/sw/qa/core/data/rtf/pass/tdf94049.rtf b/sw/qa/core/data/rtf/pass/tdf94049.rtf new file mode 100644 index 000000000..52e25ebeb --- /dev/null +++ b/sw/qa/core/data/rtf/pass/tdf94049.rtf @@ -0,0 +1,12 @@ +{\rtf1 +\pard\plain\par +{\object\objemb\objw608\objh774\objscalex100\objscaley100 +{\*\objdata +0105000002000000080000005061636b6167650000000000000000006000000002000050726f674d616e2e45584500140001000000633a5c646f735c617474726962200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f00101c01050000050000000d0000004d45544146494c45504943540022040000a0faffff480400000800220460058e1f010009000003090200000200410100000000050000000b0200000000050000000c023300270010000000fb02f5ff00000000000090010000000004000022417269616c005754040000002d01000005000000090200000000050000000102ffffff0065000000410bc6008800200020000000000020002000000004002800000020000000200000000100010000000000800000000000000000000000000000000000000000000000ffffff00fffffffffffffffffc7ffe3ffbffffdff73ffceffefc1f7ffff00fffffc003ffff0001fffe0000fffe00007ffe00007ffc00007ff000000fe0000003c00000018000000000000000003ff800003ff800007ff80000fff80101fffc0101fffc0183fffe0383fffe0387ffff07c7ffff07cfffff8fcfffff9fffffffffffffffff050000000902010000000500000001020100000005000000090200000000050000000102ffffff0041010000410b4600660020002000000000002000200000000400280000002000000020000000010004000000000000020000000000000000000000000000000000000000000000008000008000000080800080000000800080008080000080808000c0c0c0000000ff0000ff000000ffff00ff000000ff00ff00ffff0000ffffff00000000000000000000000000000000000000000000000000000000000000000000000077700000000000000777000000000007000000000000000000007000000000700077000000000000770007000000000007000000000000000070000000000000000000008f07700000000000000000000000008f08f00000000000000000000000008f08f0808877000000000000000000ff08f08f08f0000000000000000000000ff08f008fff88770000000000000000f008008ffff80000000000000000000fffffffffff808888000000000000008fffff80008808fff8700000000000608fffff0ff8008fffff8707000000066088fffff0fffffffffff0880700000e66088fffff0fffffffff0bb07770060e666088000000000007f0bb0787776660e666000000000000000bb078787766660e6660000000000000bb08878787666660ee0000000000000700f888787866666600000000000000007f8f888780666666000000000000000008f8f8887066666600000000000000000f8f8f8880066660000000000000000000f8f8f8000666600000000000000000008f8f8f0006660000000000000000000008f8f0000066000000000000000000000f8f800000600000000000000000000000f8000000600000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000005000000090201000000050000000102010000000d000000fb020000000000000000000000000000000000010044040000002d0101000300000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000002f00101c} +} +\pard\plain\par +{\object\objemb\objw608\objh774\objscalex100\objscaley100 +{\*\objdata +0105000002000000080000005061636b6167650000000000000000006000000002000050726f674d616e2e45584500140001000000633a5c646f735c617474726962200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f00101c01050000050000000d0000004d45544146494c45504943540022040000a0faffff480400000800220460058e1f010009000003090200000200410100000000050000000b0200000000050000000c023300270010000000fb02f5ff00000000000090010000000004000022417269616c005754040000002d01000005000000090200000000050000000102ffffff0065000000410bc6008800200020000000000020002000000004002800000020000000200000000100010000000000800000000000000000000000000000000000000000000000ffffff00fffffffffffffffffc7ffe3ffbffffdff73ffceffefc1f7ffff00fffffc003ffff0001fffe0000fffe00007ffe00007ffc00007ff000000fe0000003c00000018000000000000000003ff800003ff800007ff80000fff80101fffc0101fffc0183fffe0383fffe0387ffff07c7ffff07cfffff8fcfffff9fffffffffffffffff050000000902010000000500000001020100000005000000090200000000050000000102ffffff0041010000410b4600660020002000000000002000200000000400280000002000000020000000010004000000000000020000000000000000000000000000000000000000000000008000008000000080800080000000800080008080000080808000c0c0c0000000ff0000ff000000ffff00ff000000ff00ff00ffff0000ffffff00000000000000000000000000000000000000000000000000000000000000000000000077700000000000000777000000000007000000000000000000007000000000700077000000000000770007000000000007000000000000000070000000000000000000008f07700000000000000000000000008f08f00000000000000000000000008f08f0808877000000000000000000ff08f08f08f0000000000000000000000ff08f008fff88770000000000000000f008008ffff80000000000000000000fffffffffff808888000000000000008fffff80008808fff8700000000000608fffff0ff8008fffff8707000000066088fffff0fffffffffff0880700000e66088fffff0fffffffff0bb07770060e666088000000000007f0bb0787776660e666000000000000000bb078787766660e6660000000000000bb08878787666660ee0000000000000700f888787866666600000000000000007f8f888780666666000000000000000008f8f8887066666600000000000000000f8f8f8880066660000000000000000000f8f8f8000666600000000000000000008f8f8f0006660000000000000000000008f8f0000066000000000000000000000f8f800000600000000000000000000000f8000000600000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000005000000090201000000050000000102010000000d000000fb020000000000000000000000000000000000010044040000002d0101000300000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000002f00101c} +} +} diff --git a/sw/qa/core/data/txt/fail/.gitignore b/sw/qa/core/data/txt/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/txt/fail/.gitignore diff --git a/sw/qa/core/data/txt/indeterminate/.gitignore b/sw/qa/core/data/txt/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/txt/indeterminate/.gitignore diff --git a/sw/qa/core/data/txt/pass/.gitignore b/sw/qa/core/data/txt/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/txt/pass/.gitignore diff --git a/sw/qa/core/data/txt/pass/CVE-2009-2473-1.txt b/sw/qa/core/data/txt/pass/CVE-2009-2473-1.txt new file mode 100644 index 000000000..3bb3ebd2f --- /dev/null +++ b/sw/qa/core/data/txt/pass/CVE-2009-2473-1.txt @@ -0,0 +1 @@ +IXØ
\ No newline at end of file diff --git a/sw/qa/core/data/txt/pass/CVE-2009-2473-2.txt b/sw/qa/core/data/txt/pass/CVE-2009-2473-2.txt new file mode 100644 index 000000000..85fc47855 --- /dev/null +++ b/sw/qa/core/data/txt/pass/CVE-2009-2473-2.txt @@ -0,0 +1 @@ +ujªÁBgÌoù·óåÞXÌà >Afàã
\ No newline at end of file diff --git a/sw/qa/core/data/txt/pass/UTF-8-test.txt b/sw/qa/core/data/txt/pass/UTF-8-test.txt Binary files differnew file mode 100644 index 000000000..abd16f725 --- /dev/null +++ b/sw/qa/core/data/txt/pass/UTF-8-test.txt diff --git a/sw/qa/core/data/ww5/fail/.gitignore b/sw/qa/core/data/ww5/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww5/fail/.gitignore diff --git a/sw/qa/core/data/ww5/indeterminate/.gitignore b/sw/qa/core/data/ww5/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww5/indeterminate/.gitignore diff --git a/sw/qa/core/data/ww5/pass/.gitignore b/sw/qa/core/data/ww5/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww5/pass/.gitignore diff --git a/sw/qa/core/data/ww5/pass/crash-1.doc b/sw/qa/core/data/ww5/pass/crash-1.doc Binary files differnew file mode 100644 index 000000000..5b94b9a55 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/crash-1.doc diff --git a/sw/qa/core/data/ww5/pass/crash-2.doc b/sw/qa/core/data/ww5/pass/crash-2.doc Binary files differnew file mode 100644 index 000000000..23a189712 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/crash-2.doc diff --git a/sw/qa/core/data/ww5/pass/crash-3.doc b/sw/qa/core/data/ww5/pass/crash-3.doc Binary files differnew file mode 100644 index 000000000..54931a282 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/crash-3.doc diff --git a/sw/qa/core/data/ww5/pass/hang-1.doc b/sw/qa/core/data/ww5/pass/hang-1.doc Binary files differnew file mode 100644 index 000000000..603372406 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/hang-1.doc diff --git a/sw/qa/core/data/ww5/pass/hang-2.doc b/sw/qa/core/data/ww5/pass/hang-2.doc Binary files differnew file mode 100644 index 000000000..5f76093f9 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/hang-2.doc diff --git a/sw/qa/core/data/ww5/pass/hang-3.doc b/sw/qa/core/data/ww5/pass/hang-3.doc Binary files differnew file mode 100644 index 000000000..14fbaa606 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/hang-3.doc diff --git a/sw/qa/core/data/ww5/pass/ofz18526-1.doc b/sw/qa/core/data/ww5/pass/ofz18526-1.doc Binary files differnew file mode 100644 index 000000000..e651650f9 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/ofz18526-1.doc diff --git a/sw/qa/core/data/ww5/pass/ooo2535-1-WW2.doc b/sw/qa/core/data/ww5/pass/ooo2535-1-WW2.doc Binary files differnew file mode 100644 index 000000000..2c594f562 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/ooo2535-1-WW2.doc diff --git a/sw/qa/core/data/ww5/pass/ooo37322-1-WW2.doc b/sw/qa/core/data/ww5/pass/ooo37322-1-WW2.doc Binary files differnew file mode 100644 index 000000000..fd64eeed2 --- /dev/null +++ b/sw/qa/core/data/ww5/pass/ooo37322-1-WW2.doc diff --git a/sw/qa/core/data/ww5/pass/ooo40683-1-WW1.doc b/sw/qa/core/data/ww5/pass/ooo40683-1-WW1.doc Binary files differnew file mode 100644 index 000000000..af63daa0c --- /dev/null +++ b/sw/qa/core/data/ww5/pass/ooo40683-1-WW1.doc diff --git a/sw/qa/core/data/ww6/fail/.gitignore b/sw/qa/core/data/ww6/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww6/fail/.gitignore diff --git a/sw/qa/core/data/ww6/fail/ofz45140-1.doc b/sw/qa/core/data/ww6/fail/ofz45140-1.doc Binary files differnew file mode 100644 index 000000000..59538b13e --- /dev/null +++ b/sw/qa/core/data/ww6/fail/ofz45140-1.doc diff --git a/sw/qa/core/data/ww6/indeterminate/.gitignore b/sw/qa/core/data/ww6/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww6/indeterminate/.gitignore diff --git a/sw/qa/core/data/ww6/pass/.gitignore b/sw/qa/core/data/ww6/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww6/pass/.gitignore diff --git a/sw/qa/core/data/ww6/pass/crash-1.doc b/sw/qa/core/data/ww6/pass/crash-1.doc Binary files differnew file mode 100644 index 000000000..3c6f684e8 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-1.doc diff --git a/sw/qa/core/data/ww6/pass/crash-2.doc b/sw/qa/core/data/ww6/pass/crash-2.doc Binary files differnew file mode 100644 index 000000000..f155e973f --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-2.doc diff --git a/sw/qa/core/data/ww6/pass/crash-3.doc b/sw/qa/core/data/ww6/pass/crash-3.doc Binary files differnew file mode 100644 index 000000000..8646b7ac5 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-3.doc diff --git a/sw/qa/core/data/ww6/pass/crash-4.doc b/sw/qa/core/data/ww6/pass/crash-4.doc Binary files differnew file mode 100644 index 000000000..5abaecc2b --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-4.doc diff --git a/sw/qa/core/data/ww6/pass/crash-5.doc b/sw/qa/core/data/ww6/pass/crash-5.doc Binary files differnew file mode 100644 index 000000000..f1f4d7808 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-5.doc diff --git a/sw/qa/core/data/ww6/pass/crash-6.doc b/sw/qa/core/data/ww6/pass/crash-6.doc Binary files differnew file mode 100644 index 000000000..08c879176 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-6.doc diff --git a/sw/qa/core/data/ww6/pass/crash-7.doc b/sw/qa/core/data/ww6/pass/crash-7.doc Binary files differnew file mode 100644 index 000000000..5a9dab32b --- /dev/null +++ b/sw/qa/core/data/ww6/pass/crash-7.doc diff --git a/sw/qa/core/data/ww6/pass/hang-1.doc b/sw/qa/core/data/ww6/pass/hang-1.doc Binary files differnew file mode 100644 index 000000000..825283d51 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/hang-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz-redlining-1.doc b/sw/qa/core/data/ww6/pass/ofz-redlining-1.doc Binary files differnew file mode 100644 index 000000000..b2f60eb2a --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz-redlining-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz-trailingpara.doc b/sw/qa/core/data/ww6/pass/ofz-trailingpara.doc Binary files differnew file mode 100644 index 000000000..40c574759 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz-trailingpara.doc diff --git a/sw/qa/core/data/ww6/pass/ofz21168-1.doc b/sw/qa/core/data/ww6/pass/ofz21168-1.doc Binary files differnew file mode 100644 index 000000000..3bafb1d36 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz21168-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz21385-1.doc b/sw/qa/core/data/ww6/pass/ofz21385-1.doc Binary files differnew file mode 100644 index 000000000..311c6ed5f --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz21385-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz34898-1.doc b/sw/qa/core/data/ww6/pass/ofz34898-1.doc Binary files differnew file mode 100644 index 000000000..544dd0d55 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz34898-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz41398-1.doc b/sw/qa/core/data/ww6/pass/ofz41398-1.doc Binary files differnew file mode 100644 index 000000000..34c6e357d --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz41398-1.doc diff --git a/sw/qa/core/data/ww6/pass/ofz42330-1.doc b/sw/qa/core/data/ww6/pass/ofz42330-1.doc Binary files differnew file mode 100644 index 000000000..a1cd04f53 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ofz42330-1.doc diff --git a/sw/qa/core/data/ww6/pass/ooo17498-1.doc b/sw/qa/core/data/ww6/pass/ooo17498-1.doc Binary files differnew file mode 100644 index 000000000..258c6ff63 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ooo17498-1.doc diff --git a/sw/qa/core/data/ww6/pass/ooo17498-2.doc b/sw/qa/core/data/ww6/pass/ooo17498-2.doc Binary files differnew file mode 100644 index 000000000..9955f7820 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ooo17498-2.doc diff --git a/sw/qa/core/data/ww6/pass/ooo17498-3.doc b/sw/qa/core/data/ww6/pass/ooo17498-3.doc Binary files differnew file mode 100644 index 000000000..c0db457ca --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ooo17498-3.doc diff --git a/sw/qa/core/data/ww6/pass/ooo17498-4.doc b/sw/qa/core/data/ww6/pass/ooo17498-4.doc Binary files differnew file mode 100644 index 000000000..be0df8195 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ooo17498-4.doc diff --git a/sw/qa/core/data/ww6/pass/ooo8726-1.doc b/sw/qa/core/data/ww6/pass/ooo8726-1.doc Binary files differnew file mode 100644 index 000000000..e78dab155 --- /dev/null +++ b/sw/qa/core/data/ww6/pass/ooo8726-1.doc diff --git a/sw/qa/core/data/ww8/fail/.gitignore b/sw/qa/core/data/ww8/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww8/fail/.gitignore diff --git a/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc b/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc Binary files differnew file mode 100644 index 000000000..a1f5b7668 --- /dev/null +++ b/sw/qa/core/data/ww8/fail/CVE-2005-0941-1.doc diff --git a/sw/qa/core/data/ww8/fail/CVE-2006-2389-1.doc b/sw/qa/core/data/ww8/fail/CVE-2006-2389-1.doc Binary files differnew file mode 100644 index 000000000..a99da57e8 --- /dev/null +++ b/sw/qa/core/data/ww8/fail/CVE-2006-2389-1.doc diff --git a/sw/qa/core/data/ww8/fail/CVE-2008-0320-1.doc b/sw/qa/core/data/ww8/fail/CVE-2008-0320-1.doc Binary files differnew file mode 100644 index 000000000..5c6d351f2 --- /dev/null +++ b/sw/qa/core/data/ww8/fail/CVE-2008-0320-1.doc diff --git a/sw/qa/core/data/ww8/fail/forcepoint-44.doc b/sw/qa/core/data/ww8/fail/forcepoint-44.doc Binary files differnew file mode 100644 index 000000000..100422a22 --- /dev/null +++ b/sw/qa/core/data/ww8/fail/forcepoint-44.doc diff --git a/sw/qa/core/data/ww8/fail/hang-2.doc b/sw/qa/core/data/ww8/fail/hang-2.doc Binary files differnew file mode 100644 index 000000000..a48b521ae --- /dev/null +++ b/sw/qa/core/data/ww8/fail/hang-2.doc diff --git a/sw/qa/core/data/ww8/fail/redline-1.doc b/sw/qa/core/data/ww8/fail/redline-1.doc Binary files differnew file mode 100644 index 000000000..86c967314 --- /dev/null +++ b/sw/qa/core/data/ww8/fail/redline-1.doc diff --git a/sw/qa/core/data/ww8/indeterminate/.gitignore b/sw/qa/core/data/ww8/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww8/indeterminate/.gitignore diff --git a/sw/qa/core/data/ww8/pass/.gitignore b/sw/qa/core/data/ww8/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/ww8/pass/.gitignore diff --git a/sw/qa/core/data/ww8/pass/CVE-2003-0820-1.doc b/sw/qa/core/data/ww8/pass/CVE-2003-0820-1.doc Binary files differnew file mode 100644 index 000000000..b3466d280 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2003-0820-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2006-3493-1.doc b/sw/qa/core/data/ww8/pass/CVE-2006-3493-1.doc Binary files differnew file mode 100644 index 000000000..4623e3c19 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2006-3493-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2006-6561-1.doc b/sw/qa/core/data/ww8/pass/CVE-2006-6561-1.doc Binary files differnew file mode 100644 index 000000000..390a6634d --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2006-6561-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2006-6628-1.doc b/sw/qa/core/data/ww8/pass/CVE-2006-6628-1.doc Binary files differnew file mode 100644 index 000000000..390a6634d --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2006-6628-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2007-1347-1.doc b/sw/qa/core/data/ww8/pass/CVE-2007-1347-1.doc Binary files differnew file mode 100644 index 000000000..dabcf3fba --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2007-1347-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2008-2752-1.doc b/sw/qa/core/data/ww8/pass/CVE-2008-2752-1.doc Binary files differnew file mode 100644 index 000000000..20c40a840 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2008-2752-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2008-2752-2.doc b/sw/qa/core/data/ww8/pass/CVE-2008-2752-2.doc Binary files differnew file mode 100644 index 000000000..569967ef9 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2008-2752-2.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2008-2752-3.doc b/sw/qa/core/data/ww8/pass/CVE-2008-2752-3.doc Binary files differnew file mode 100644 index 000000000..3fe55f6db --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2008-2752-3.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2008-2752-4.doc b/sw/qa/core/data/ww8/pass/CVE-2008-2752-4.doc Binary files differnew file mode 100644 index 000000000..1bd549907 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2008-2752-4.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2008-4841-1.doc b/sw/qa/core/data/ww8/pass/CVE-2008-4841-1.doc Binary files differnew file mode 100644 index 000000000..37b994534 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2008-4841-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-0200-1.doc b/sw/qa/core/data/ww8/pass/CVE-2009-0200-1.doc Binary files differnew file mode 100644 index 000000000..6b9fb25f7 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-0200-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-0201-1.doc b/sw/qa/core/data/ww8/pass/CVE-2009-0201-1.doc Binary files differnew file mode 100644 index 000000000..462b17bef --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-0201-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-0259-1.doc b/sw/qa/core/data/ww8/pass/CVE-2009-0259-1.doc Binary files differnew file mode 100644 index 000000000..37b994534 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-0259-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-3301-1.doc b/sw/qa/core/data/ww8/pass/CVE-2009-3301-1.doc Binary files differnew file mode 100644 index 000000000..8351c834c --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-3301-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-3302-1.doc b/sw/qa/core/data/ww8/pass/CVE-2009-3302-1.doc Binary files differnew file mode 100644 index 000000000..8351c834c --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-3302-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2009-3302-2.doc b/sw/qa/core/data/ww8/pass/CVE-2009-3302-2.doc Binary files differnew file mode 100644 index 000000000..f8181f3db --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2009-3302-2.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2010-3200-1.doc b/sw/qa/core/data/ww8/pass/CVE-2010-3200-1.doc Binary files differnew file mode 100644 index 000000000..4bdb0532a --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2010-3200-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2010-3453-1.doc b/sw/qa/core/data/ww8/pass/CVE-2010-3453-1.doc Binary files differnew file mode 100644 index 000000000..62dacdc29 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2010-3453-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2010-3454-1.doc b/sw/qa/core/data/ww8/pass/CVE-2010-3454-1.doc Binary files differnew file mode 100644 index 000000000..9bbadc094 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2010-3454-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2012-4886-1.doc b/sw/qa/core/data/ww8/pass/CVE-2012-4886-1.doc Binary files differnew file mode 100644 index 000000000..609e8f68d --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2012-4886-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2014-6356-1.doc b/sw/qa/core/data/ww8/pass/CVE-2014-6356-1.doc Binary files differnew file mode 100644 index 000000000..a28729498 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2014-6356-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2014-6364.doc b/sw/qa/core/data/ww8/pass/CVE-2014-6364.doc Binary files differnew file mode 100644 index 000000000..14ac41740 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2014-6364.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-0064-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-0064-1.doc Binary files differnew file mode 100644 index 000000000..21263d591 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-0064-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-0065-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-0065-1.doc Binary files differnew file mode 100644 index 000000000..e3c9640b9 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-0065-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-0097-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-0097-1.doc Binary files differnew file mode 100644 index 000000000..7c893da4b --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-0097-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-2380-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-2380-1.doc Binary files differnew file mode 100644 index 000000000..cf1567806 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-2380-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-2431-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-2431-1.doc Binary files differnew file mode 100644 index 000000000..05582e26a --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-2431-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2015-2467-1.doc b/sw/qa/core/data/ww8/pass/CVE-2015-2467-1.doc Binary files differnew file mode 100644 index 000000000..a8f0f2633 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2015-2467-1.doc diff --git a/sw/qa/core/data/ww8/pass/CVE-2016-3133-1.doc b/sw/qa/core/data/ww8/pass/CVE-2016-3133-1.doc Binary files differnew file mode 100644 index 000000000..2d23eefa9 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/CVE-2016-3133-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-14092-1.doc b/sw/qa/core/data/ww8/pass/EDB-14092-1.doc Binary files differnew file mode 100644 index 000000000..a9caf97f7 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-14092-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-18952-1.doc b/sw/qa/core/data/ww8/pass/EDB-18952-1.doc Binary files differnew file mode 100644 index 000000000..505eb1d80 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-18952-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-22215-1.doc b/sw/qa/core/data/ww8/pass/EDB-22215-1.doc Binary files differnew file mode 100644 index 000000000..f4429f605 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-22215-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-37909-1.doc b/sw/qa/core/data/ww8/pass/EDB-37909-1.doc Binary files differnew file mode 100644 index 000000000..a51a985ad --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-37909-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-37910-1.doc b/sw/qa/core/data/ww8/pass/EDB-37910-1.doc Binary files differnew file mode 100644 index 000000000..6ed791231 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-37910-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-37924-1.doc b/sw/qa/core/data/ww8/pass/EDB-37924-1.doc Binary files differnew file mode 100644 index 000000000..39545b5ca --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-37924-1.doc diff --git a/sw/qa/core/data/ww8/pass/EDB-39396-1.doc b/sw/qa/core/data/ww8/pass/EDB-39396-1.doc Binary files differnew file mode 100644 index 000000000..ae7c7ae7c --- /dev/null +++ b/sw/qa/core/data/ww8/pass/EDB-39396-1.doc diff --git a/sw/qa/core/data/ww8/pass/crash-1.doc b/sw/qa/core/data/ww8/pass/crash-1.doc Binary files differnew file mode 100644 index 000000000..9f6b25348 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/crash-1.doc diff --git a/sw/qa/core/data/ww8/pass/crash-2.doc b/sw/qa/core/data/ww8/pass/crash-2.doc Binary files differnew file mode 100644 index 000000000..452e21e51 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/crash-2.doc diff --git a/sw/qa/core/data/ww8/pass/crash-3.doc b/sw/qa/core/data/ww8/pass/crash-3.doc Binary files differnew file mode 100644 index 000000000..d36afef50 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/crash-3.doc diff --git a/sw/qa/core/data/ww8/pass/crash-4.doc b/sw/qa/core/data/ww8/pass/crash-4.doc Binary files differnew file mode 100644 index 000000000..8658e0eea --- /dev/null +++ b/sw/qa/core/data/ww8/pass/crash-4.doc diff --git a/sw/qa/core/data/ww8/pass/fdo40686-1.doc b/sw/qa/core/data/ww8/pass/fdo40686-1.doc Binary files differnew file mode 100644 index 000000000..bb0fd5927 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/fdo40686-1.doc diff --git a/sw/qa/core/data/ww8/pass/fdo66692-2.doc b/sw/qa/core/data/ww8/pass/fdo66692-2.doc Binary files differnew file mode 100644 index 000000000..5042eeeb2 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/fdo66692-2.doc diff --git a/sw/qa/core/data/ww8/pass/forcepoint-layout-1.doc b/sw/qa/core/data/ww8/pass/forcepoint-layout-1.doc Binary files differnew file mode 100644 index 000000000..37801a9b1 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/forcepoint-layout-1.doc diff --git a/sw/qa/core/data/ww8/pass/forcepoint50-grfanchor-1.doc b/sw/qa/core/data/ww8/pass/forcepoint50-grfanchor-1.doc Binary files differnew file mode 100644 index 000000000..91ee6b58f --- /dev/null +++ b/sw/qa/core/data/ww8/pass/forcepoint50-grfanchor-1.doc diff --git a/sw/qa/core/data/ww8/pass/forcepoint50-rows-1.doc b/sw/qa/core/data/ww8/pass/forcepoint50-rows-1.doc Binary files differnew file mode 100644 index 000000000..e91f9dd32 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/forcepoint50-rows-1.doc diff --git a/sw/qa/core/data/ww8/pass/hang-1.doc b/sw/qa/core/data/ww8/pass/hang-1.doc Binary files differnew file mode 100644 index 000000000..8d68bbb12 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-1.doc diff --git a/sw/qa/core/data/ww8/pass/hang-2.doc b/sw/qa/core/data/ww8/pass/hang-2.doc Binary files differnew file mode 100644 index 000000000..6940c89e1 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-2.doc diff --git a/sw/qa/core/data/ww8/pass/hang-3.doc b/sw/qa/core/data/ww8/pass/hang-3.doc Binary files differnew file mode 100644 index 000000000..4188b801a --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-3.doc diff --git a/sw/qa/core/data/ww8/pass/hang-4.doc b/sw/qa/core/data/ww8/pass/hang-4.doc Binary files differnew file mode 100644 index 000000000..b7fd04012 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-4.doc diff --git a/sw/qa/core/data/ww8/pass/hang-5.doc b/sw/qa/core/data/ww8/pass/hang-5.doc Binary files differnew file mode 100644 index 000000000..c9d56711a --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-5.doc diff --git a/sw/qa/core/data/ww8/pass/hang-6.doc b/sw/qa/core/data/ww8/pass/hang-6.doc Binary files differnew file mode 100644 index 000000000..48293c5fa --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-6.doc diff --git a/sw/qa/core/data/ww8/pass/hang-7.doc b/sw/qa/core/data/ww8/pass/hang-7.doc Binary files differnew file mode 100644 index 000000000..a52a452fe --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-7.doc diff --git a/sw/qa/core/data/ww8/pass/hang-8.doc b/sw/qa/core/data/ww8/pass/hang-8.doc Binary files differnew file mode 100644 index 000000000..4f0e30ecc --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-8.doc diff --git a/sw/qa/core/data/ww8/pass/hang-9.doc b/sw/qa/core/data/ww8/pass/hang-9.doc Binary files differnew file mode 100644 index 000000000..4e9e4120f --- /dev/null +++ b/sw/qa/core/data/ww8/pass/hang-9.doc diff --git a/sw/qa/core/data/ww8/pass/ofz18414-1.doc b/sw/qa/core/data/ww8/pass/ofz18414-1.doc Binary files differnew file mode 100644 index 000000000..84204d197 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz18414-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz18534-1.doc b/sw/qa/core/data/ww8/pass/ofz18534-1.doc Binary files differnew file mode 100644 index 000000000..6b50fdd6d --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz18534-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz18554-1.doc b/sw/qa/core/data/ww8/pass/ofz18554-1.doc Binary files differnew file mode 100644 index 000000000..0a6b81d78 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz18554-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz19065.doc b/sw/qa/core/data/ww8/pass/ofz19065.doc Binary files differnew file mode 100644 index 000000000..a242f13bf --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz19065.doc diff --git a/sw/qa/core/data/ww8/pass/ofz34749-1.doc b/sw/qa/core/data/ww8/pass/ofz34749-1.doc Binary files differnew file mode 100644 index 000000000..d657a71b5 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz34749-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz38011-1.doc b/sw/qa/core/data/ww8/pass/ofz38011-1.doc Binary files differnew file mode 100644 index 000000000..8ef58ca53 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz38011-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz46457-1.doc b/sw/qa/core/data/ww8/pass/ofz46457-1.doc Binary files differnew file mode 100644 index 000000000..c986678b5 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz46457-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz47205-1.doc b/sw/qa/core/data/ww8/pass/ofz47205-1.doc Binary files differnew file mode 100644 index 000000000..acbb4830d --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz47205-1.doc diff --git a/sw/qa/core/data/ww8/pass/ofz7322-1.doc b/sw/qa/core/data/ww8/pass/ofz7322-1.doc Binary files differnew file mode 100644 index 000000000..5f4858849 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/ofz7322-1.doc diff --git a/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc b/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc Binary files differnew file mode 100644 index 000000000..9fca8ef04 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc diff --git a/sw/qa/core/data/ww8/pass/tdf57532-1.doc b/sw/qa/core/data/ww8/pass/tdf57532-1.doc Binary files differnew file mode 100644 index 000000000..70068fe10 --- /dev/null +++ b/sw/qa/core/data/ww8/pass/tdf57532-1.doc diff --git a/sw/qa/core/data/xml/fail/.gitignore b/sw/qa/core/data/xml/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/xml/fail/.gitignore diff --git a/sw/qa/core/data/xml/fail/CVE-2006-3117-1.sxw b/sw/qa/core/data/xml/fail/CVE-2006-3117-1.sxw Binary files differnew file mode 100644 index 000000000..1f4d4d3b2 --- /dev/null +++ b/sw/qa/core/data/xml/fail/CVE-2006-3117-1.sxw diff --git a/sw/qa/core/data/xml/fail/ooo71273-1.sxw b/sw/qa/core/data/xml/fail/ooo71273-1.sxw Binary files differnew file mode 100644 index 000000000..5208512aa --- /dev/null +++ b/sw/qa/core/data/xml/fail/ooo71273-1.sxw diff --git a/sw/qa/core/data/xml/indeterminate/.gitignore b/sw/qa/core/data/xml/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/xml/indeterminate/.gitignore diff --git a/sw/qa/core/data/xml/pass/.gitignore b/sw/qa/core/data/xml/pass/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/data/xml/pass/.gitignore diff --git a/sw/qa/core/data/xml/pass/ooo32780-1.sxw b/sw/qa/core/data/xml/pass/ooo32780-1.sxw Binary files differnew file mode 100644 index 000000000..f94656718 --- /dev/null +++ b/sw/qa/core/data/xml/pass/ooo32780-1.sxw diff --git a/sw/qa/core/doc/data/copy-bookmarks.docx b/sw/qa/core/doc/data/copy-bookmarks.docx Binary files differnew file mode 100644 index 000000000..a9bedb487 --- /dev/null +++ b/sw/qa/core/doc/data/copy-bookmarks.docx diff --git a/sw/qa/core/doc/data/locale-independent-template.odt b/sw/qa/core/doc/data/locale-independent-template.odt Binary files differnew file mode 100644 index 000000000..d2a8dc274 --- /dev/null +++ b/sw/qa/core/doc/data/locale-independent-template.odt diff --git a/sw/qa/core/doc/data/num-down-indent.docx b/sw/qa/core/doc/data/num-down-indent.docx Binary files differnew file mode 100644 index 000000000..86621c3cb --- /dev/null +++ b/sw/qa/core/doc/data/num-down-indent.docx diff --git a/sw/qa/core/doc/data/textbox-makeflyframe.docx b/sw/qa/core/doc/data/textbox-makeflyframe.docx Binary files differnew file mode 100644 index 000000000..9e26cda3c --- /dev/null +++ b/sw/qa/core/doc/data/textbox-makeflyframe.docx diff --git a/sw/qa/core/doc/data/textbox-textrotateangle.odt b/sw/qa/core/doc/data/textbox-textrotateangle.odt Binary files differnew file mode 100644 index 000000000..2ce4c3e0b --- /dev/null +++ b/sw/qa/core/doc/data/textbox-textrotateangle.odt diff --git a/sw/qa/core/doc/data/textbox-zorder.docx b/sw/qa/core/doc/data/textbox-zorder.docx Binary files differnew file mode 100644 index 000000000..d5263f8bb --- /dev/null +++ b/sw/qa/core/doc/data/textbox-zorder.docx diff --git a/sw/qa/core/doc/doc.cxx b/sw/qa/core/doc/doc.cxx new file mode 100644 index 000000000..28fbe3fea --- /dev/null +++ b/sw/qa/core/doc/doc.cxx @@ -0,0 +1,419 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/view/XSelectionSupplier.hpp> + +#include <comphelper/classids.hxx> +#include <tools/globname.hxx> +#include <svtools/embedhlp.hxx> +#include <editeng/frmdiritem.hxx> +#include <vcl/errinf.hxx> +#include <vcl/event.hxx> +#include <editeng/langitem.hxx> +#include <sfx2/viewfrm.hxx> +#include <sfx2/dispatch.hxx> +#include <vcl/scheduler.hxx> +#include <comphelper/propertyvalue.hxx> + +#include <wrtsh.hxx> +#include <fmtanchr.hxx> +#include <frameformats.hxx> +#include <docsh.hxx> +#include <edtwin.hxx> +#include <view.hxx> +#include <ndtxt.hxx> +#include <swdtflvr.hxx> +#include <cmdid.h> +#include <unotxdoc.hxx> +#include <UndoManager.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/doc/data/"; + +/// Covers sw/source/core/doc/ fixes. +class SwCoreDocTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testMathInsertAnchorType) +{ + // Given an empty document. + SwDoc* pDoc = createSwDoc(); + + // When inserting an a math object. + SwWrtShell* pShell = pDoc->GetDocShell()->GetWrtShell(); + SvGlobalName aGlobalName(SO3_SM_CLASSID); + pShell->InsertObject(svt::EmbeddedObjectRef(), &aGlobalName); + + // Then the anchor type should be as-char. + SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rFormats.size()); + const SwFrameFormat& rFormat = *rFormats[0]; + const SwFormatAnchor& rAnchor = rFormat.GetAnchor(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 4 + // i.e. the anchor type was at-char, not as-char. + CPPUNIT_ASSERT_EQUAL(RndStdIds::FLY_AS_CHAR, rAnchor.GetAnchorId()); + ErrorRegistry::Reset(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testTextboxTextRotateAngle) +{ + // Check the writing direction of the only TextFrame in the document. + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "textbox-textrotateangle.odt"); + SwFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFrameFormats.size()); + CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_DRAWFRMFMT), rFrameFormats[0]->Which()); + CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_FLYFRMFMT), rFrameFormats[1]->Which()); + SvxFrameDirection eActual = rFrameFormats[1]->GetAttrSet().GetItem(RES_FRAMEDIR)->GetValue(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 5 (btlr) + // - Actual : 0 (lrtb) + // i.e. the writing direction was in the ODT file, but it was lost on import in the textbox + // case. + CPPUNIT_ASSERT_EQUAL(SvxFrameDirection::Vertical_LR_BT, eActual); + ErrorRegistry::Reset(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testNumDownIndent) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "num-down-indent.docx"); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + pWrtShell->Down(/*bSelect=*/false); + SwEditWin& rEditWin = pDocShell->GetView()->GetEditWin(); + KeyEvent aKeyEvent(0, KEY_TAB); + rEditWin.KeyInput(aKeyEvent); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: \tB + // - Actual : B + // i.e. pressing <tab> at the start of the paragraph did not change the layout. + CPPUNIT_ASSERT_EQUAL(OUString("\tB"), pTextNode->GetText()); + ErrorRegistry::Reset(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testLocaleIndependentTemplate) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "locale-independent-template.odt"); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + SfxItemSet aSet(pWrtShell->GetAttrPool(), svl::Items<RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE>); + pWrtShell->GetCurAttr(aSet); + const SvxLanguageItem* pItem = aSet.GetItem(RES_CHRATR_LANGUAGE); + CPPUNIT_ASSERT(pItem); + LanguageType eLang = pItem->GetValue(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1033 (LANGUAGE_ENGLISH_US) + // - Actual : 1023 (LANGUAGE_DONTKNOW) + // i.e. the status bar and the format -> character dialog didn't fall back to the UI locale when + // an explicit language was not set for the document. + CPPUNIT_ASSERT_EQUAL(LANGUAGE_ENGLISH_US, eLang); + ErrorRegistry::Reset(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testTextBoxZOrder) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "textbox-zorder.docx"); + SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), rFormats.size()); + const SwFrameFormat* pEllipse = rFormats[2]; + const SdrObject* pEllipseShape = pEllipse->FindRealSdrObject(); + // Make sure we test the right shape. + CPPUNIT_ASSERT_EQUAL(OUString("Shape3"), pEllipseShape->GetName()); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2 + // - Actual : 1 + // i.e. the ellipse was under the frame of the shape-frame pair, not on top of it. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(2), pEllipseShape->GetOrdNum()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testTextBoxMakeFlyFrame) +{ + // Given a document with an as-char textbox (as-char draw format + at-char fly format): + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "textbox-makeflyframe.docx"); + + // When cutting the textbox and pasting it to a new document: + SwView* pView = pDoc->GetDocShell()->GetView(); + pView->GetViewFrame()->GetDispatcher()->Execute(FN_CNTNT_TO_NEXT_FRAME, SfxCallMode::SYNCHRON); + pView->StopShellTimer(); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell); + pTransfer->Cut(); + TransferableDataHelper aHelper(pTransfer); + uno::Reference<lang::XComponent> xDoc2 + = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument", {}); + SwXTextDocument* pTextDoc2 = dynamic_cast<SwXTextDocument*>(xDoc2.get()); + SwDocShell* pDocShell2 = pTextDoc2->GetDocShell(); + SwWrtShell* pWrtShell2 = pDocShell2->GetWrtShell(); + SwTransferable::Paste(*pWrtShell2, aHelper); + + // Then make sure its fly frame is created. + mxComponent->dispose(); + mxComponent = xDoc2; + xmlDocUniquePtr pLayout = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed, because the first text + // frame in the body frame had an SwAnchoredDrawObject anchored to it, but not a fly frame, so + // a blank square was painted, not the image. + assertXPath(pLayout, "/root/page/body/txt/anchored/fly", 1); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testIMEGrouping) +{ +// TODO figure out why the ext text input in this test code reaches the wrong window on +// non-headless. +#if !defined MACOSX && !defined _WIN32 + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + // Make sure no idle is in action, so the ExtTextInput events go to SwEditWin. + Scheduler::ProcessEventsToIdle(); + + // When pressing two keys via IME: + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwEditWin& rEditWin = pDocShell->GetView()->GetEditWin(); + rEditWin.PostExtTextInputEvent(VclEventId::ExtTextInput, "a"); + rEditWin.PostExtTextInputEvent(VclEventId::EndExtTextInput, ""); + rEditWin.PostExtTextInputEvent(VclEventId::ExtTextInput, "b"); + rEditWin.PostExtTextInputEvent(VclEventId::EndExtTextInput, ""); + + // Then make sure that gets grouped together to a single undo action: + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + CPPUNIT_ASSERT_EQUAL(OUString("ab"), pTextNode->GetText()); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 2 + // i.e. 2 subsequent IME events got their own undo actions. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pDoc->GetUndoManager().GetUndoActionCount()); +#endif +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testImageHyperlinkStyle) +{ + // Given a document with an image with a hyperlink: + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xImage( + xFactory->createInstance("com.sun.star.text.TextGraphicObject"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xImage, /*bAbsorb=*/false); + uno::Reference<beans::XPropertySet> xImageProps(xImage, uno::UNO_QUERY); + OUString aExpected = "http://www.example.com"; + xImageProps->setPropertyValue("HyperLinkURL", uno::Any(aExpected)); + + // When applying a frame style on it: + xImageProps->setPropertyValue("FrameStyleName", uno::Any(OUString("Frame"))); + + // Then make sure that the hyperlink is not lost: + auto aActual = getProperty<OUString>(xImageProps, "HyperLinkURL"); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: http://www.example.com + // - Actual : + // i.e. the link was lost, even if the frame style dialog doesn't allow specifying a link on + // frames. + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testContentControlDelete) +{ + // Given a document with a content control: + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // When deleting the dummy character at the end of the content control: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStt=*/false); + pWrtShell->DelLeft(); + + // Then make sure that we only enter the content control, to be consistent with the start dummy + // character: + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetMark()->nNode.GetNode().GetTextNode(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: ^Atest^A + // - Actual : ^Atest + // i.e. the end dummy character got deleted, but not the first one, which is inconsistent. + CPPUNIT_ASSERT_EQUAL(OUString("\x0001test\x0001"), pTextNode->GetText()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testLinkedStyleDelete) +{ + // Given a document with linked styles: myparastyle is linked to mycharstyle and vica versa: + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xParaStyle( + xFactory->createInstance("com.sun.star.style.ParagraphStyle"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xCharStyle( + xFactory->createInstance("com.sun.star.style.CharacterStyle"), uno::UNO_QUERY); + uno::Reference<container::XNameContainer> xParaStyles(getStyles("ParagraphStyles"), + uno::UNO_QUERY); + xParaStyles->insertByName("myparastyle", uno::Any(xParaStyle)); + uno::Reference<container::XNameContainer> xCharStyles(getStyles("CharacterStyles"), + uno::UNO_QUERY); + xCharStyles->insertByName("mycharstyle", uno::Any(xCharStyle)); + xParaStyle->setPropertyValue("LinkStyle", uno::Any(OUString("mycharstyle"))); + xCharStyle->setPropertyValue("LinkStyle", uno::Any(OUString("myparastyle"))); + + // When deleting the paragraph style (and only that): + xParaStyles->removeByName("myparastyle"); + + // Then make sure we don't crash on save: + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aArgs = { + comphelper::makePropertyValue("FilterName", OUString("writer8")), + }; + xStorable->storeAsURL(maTempFile.GetURL(), aArgs); +} + +namespace +{ +/// This selection listener calls getAnchor() on selection change, which creates UNO cursors and is +/// invoked in the middle of a bookmark deletion. +struct SelectionChangeListener : public cppu::WeakImplHelper<view::XSelectionChangeListener> +{ + uno::Reference<container::XNameAccess> m_xBookmarks; + std::vector<uno::Reference<text::XTextRange>> m_aAnchors; + +public: + SelectionChangeListener(const uno::Reference<container::XNameAccess>& xBookmarks); + // view::XSelectionChangeListener + void SAL_CALL selectionChanged(const lang::EventObject& rEvent) override; + + // lang::XEventListener + void SAL_CALL disposing(const lang::EventObject& rSource) override; +}; +} + +SelectionChangeListener::SelectionChangeListener( + const uno::Reference<container::XNameAccess>& xBookmarks) + : m_xBookmarks(xBookmarks) +{ +} + +void SelectionChangeListener::selectionChanged(const lang::EventObject& /*rEvent*/) +{ + uno::Sequence<OUString> aElementNames = m_xBookmarks->getElementNames(); + for (const auto& rName : aElementNames) + { + uno::Reference<text::XTextContent> xTextContent(m_xBookmarks->getByName(rName), + uno::UNO_QUERY); + m_aAnchors.push_back(xTextContent->getAnchor()); + } +} + +void SelectionChangeListener::disposing(const lang::EventObject& /*rSource*/) {} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testBookmarkDeleteListeners) +{ + // Given a document with 2 bookmarks: + createSwDoc(); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + { + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xBookmark( + xFactory->createInstance("com.sun.star.text.Bookmark"), uno::UNO_QUERY); + uno::Reference<container::XNamed> xBookmarkNamed(xBookmark, uno::UNO_QUERY); + xBookmarkNamed->setName("mybookmark"); + xText->insertTextContent(xCursor, xBookmark, /*bAbsorb=*/true); + } + { + xCursor->gotoEnd(/*bExpand=*/false); + xText->insertString(xCursor, "test2", /*bAbsorb=*/false); + xCursor->goLeft(4, /*bExpand=*/true); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xBookmark( + xFactory->createInstance("com.sun.star.text.Bookmark"), uno::UNO_QUERY); + uno::Reference<container::XNamed> xBookmarkNamed(xBookmark, uno::UNO_QUERY); + xBookmarkNamed->setName("mybookmark2"); + xText->insertTextContent(xCursor, xBookmark, /*bAbsorb=*/true); + } + uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XNameAccess> xBookmarks = xBookmarksSupplier->getBookmarks(); + + // When registering a selection listener that creates uno marks: + uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); + uno::Reference<view::XSelectionSupplier> xController(xModel->getCurrentController(), + uno::UNO_QUERY); + xController->addSelectionChangeListener(new SelectionChangeListener(xBookmarks)); + + // Then make sure that deleting a bookmark doesn't crash: + uno::Reference<lang::XComponent> xBookmark(xBookmarks->getByName("mybookmark2"), + uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have crashed, an invalidated iterator + // was used with erase(). + xBookmark->dispose(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testCopyBookmarks) +{ + // Given a document with a bookmark in a header that is linked later: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "copy-bookmarks.docx"); + + // When checking the # of non-copy bookmarks in the resulting doc model: + sal_Int32 nActual = 0; + for (auto it = pDoc->getIDocumentMarkAccess()->getBookmarksBegin(); + it != pDoc->getIDocumentMarkAccess()->getBookmarksEnd(); ++it) + { + if ((*it)->GetName().indexOf("Copy") == -1) + { + ++nActual; + } + } + + // Then make sure we have a single non-copy bookmark, with no duplications: + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 2 + // i.e. the 2nd header had a duplicated bookmark without "Copy" in its name. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nActual); + + // Also, when checking the # of non-copy images in the resulting doc model: + nActual = 0; + SwFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats(); + for (size_t i = 0; i < rFrameFormats.size(); ++i) + { + if (rFrameFormats[i]->GetName().indexOf("Copy") == -1) + { + ++nActual; + } + } + + // Then make sure we have a single non-copy image, with no duplications: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 2 + // i.e. the 2nd header had a duplicated image without "Copy" in its name. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nActual); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/docnode/data/redline-ends-before-toc.docx b/sw/qa/core/docnode/data/redline-ends-before-toc.docx Binary files differnew file mode 100644 index 000000000..7696b3532 --- /dev/null +++ b/sw/qa/core/docnode/data/redline-ends-before-toc.docx diff --git a/sw/qa/core/docnode/data/tdf150086.docx b/sw/qa/core/docnode/data/tdf150086.docx Binary files differnew file mode 100644 index 000000000..063e68df6 --- /dev/null +++ b/sw/qa/core/docnode/data/tdf150086.docx diff --git a/sw/qa/core/docnode/docnode.cxx b/sw/qa/core/docnode/docnode.cxx new file mode 100644 index 000000000..4967b95d9 --- /dev/null +++ b/sw/qa/core/docnode/docnode.cxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <IDocumentRedlineAccess.hxx> +#include <redline.hxx> +#include <doc.hxx> +#include <docary.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/docnode/data/"; + +/// Covers sw/source/core/docnode/ fixes. +class Test : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(Test, testRedlineEndsBeforeToC) +{ + // Load a document where a delete redline ends right before a ToC, then redlines are hidden at a + // layout level. + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "redline-ends-before-toc.docx"); + const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); + // Without the accompanying fix in place, this test would have resulted in an assertion failure + // in InsertCnt_(), because the start of the section was hidden, but not its end. + CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(2), rTable.size()); + + // The redline contained the newline, too + CPPUNIT_ASSERT_EQUAL(OUString("<add-table-of-content>"), rTable[0]->GetText()); +} + +CPPUNIT_TEST_FIXTURE(Test, testTdf150086) +{ + // Load a document where an insert redline ends right before a ToC + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf150086.docx"); + const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); + CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(8), rTable.size()); + + // This was "Conte" (stripped redline) + CPPUNIT_ASSERT_EQUAL(OUString("Content\n"), rTable[6]->GetText()); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/draw/data/as-char-textbox.docx b/sw/qa/core/draw/data/as-char-textbox.docx Binary files differnew file mode 100644 index 000000000..3edf7c632 --- /dev/null +++ b/sw/qa/core/draw/data/as-char-textbox.docx diff --git a/sw/qa/core/draw/data/tdf107727_FrameBorder.odt b/sw/qa/core/draw/data/tdf107727_FrameBorder.odt Binary files differnew file mode 100644 index 000000000..6b7bc3a37 --- /dev/null +++ b/sw/qa/core/draw/data/tdf107727_FrameBorder.odt diff --git a/sw/qa/core/draw/data/textbox-undo-ordnum.docx b/sw/qa/core/draw/data/textbox-undo-ordnum.docx Binary files differnew file mode 100644 index 000000000..96b009732 --- /dev/null +++ b/sw/qa/core/draw/data/textbox-undo-ordnum.docx diff --git a/sw/qa/core/draw/draw.cxx b/sw/qa/core/draw/draw.cxx new file mode 100644 index 000000000..c2514808f --- /dev/null +++ b/sw/qa/core/draw/draw.cxx @@ -0,0 +1,146 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <svx/svdpage.hxx> +#include <unotools/mediadescriptor.hxx> + +#include <IDocumentDrawModelAccess.hxx> +#include <docsh.hxx> +#include <drawdoc.hxx> +#include <wrtsh.hxx> +#include <frameformats.hxx> +#include <textboxhelper.hxx> + +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/table/BorderLine2.hpp> +#include <com/sun/star/text/XTextFramesSupplier.hpp> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/draw/data/"; + +/// Covers sw/source/core/draw/ fixes. +class SwCoreDrawTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreDrawTest, testTextboxDeleteAsChar) +{ + // Load a document with an as-char shape in it that has a textbox and an image in it. + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "as-char-textbox.docx"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + sal_Int32 nActual = pPage->GetObjCount(); + // 3 objects on the draw page: a shape + fly frame pair and a Writer image. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), nActual); + + // Select the shape of the textbox and delete it. + SdrObject* pObject = pPage->GetObj(0); + pWrtShell->SelectObj(Point(), 0, pObject); + pWrtShell->DelSelectedObj(); + nActual = pPage->GetObjCount(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 + // - Actual : 2 + // i.e. the fly frame of the shape and the inner Writer image was not deleted. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), nActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreDrawTest, testTextboxUndoOrdNum) +{ + // Given a document with 5 frame formats: + // - picture + // - draw format + fly format and a picture in it + // - picture + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "textbox-undo-ordnum.docx"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats(); + // Test the state before del + undo. + for (const auto& pFormat : rFormats) + { + const SwFrameFormat* pFlyFormat + = SwTextBoxHelper::getOtherTextBoxFormat(pFormat, RES_DRAWFRMFMT); + if (!pFlyFormat) + { + continue; + } + + sal_Int32 nDrawOrdNum = pFormat->FindRealSdrObject()->GetOrdNum(); + sal_Int32 nFlyOrdNum = pFlyFormat->FindRealSdrObject()->GetOrdNum(); + CPPUNIT_ASSERT_EQUAL(nDrawOrdNum + 1, nFlyOrdNum); + } + + // When selecting the first page, deleting the selection and undoing: + pWrtShell->Down(true, 3); + pWrtShell->DelLeft(); + pWrtShell->Undo(); + + // Then the z-order of the fly format should be still the z-order of the draw format + 1, when + // the fly and draw formats form a textbox pair. + for (const auto& pFormat : rFormats) + { + const SwFrameFormat* pFlyFormat + = SwTextBoxHelper::getOtherTextBoxFormat(pFormat, RES_DRAWFRMFMT); + if (!pFlyFormat) + { + continue; + } + + sal_Int32 nDrawOrdNum = pFormat->FindRealSdrObject()->GetOrdNum(); + sal_Int32 nFlyOrdNum = pFlyFormat->FindRealSdrObject()->GetOrdNum(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4 + // - Actual : 2 + // i.e. the fly format was behind the draw format, not visible. + CPPUNIT_ASSERT_EQUAL(nDrawOrdNum + 1, nFlyOrdNum); + } +} + +CPPUNIT_TEST_FIXTURE(SwCoreDrawTest, testTdf107727FrameBorder) +{ + // Load a document with a textframe without border, one with only left border + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf107727_FrameBorder.odt"; + mxComponent = loadFromDesktop(aURL, "com.sun.star.text.TextDocument", {}); + + // Export to RTF and reload + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + utl::MediaDescriptor aMediaDescriptor; + aMediaDescriptor["FilterName"] <<= OUString("Rich Text Format"); + xStorable->storeToURL(aTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); + mxComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument", {}); + + // Get frame without border and inspect it. + uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), + uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFrame0(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + auto aBorder = getProperty<table::BorderLine2>(xFrame0, "LeftBorder"); + // fo:border="none" is not available via API, and aBorder.LineWidth has wrong value (why?). + sal_uInt32 nBorderWidth + = aBorder.OuterLineWidth + aBorder.InnerLineWidth + aBorder.LineDistance; + // Without patch it failed with Expected 0, Actual 26 + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(0), nBorderWidth); + + // Get frame with left border and inspect it. + uno::Reference<beans::XPropertySet> xFrame1(xIndexAccess->getByIndex(1), uno::UNO_QUERY); + aBorder = getProperty<table::BorderLine2>(xFrame1, "LeftBorder"); + // Without patch it failed with Expected 127, Actual 26. Default border width was used. + nBorderWidth = aBorder.OuterLineWidth + aBorder.InnerLineWidth + aBorder.LineDistance; + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(127), nBorderWidth); + // Without patch it failed with Expected Color: R:0 G:0 B:255 A:0, Actual Color: R:0 G:0 B:0 A:0. + // Default border color was used. + CPPUNIT_ASSERT_EQUAL(Color(0x0000ff), Color(ColorTransparency, aBorder.Color)); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/edit/data/redline-hidden.fodt b/sw/qa/core/edit/data/redline-hidden.fodt new file mode 100644 index 000000000..10355e3ac --- /dev/null +++ b/sw/qa/core/edit/data/redline-hidden.fodt @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:settings> + <config:config-item-set config:name="ooo:view-settings"> + <config:config-item config:name="ShowRedlineChanges" config:type="boolean">false</config:config-item> + </config:config-item-set> + </office:settings> + <office:automatic-styles> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm"/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"> + </style:master-page> + </office:master-styles> + <office:body> + <office:text> + <text:tracked-changes text:track-changes="false"> + <text:changed-region xml:id="ct51730224" text:id="ct51730224"> + <text:insertion> + <office:change-info> + <dc:creator>Creator</dc:creator> + <dc:date>2017-04-27T17:12:10</dc:date> + </office:change-info> + </text:insertion> + </text:changed-region> + </text:tracked-changes> + <text:p><text:change-start text:change-id="ct51730224"/>test<text:change-end text:change-id="ct51730224"/></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/edit/edit.cxx b/sw/qa/core/edit/edit.cxx new file mode 100644 index 000000000..9f0b3d4dd --- /dev/null +++ b/sw/qa/core/edit/edit.cxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <docsh.hxx> +#include <view.hxx> +#include <wrtsh.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/edit/data/"; + +namespace +{ +/// Covers sw/source/core/edit/ fixes. +class Test : public SwModelTestBase +{ +}; +} + +CPPUNIT_TEST_FIXTURE(Test, testRedlineHidden) +{ + // Given a document with ShowRedlineChanges=false: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "redline-hidden.fodt"); + + // When formatting a paragraph by setting the para adjust to center, then make sure setting the + // new item set on the paragraph doesn't crash: + SwView* pView = pDoc->GetDocShell()->GetView(); + SfxItemSet aSet(pView->GetPool(), svl::Items<RES_PARATR_ADJUST, RES_PARATR_ADJUST>); + SvxAdjustItem aItem(SvxAdjust::Center, RES_PARATR_ADJUST); + aSet.Put(aItem); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->SetAttrSet(aSet, SetAttrMode::DEFAULT, nullptr, true); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/sw/qa/core/exportdata/html/fail/.gitignore b/sw/qa/core/exportdata/html/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/html/fail/.gitignore diff --git a/sw/qa/core/exportdata/html/indeterminate/.gitignore b/sw/qa/core/exportdata/html/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/html/indeterminate/.gitignore diff --git a/sw/qa/core/exportdata/html/pass/cp1000068.odt b/sw/qa/core/exportdata/html/pass/cp1000068.odt Binary files differnew file mode 100644 index 000000000..8ae4ad525 --- /dev/null +++ b/sw/qa/core/exportdata/html/pass/cp1000068.odt diff --git a/sw/qa/core/exportdata/ooxml/fail/.gitignore b/sw/qa/core/exportdata/ooxml/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/fail/.gitignore diff --git a/sw/qa/core/exportdata/ooxml/indeterminate/.gitignore b/sw/qa/core/exportdata/ooxml/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/indeterminate/.gitignore diff --git a/sw/qa/core/exportdata/ooxml/pass/abi9930.odt b/sw/qa/core/exportdata/ooxml/pass/abi9930.odt Binary files differnew file mode 100644 index 000000000..04638df03 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/abi9930.odt diff --git a/sw/qa/core/exportdata/ooxml/pass/sdt-around-float-table.docx b/sw/qa/core/exportdata/ooxml/pass/sdt-around-float-table.docx Binary files differnew file mode 100644 index 000000000..1d57e7b85 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/sdt-around-float-table.docx diff --git a/sw/qa/core/exportdata/ooxml/pass/sdt-before-table.docx b/sw/qa/core/exportdata/ooxml/pass/sdt-before-table.docx Binary files differnew file mode 100644 index 000000000..da51cc798 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/sdt-before-table.docx diff --git a/sw/qa/core/exportdata/ooxml/pass/sdt-in-shape-with-textbox.docx b/sw/qa/core/exportdata/ooxml/pass/sdt-in-shape-with-textbox.docx Binary files differnew file mode 100644 index 000000000..be033f156 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/sdt-in-shape-with-textbox.docx diff --git a/sw/qa/core/exportdata/ooxml/pass/sdt-sectpr.docx b/sw/qa/core/exportdata/ooxml/pass/sdt-sectpr.docx Binary files differnew file mode 100644 index 000000000..334b6e595 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/sdt-sectpr.docx diff --git a/sw/qa/core/exportdata/ooxml/pass/tdf135711.odt b/sw/qa/core/exportdata/ooxml/pass/tdf135711.odt Binary files differnew file mode 100644 index 000000000..7110ce290 --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/tdf135711.odt diff --git a/sw/qa/core/exportdata/ooxml/pass/tdf89191-1.odt b/sw/qa/core/exportdata/ooxml/pass/tdf89191-1.odt Binary files differnew file mode 100644 index 000000000..7ca047dcc --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/tdf89191-1.odt diff --git a/sw/qa/core/exportdata/ooxml/pass/textframe-in-shape.docx b/sw/qa/core/exportdata/ooxml/pass/textframe-in-shape.docx Binary files differnew file mode 100644 index 000000000..23f40f14c --- /dev/null +++ b/sw/qa/core/exportdata/ooxml/pass/textframe-in-shape.docx diff --git a/sw/qa/core/exportdata/rtf/fail/.gitignore b/sw/qa/core/exportdata/rtf/fail/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/rtf/fail/.gitignore diff --git a/sw/qa/core/exportdata/rtf/indeterminate/.gitignore b/sw/qa/core/exportdata/rtf/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/sw/qa/core/exportdata/rtf/indeterminate/.gitignore diff --git a/sw/qa/core/exportdata/rtf/pass/abi10201.rtf b/sw/qa/core/exportdata/rtf/pass/abi10201.rtf new file mode 100644 index 000000000..08cbe0cfe --- /dev/null +++ b/sw/qa/core/exportdata/rtf/pass/abi10201.rtf @@ -0,0 +1,3 @@ +{\rtf1 +{\*\do\dobxpage\dobypara\dodhgt8192\dptxbx\dptxbxmar0\dpx2914\dpy5119\dpxsize6474\dpysize221\dplinehollow0} +} diff --git a/sw/qa/core/exportdata/rtf/pass/abi7407.odt b/sw/qa/core/exportdata/rtf/pass/abi7407.odt Binary files differnew file mode 100644 index 000000000..70bf67756 --- /dev/null +++ b/sw/qa/core/exportdata/rtf/pass/abi7407.odt diff --git a/sw/qa/core/exportdata/rtf/pass/fdo67386.doc b/sw/qa/core/exportdata/rtf/pass/fdo67386.doc Binary files differnew file mode 100644 index 000000000..ecd3d13af --- /dev/null +++ b/sw/qa/core/exportdata/rtf/pass/fdo67386.doc diff --git a/sw/qa/core/exportdata/rtf/pass/fdo70624.odt b/sw/qa/core/exportdata/rtf/pass/fdo70624.odt Binary files differnew file mode 100644 index 000000000..1b177e819 --- /dev/null +++ b/sw/qa/core/exportdata/rtf/pass/fdo70624.odt diff --git a/sw/qa/core/exportdata/rtf/pass/i23357.odt b/sw/qa/core/exportdata/rtf/pass/i23357.odt Binary files differnew file mode 100644 index 000000000..79705fc35 --- /dev/null +++ b/sw/qa/core/exportdata/rtf/pass/i23357.odt diff --git a/sw/qa/core/fields/data/chapter_field_followedby.odt b/sw/qa/core/fields/data/chapter_field_followedby.odt Binary files differnew file mode 100644 index 000000000..b2086f259 --- /dev/null +++ b/sw/qa/core/fields/data/chapter_field_followedby.odt diff --git a/sw/qa/core/fields/data/tdf143424.odt b/sw/qa/core/fields/data/tdf143424.odt Binary files differnew file mode 100644 index 000000000..d485267f1 --- /dev/null +++ b/sw/qa/core/fields/data/tdf143424.odt diff --git a/sw/qa/core/fields/fields.cxx b/sw/qa/core/fields/fields.cxx new file mode 100644 index 000000000..9df1baf12 --- /dev/null +++ b/sw/qa/core/fields/fields.cxx @@ -0,0 +1,138 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextField.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> + +#include <comphelper/propertyvalue.hxx> + +#include <authfld.hxx> +#include <docsh.hxx> +#include <rootfrm.hxx> +#include <wrtsh.hxx> +#include <ndtxt.hxx> + +namespace +{ +/// Covers sw/source/core/fields/ fixes. +class Test : public SwModelTestBase +{ +}; + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/fields/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityTooltip) +{ + // Create a document with a bibliography reference in it. + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("Identifier", OUString("ARJ00")), + comphelper::makePropertyValue("Author", OUString("Ar, J")), + comphelper::makePropertyValue("Title", OUString("mytitle")), + comphelper::makePropertyValue("Year", OUString("2020")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + + // Get the tooltip of the field. + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + SwPaM* pCursor = pWrtShell->GetCursor(); + auto pField = dynamic_cast<SwAuthorityField*>( + SwCursorShell::GetFieldAtCursor(pCursor, /*bIncludeInputFieldAtStart=*/true)); + CPPUNIT_ASSERT(pField); + SwTextNode* pTextNode = pCursor->GetNode().GetTextNode(); + const SwTextAttr* pTextAttr = pTextNode->GetSwpHints().Get(0); + const SwRootFrame* pLayout = pWrtShell->GetLayout(); + OUString aTooltip = pField->GetAuthority(pTextAttr, pLayout); + + // Without the accompanying fix in place, generating this tooltip text was not possible without + // first inserting an empty bibliography table into the document. + CPPUNIT_ASSERT_EQUAL(OUString("ARJ00: Ar, J, mytitle, 2020"), aTooltip); +} + +CPPUNIT_TEST_FIXTURE(Test, testTdf143424) +{ + createSwDoc(DATA_DIRECTORY, "tdf143424.odt"); + + uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xFieldsAccess( + xTextFieldsSupplier->getTextFields()); + uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration()); + + // TODO: I have no idea why fields are enumerated in invalid order, not like in document + + // Field: Chapter Format: Chapter name + uno::Reference<text::XTextField> xField(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Another title"), xField->getPresentation(false)); + + // Field: Chapter Format: Chapter number and name + xField.set(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Chapter 2 - Another title"), xField->getPresentation(false)); + + // Field: Chapter Format: Chapter number + xField.set(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Chapter 2 -"), xField->getPresentation(false)); + + // Field: Chapter Format: Chapter number without separator + xField.set(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("2"), xField->getPresentation(false)); +} + +CPPUNIT_TEST_FIXTURE(Test, testChapterFieldsFollowedBy) +{ + createSwDoc(DATA_DIRECTORY, "chapter_field_followedby.odt"); + + uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xFieldsAccess( + xTextFieldsSupplier->getTextFields()); + uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration()); + + // TODO: I have no idea why fields are enumerated in invalid order, not like in document + std::vector<OUString> aFieldValues = { + "Followed by tab", // #1 + "I.I.I.I", // #16 + ">I.I.I.I< Followed by newline", // #15 Linefeed is replaced by space + ">I.I.I.I<", // #14 + "Followed by newline", // #13 + "I.I.I", // #12 + ">I.I.I<Followed by nothing", // #11 Nothing between text & outline + ">I.I.I<", // #10 + "Followed by nothing", // #9 + "I.I", // #8 + ">I.I< Followed by space", // #7 Space as is + ">I.I<", // #6 + "Followed by space", // #5 + "I", // #4 + ">I< Followed by tab", // #3 Here is a tab, but replaced by space in field + ">I<", // #2 + }; + + for (const auto& sValue : aFieldValues) + { + CPPUNIT_ASSERT(xFields->hasMoreElements()); + uno::Reference<text::XTextField> xField(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sValue, xField->getPresentation(false)); + } +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/filters-test.cxx b/sw/qa/core/filters-test.cxx new file mode 100644 index 000000000..3e4dfd697 --- /dev/null +++ b/sw/qa/core/filters-test.cxx @@ -0,0 +1,225 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> + +#include <comphelper/fileformat.h> + +#include <sfx2/app.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> +#include <sfx2/sfxsids.hrc> +#include <sfx2/fcontnr.hxx> + +#include <svl/stritem.hxx> +#include <unotools/tempfile.hxx> + +#include <iodetect.hxx> +#include <docsh.hxx> + +typedef tools::SvRef<SwDocShell> SwDocShellRef; + +using namespace ::com::sun::star; + +/* Implementation of Filters test */ + +class SwFiltersTest + : public test::FiltersTest + , public test::BootstrapFixture +{ +public: + virtual bool load( const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion) override; + virtual bool save( const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion) override; + virtual void setUp() override; + virtual void tearDown() override; + + // Ensure CVEs remain unbroken + void testCVEs(); + + CPPUNIT_TEST_SUITE(SwFiltersTest); + CPPUNIT_TEST(testCVEs); + CPPUNIT_TEST_SUITE_END(); + +private: + bool filter( const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion, bool bExport); + uno::Reference<uno::XInterface> m_xWriterComponent; +}; + +bool SwFiltersTest::load(const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion) +{ + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, false); +} + +bool SwFiltersTest::save(const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion) +{ + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, true); +} + +bool SwFiltersTest::filter(const OUString &rFilter, const OUString &rURL, + const OUString &rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion, bool bExport) +{ + auto pFilter = std::make_shared<SfxFilter>( + rFilter, OUString(), nFilterFlags, + nClipboardID, OUString(), OUString(), + rUserData, OUString()); + pFilter->SetVersion(nFilterVersion); + + SwDocShellRef xDocShRef = new SwDocShell; + SfxMedium* pSrcMed = new SfxMedium(rURL, StreamMode::STD_READ); + + std::shared_ptr<const SfxFilter> pImportFilter; + std::shared_ptr<const SfxFilter> pExportFilter; + if (bExport) + { + SfxGetpApp()->GetFilterMatcher().GuessFilter(*pSrcMed, pImportFilter, SfxFilterFlags::IMPORT, SfxFilterFlags::NONE); + pExportFilter = pFilter; + } + else + pImportFilter = pFilter; + + pSrcMed->SetFilter(pImportFilter); + + if (rUserData == FILTER_TEXT_DLG) + { + pSrcMed->GetItemSet()->Put( + SfxStringItem(SID_FILE_FILTEROPTIONS, "UTF8,LF,Liberation Mono,en-US")); + } + + bool bLoaded = xDocShRef->DoLoad(pSrcMed); + if (!bExport) + { + if (xDocShRef.is()) + xDocShRef->DoClose(); + return bLoaded; + } + + // How come an error may be set, and still DoLoad() returns success? Strange... + if (bLoaded) + xDocShRef->ResetError(); + + bool bSaved; + { + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + SfxMedium aDstMed(aTempFile.GetURL(), StreamMode::STD_WRITE); + aDstMed.SetFilter(pExportFilter); + bSaved = xDocShRef->DoSaveAs(aDstMed); + } + if (xDocShRef.is()) + xDocShRef->DoClose(); + return bSaved; +} + +#define isstorage SotClipboardFormatId::STRING + +void SwFiltersTest::testCVEs() +{ + testDir("StarOffice XML (Writer)", + m_directories.getURLFromSrc(u"/sw/qa/core/data/xml/"), + FILTER_XML, + SfxFilterFlags::IMPORT | SfxFilterFlags::OWN | SfxFilterFlags::DEFAULT, + isstorage, SOFFICE_FILEFORMAT_CURRENT); + + testDir("writer8", + m_directories.getURLFromSrc(u"/sw/qa/core/data/odt/"), + FILTER_XML, + SfxFilterFlags::IMPORT | SfxFilterFlags::OWN | SfxFilterFlags::DEFAULT, + isstorage, SOFFICE_FILEFORMAT_CURRENT); + + testDir("MS Word 97", + m_directories.getURLFromSrc(u"/sw/qa/core/data/ww8/"), + FILTER_WW8); + + testDir("MS WinWord 5", + m_directories.getURLFromSrc(u"/sw/qa/core/data/ww5/"), + sWW5); + + testDir("Text (encoded)", + m_directories.getURLFromSrc(u"/sw/qa/core/data/txt/"), + FILTER_TEXT_DLG); + + testDir("MS Word 2007 XML", + m_directories.getURLFromSrc(u"/sw/qa/core/data/ooxml/"), + OUString(), + SfxFilterFlags::STARONEFILTER); + + testDir("Rich Text Format", + m_directories.getURLFromSrc(u"/sw/qa/core/data/rtf/"), + OUString(), + SfxFilterFlags::STARONEFILTER); + + testDir("HTML", + m_directories.getURLFromSrc(u"/sw/qa/core/data/html/"), + sHTML); + + testDir("T602Document", + m_directories.getURLFromSrc(u"/sw/qa/core/data/602/"), + OUString(), + SfxFilterFlags::STARONEFILTER); + + testDir("Rich Text Format", + m_directories.getURLFromSrc(u"/sw/qa/core/exportdata/rtf/"), + OUString(), + SfxFilterFlags::STARONEFILTER, + SotClipboardFormatId::NONE, + 0, + /*bExport=*/true); + + testDir("HTML", + m_directories.getURLFromSrc(u"/sw/qa/core/exportdata/html/"), + sHTML, + SfxFilterFlags::NONE, + SotClipboardFormatId::NONE, + 0, + /*bExport=*/true); + + testDir("MS Word 2007 XML", + m_directories.getURLFromSrc(u"/sw/qa/core/exportdata/ooxml/"), + OUString(), + SfxFilterFlags::STARONEFILTER, + SotClipboardFormatId::NONE, + 0, + /*bExport=*/true); + +} + +void SwFiltersTest::setUp() +{ + test::BootstrapFixture::setUp(); + + //This is a bit of a fudge, we do this to ensure that SwGlobals::ensure, + //which is a private symbol to us, gets called + m_xWriterComponent = + getMultiServiceFactory()->createInstance("com.sun.star.comp.Writer.TextDocument"); + CPPUNIT_ASSERT_MESSAGE("no writer component!", m_xWriterComponent.is()); +} + +void SwFiltersTest::tearDown() +{ + uno::Reference<lang::XComponent>(m_xWriterComponent, uno::UNO_QUERY_THROW)->dispose(); + m_xWriterComponent.clear(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwFiltersTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/filters-test2.cxx b/sw/qa/core/filters-test2.cxx new file mode 100644 index 000000000..965645c3b --- /dev/null +++ b/sw/qa/core/filters-test2.cxx @@ -0,0 +1,150 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> + +#include <sfx2/app.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> +#include <sfx2/sfxsids.hrc> +#include <sfx2/fcontnr.hxx> + +#include <svl/stritem.hxx> +#include <unotools/tempfile.hxx> + +#include <iodetect.hxx> +#include <docsh.hxx> + +typedef tools::SvRef<SwDocShell> SwDocShellRef; + +using namespace ::com::sun::star; + +/* Implementation of Filters test */ + +class SwFiltersTest2 : public test::FiltersTest, public test::BootstrapFixture +{ +public: + virtual bool load(const OUString& rFilter, const OUString& rURL, const OUString& rUserData, + SfxFilterFlags nFilterFlags, SotClipboardFormatId nClipboardID, + unsigned int nFilterVersion) override; + virtual bool save(const OUString& rFilter, const OUString& rURL, const OUString& rUserData, + SfxFilterFlags nFilterFlags, SotClipboardFormatId nClipboardID, + unsigned int nFilterVersion) override; + virtual void setUp() override; + virtual void tearDown() override; + + // Ensure CVEs remain unbroken + void testCVEs(); + + CPPUNIT_TEST_SUITE(SwFiltersTest2); + CPPUNIT_TEST(testCVEs); + CPPUNIT_TEST_SUITE_END(); + +private: + bool filter(const OUString& rFilter, const OUString& rURL, const OUString& rUserData, + SfxFilterFlags nFilterFlags, SotClipboardFormatId nClipboardID, + unsigned int nFilterVersion, bool bExport); + uno::Reference<uno::XInterface> m_xWriterComponent; +}; + +bool SwFiltersTest2::load(const OUString& rFilter, const OUString& rURL, const OUString& rUserData, + SfxFilterFlags nFilterFlags, SotClipboardFormatId nClipboardID, + unsigned int nFilterVersion) +{ + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, false); +} + +bool SwFiltersTest2::save(const OUString& rFilter, const OUString& rURL, const OUString& rUserData, + SfxFilterFlags nFilterFlags, SotClipboardFormatId nClipboardID, + unsigned int nFilterVersion) +{ + return filter(rFilter, rURL, rUserData, nFilterFlags, nClipboardID, nFilterVersion, true); +} + +bool SwFiltersTest2::filter(const OUString& rFilter, const OUString& rURL, + const OUString& rUserData, SfxFilterFlags nFilterFlags, + SotClipboardFormatId nClipboardID, unsigned int nFilterVersion, + bool bExport) +{ + auto pFilter = std::make_shared<SfxFilter>(rFilter, OUString(), nFilterFlags, nClipboardID, + OUString(), OUString(), rUserData, OUString()); + pFilter->SetVersion(nFilterVersion); + + SwDocShellRef xDocShRef = new SwDocShell; + SfxMedium* pSrcMed = new SfxMedium(rURL, StreamMode::STD_READ); + + std::shared_ptr<const SfxFilter> pImportFilter; + std::shared_ptr<const SfxFilter> pExportFilter; + if (bExport) + { + SfxGetpApp()->GetFilterMatcher().GuessFilter(*pSrcMed, pImportFilter, + SfxFilterFlags::IMPORT, SfxFilterFlags::NONE); + pExportFilter = pFilter; + } + else + pImportFilter = pFilter; + + pSrcMed->SetFilter(pImportFilter); + + if (rUserData == FILTER_TEXT_DLG) + { + pSrcMed->GetItemSet()->Put( + SfxStringItem(SID_FILE_FILTEROPTIONS, "UTF8,LF,Liberation Mono,en-US")); + } + + bool bLoaded = xDocShRef->DoLoad(pSrcMed); + if (!bExport) + { + if (xDocShRef.is()) + xDocShRef->DoClose(); + return bLoaded; + } + + // How come an error may be set, and still DoLoad() returns success? Strange... + if (bLoaded) + xDocShRef->ResetError(); + + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + SfxMedium aDstMed(aTempFile.GetURL(), StreamMode::STD_WRITE); + aDstMed.SetFilter(pExportFilter); + bool bSaved = xDocShRef->DoSaveAs(aDstMed); + if (xDocShRef.is()) + xDocShRef->DoClose(); + return bSaved; +} + +void SwFiltersTest2::testCVEs() +{ + testDir("MS WinWord 6.0", m_directories.getURLFromSrc(u"/sw/qa/core/data/ww6/"), sWW6); +} + +void SwFiltersTest2::setUp() +{ + test::BootstrapFixture::setUp(); + + //This is a bit of a fudge, we do this to ensure that SwGlobals::ensure, + //which is a private symbol to us, gets called + m_xWriterComponent + = getMultiServiceFactory()->createInstance("com.sun.star.comp.Writer.TextDocument"); + CPPUNIT_ASSERT_MESSAGE("no writer component!", m_xWriterComponent.is()); +} + +void SwFiltersTest2::tearDown() +{ + uno::Reference<lang::XComponent>(m_xWriterComponent, uno::UNO_QUERY_THROW)->dispose(); + m_xWriterComponent.clear(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwFiltersTest2); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/frmedt/data/paste-fly-in-textbox.docx b/sw/qa/core/frmedt/data/paste-fly-in-textbox.docx Binary files differnew file mode 100644 index 000000000..75bf13b13 --- /dev/null +++ b/sw/qa/core/frmedt/data/paste-fly-in-textbox.docx diff --git a/sw/qa/core/frmedt/data/textbox-reanchor.odt b/sw/qa/core/frmedt/data/textbox-reanchor.odt Binary files differnew file mode 100644 index 000000000..dd4eb69d1 --- /dev/null +++ b/sw/qa/core/frmedt/data/textbox-reanchor.odt diff --git a/sw/qa/core/frmedt/frmedt.cxx b/sw/qa/core/frmedt/frmedt.cxx new file mode 100644 index 000000000..850dcc655 --- /dev/null +++ b/sw/qa/core/frmedt/frmedt.cxx @@ -0,0 +1,142 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/text/VertOrientation.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> + +#include <svx/svdpage.hxx> + +#include <wrtsh.hxx> +#include <fmtanchr.hxx> +#include <IDocumentDrawModelAccess.hxx> +#include <drawdoc.hxx> +#include <dcontact.hxx> +#include <frameformats.hxx> +#include <unotxdoc.hxx> +#include <docsh.hxx> +#include <swdtflvr.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/frmedt/data/"; + +/// Covers sw/source/core/frmedt/ fixes. +class SwCoreFrmedtTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreFrmedtTest, testTextboxReanchor) +{ + // Load a document with a textframe and a textbox(shape+textframe). + load(DATA_DIRECTORY, "textbox-reanchor.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + SdrPage* pDrawPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + SdrObject* pDrawShape = pDrawPage->GetObj(1); + CPPUNIT_ASSERT_EQUAL(OUString("draw shape"), pDrawShape->GetName()); + + // Select the shape of the textbox. + Point aPoint; + SwWrtShell* pShell = pDoc->GetDocShell()->GetWrtShell(); + pShell->SelectObj(aPoint, /*nFlag=*/0, pDrawShape); + + // Anchor the shape of the textbox into its own textframe. + SdrObject* pTextFrameObj = pDrawPage->GetObj(2); + SwFrameFormat* pTextFrameFormat = FindFrameFormat(pTextFrameObj); + CPPUNIT_ASSERT_EQUAL(OUString("Frame2"), pTextFrameFormat->GetName()); + SwFrameFormat* pDrawShapeFormat = FindFrameFormat(pDrawShape); + SwNodeOffset nOldAnchor = pDrawShapeFormat->GetAnchor().GetContentAnchor()->nNode.GetIndex(); + pShell->FindAnchorPos(pTextFrameObj->GetLastBoundRect().Center(), true); + SwNodeOffset nNewAnchor = pDrawShapeFormat->GetAnchor().GetContentAnchor()->nNode.GetIndex(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 6 + // - Actual : 9 + // i.e. SwFEShell allowed to anchor the textframe of a textbox into itself. + CPPUNIT_ASSERT_EQUAL(nOldAnchor, nNewAnchor); +} + +CPPUNIT_TEST_FIXTURE(SwCoreFrmedtTest, testVertPosFromBottomBoundingBox) +{ + // Insert a shape and anchor it vertically in a way, so its position is from the top of the page + // bottom margin area. + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(10000, 10000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapeProps->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::NONE)); + xShapeProps->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + xShapeProps->setPropertyValue("VertOrientPosition", uno::Any(static_cast<sal_Int32>(-11000))); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + xDrawPageSupplier->getDrawPage()->add(xShape); + + // Get the absolute position of the top of the page bottom margin area. + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + SwTwips nPagePrintAreaBottom = getXPath(pXmlDoc, "//page/infos/prtBounds", "bottom").toInt32(); + + // Calculate the allowed bounding box of the shape, e.g. the shape's position & size dialog uses + // this to limit the vertical position to sensible values. + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwWrtShell* pWrtShell = pTextDoc->GetDocShell()->GetWrtShell(); + SwRect aBoundRect; + RndStdIds eAnchorType = RndStdIds::FLY_AT_CHAR; + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + const auto& rFrameFormats = *pDoc->GetFrameFormats(); + const SwPosition* pContentPos = rFrameFormats[0]->GetAnchor().GetContentAnchor(); + sal_Int16 eHoriRelOrient = text::RelOrientation::PAGE_FRAME; + sal_Int16 eVertRelOrient = text::RelOrientation::PAGE_PRINT_AREA_BOTTOM; + bool bFollowTextFlow = false; + bool bMirror = false; + Size aPercentSize; + pWrtShell->CalcBoundRect(aBoundRect, eAnchorType, eHoriRelOrient, eVertRelOrient, pContentPos, + bFollowTextFlow, bMirror, nullptr, &aPercentSize); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: -14705 + // - Actual : -1134 + // i.e. UI did not allow anchoring a shape 10cm above the bottom of the page due to wrong + // bounding box. + CPPUNIT_ASSERT_EQUAL(-1 * nPagePrintAreaBottom, aBoundRect.Pos().getY()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreFrmedtTest, testPasteFlyInTextBox) +{ + // Given a document that contains a textbox, which contains an sw image (fly frame) + load(DATA_DIRECTORY, "paste-fly-in-textbox.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + SwDoc* pDoc = pDocShell->GetDoc(); + SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + SdrObject* pObject = pPage->GetObj(0); + pWrtShell->SelectObj(Point(), 0, pObject); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), pDoc->GetSpzFrameFormats()->GetFormatCount()); + rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell); + pTransfer->Cut(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pDoc->GetSpzFrameFormats()->GetFormatCount()); + TransferableDataHelper aHelper(pTransfer); + + // When pasting that to an empty document. + SwTransferable::Paste(*pWrtShell, aHelper); + + // Then we should have the image only once: 3 formats (draw+fly formats for the textbox and a + // fly format for the image). + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 3 + // - Actual : 4 + // i.e. the image was pasted twice. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), pDoc->GetSpzFrameFormats()->GetFormatCount()); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/layout/data/birt_min.odt b/sw/qa/core/layout/data/birt_min.odt Binary files differnew file mode 100644 index 000000000..91193644c --- /dev/null +++ b/sw/qa/core/layout/data/birt_min.odt diff --git a/sw/qa/core/layout/data/border-collapse-compat.docx b/sw/qa/core/layout/data/border-collapse-compat.docx Binary files differnew file mode 100644 index 000000000..a3f29cbe8 --- /dev/null +++ b/sw/qa/core/layout/data/border-collapse-compat.docx diff --git a/sw/qa/core/layout/data/btlr-nested-cell.odt b/sw/qa/core/layout/data/btlr-nested-cell.odt Binary files differnew file mode 100644 index 000000000..ca7a4798d --- /dev/null +++ b/sw/qa/core/layout/data/btlr-nested-cell.odt diff --git a/sw/qa/core/layout/data/btlr-table-row-span.odt b/sw/qa/core/layout/data/btlr-table-row-span.odt Binary files differnew file mode 100644 index 000000000..ca4b6872f --- /dev/null +++ b/sw/qa/core/layout/data/btlr-table-row-span.odt diff --git a/sw/qa/core/layout/data/bullet.png b/sw/qa/core/layout/data/bullet.png Binary files differnew file mode 100644 index 000000000..4e2dcf414 --- /dev/null +++ b/sw/qa/core/layout/data/bullet.png diff --git a/sw/qa/core/layout/data/continuous-endnotes-move-backwards.doc b/sw/qa/core/layout/data/continuous-endnotes-move-backwards.doc Binary files differnew file mode 100644 index 000000000..3ee6c56aa --- /dev/null +++ b/sw/qa/core/layout/data/continuous-endnotes-move-backwards.doc diff --git a/sw/qa/core/layout/data/double-border-horizontal.docx b/sw/qa/core/layout/data/double-border-horizontal.docx Binary files differnew file mode 100644 index 000000000..624c7aa1a --- /dev/null +++ b/sw/qa/core/layout/data/double-border-horizontal.docx diff --git a/sw/qa/core/layout/data/double-border-vertical.docx b/sw/qa/core/layout/data/double-border-vertical.docx Binary files differnew file mode 100644 index 000000000..a4731ebec --- /dev/null +++ b/sw/qa/core/layout/data/double-border-vertical.docx diff --git a/sw/qa/core/layout/data/double-page-border.docx b/sw/qa/core/layout/data/double-page-border.docx Binary files differnew file mode 100644 index 000000000..a706b327c --- /dev/null +++ b/sw/qa/core/layout/data/double-page-border.docx diff --git a/sw/qa/core/layout/data/inner-border.docx b/sw/qa/core/layout/data/inner-border.docx Binary files differnew file mode 100644 index 000000000..1d8adc9fe --- /dev/null +++ b/sw/qa/core/layout/data/inner-border.docx diff --git a/sw/qa/core/layout/data/keepwithnext-fullheight.fodt b/sw/qa/core/layout/data/keepwithnext-fullheight.fodt new file mode 100644 index 000000000..b33dd80e7 --- /dev/null +++ b/sw/qa/core/layout/data/keepwithnext-fullheight.fodt @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:mimetype="application/vnd.oasis.opendocument.text" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"> + <office:styles> + <style:style style:name="OLE" style:family="graphic"> + <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="none" style:horizontal-pos="center" style:horizontal-rel="paragraph" style:flow-with-text="false"/> + </style:style> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:master-page-name="Landscape"/> + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="OLE"> + <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph" draw:ole-draw-aspect="1"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="82.652cm" fo:page-height="57.683cm" style:num-format="1" style:print-orientation="landscape" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm"/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Landscape" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text> + <text:p text:style-name="P1">Landscape page</text:p> + <text:h>Heading</text:h> + <text:p><draw:frame draw:style-name="fr1" draw:name="Image1" text:anchor-type="paragraph" svg:width="58.644cm" style:rel-width="100%" svg:height="57.683cm" style:rel-height="scale" draw:z-index="0"><draw:image draw:mime-type="image/png"><office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + </office:binary-data></draw:image></draw:frame></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/layout/data/linked-bullet.odt b/sw/qa/core/layout/data/linked-bullet.odt Binary files differnew file mode 100644 index 000000000..ae165531a --- /dev/null +++ b/sw/qa/core/layout/data/linked-bullet.odt diff --git a/sw/qa/core/layout/data/para-border-in-cell-clip.docx b/sw/qa/core/layout/data/para-border-in-cell-clip.docx Binary files differnew file mode 100644 index 000000000..7c5168536 --- /dev/null +++ b/sw/qa/core/layout/data/para-border-in-cell-clip.docx diff --git a/sw/qa/core/layout/data/shape-textbox.odt b/sw/qa/core/layout/data/shape-textbox.odt Binary files differnew file mode 100644 index 000000000..15b0aa48d --- /dev/null +++ b/sw/qa/core/layout/data/shape-textbox.odt diff --git a/sw/qa/core/layout/data/table-fly-overlap-spacing.docx b/sw/qa/core/layout/data/table-fly-overlap-spacing.docx Binary files differnew file mode 100644 index 000000000..1791bbee6 --- /dev/null +++ b/sw/qa/core/layout/data/table-fly-overlap-spacing.docx diff --git a/sw/qa/core/layout/data/table-fly-overlap.docx b/sw/qa/core/layout/data/table-fly-overlap.docx Binary files differnew file mode 100644 index 000000000..a819e855b --- /dev/null +++ b/sw/qa/core/layout/data/table-fly-overlap.docx diff --git a/sw/qa/core/layout/data/tables-move-backwards.odt b/sw/qa/core/layout/data/tables-move-backwards.odt Binary files differnew file mode 100644 index 000000000..861dc4f4a --- /dev/null +++ b/sw/qa/core/layout/data/tables-move-backwards.odt diff --git a/sw/qa/core/layout/data/tdf122894-4.doc b/sw/qa/core/layout/data/tdf122894-4.doc Binary files differnew file mode 100644 index 000000000..2fe41c9ad --- /dev/null +++ b/sw/qa/core/layout/data/tdf122894-4.doc diff --git a/sw/qa/core/layout/data/tdf128195.docx b/sw/qa/core/layout/data/tdf128195.docx Binary files differnew file mode 100644 index 000000000..16180654c --- /dev/null +++ b/sw/qa/core/layout/data/tdf128195.docx diff --git a/sw/qa/core/layout/data/tdf134783_testAnchorPositionBasedOnParagraph.fodt b/sw/qa/core/layout/data/tdf134783_testAnchorPositionBasedOnParagraph.fodt new file mode 100644 index 000000000..aa5cc7712 --- /dev/null +++ b/sw/qa/core/layout/data/tdf134783_testAnchorPositionBasedOnParagraph.fodt @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<office:document xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:officeooo="http://openoffice.org/2009/office" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:meta><dc:date>2020-07-14T15:50:45.951000000</dc:date><meta:editing-duration>PT1M19S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="4" meta:word-count="4" meta:character-count="8" meta:non-whitespace-character-count="8"/><meta:generator>LibreOfficeDev/7.1.0.0.alpha0$Windows_X86_64 LibreOffice_project/e8ffd954ee590d1f382685ceae12a51387919fb8</meta:generator></office:meta> + <office:settings> + <config:config-item-set config:name="ooo:view-settings"> + <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item> + <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item> + <config:config-item config:name="ViewAreaWidth" config:type="long">37837</config:config-item> + <config:config-item config:name="ViewAreaHeight" config:type="long">23232</config:config-item> + <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item> + <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item> + <config:config-item-map-indexed config:name="Views"> + <config:config-item-map-entry> + <config:config-item config:name="ViewId" config:type="string">view2</config:config-item> + <config:config-item config:name="ViewLeft" config:type="long">10911</config:config-item> + <config:config-item config:name="ViewTop" config:type="long">6713</config:config-item> + <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item> + <config:config-item config:name="VisibleRight" config:type="long">37835</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">23230</config:config-item> + <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> + <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item> + <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item> + <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item> + <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item> + <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item> + </config:config-item-map-entry> + </config:config-item-map-indexed> + </config:config-item-set> + <config:config-item-set config:name="ooo:configuration-settings"> + <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrinterName" config:type="string"/> + <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/> + <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/> + <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item> + <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item> + <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item> + <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item> + <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item> + <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item> + <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item> + <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item> + <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item> + <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/> + <config:config-item config:name="PrinterSetup" config:type="base64Binary"/> + <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item> + <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item> + <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item> + <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item> + <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item> + <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item> + <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item> + <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item> + <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item> + <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item> + <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item> + <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item> + <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item> + <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item> + <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item> + <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item> + <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item> + <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item> + <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item> + <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item> + <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item> + <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item> + <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item> + <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item> + <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item> + <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/> + <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item> + <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item> + <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item> + <config:config-item config:name="RsidRoot" config:type="int">2065661</config:config-item> + <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item> + <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item> + <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item> + <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item> + <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item> + <config:config-item config:name="Rsid" config:type="int">2065661</config:config-item> + <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item> + <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item> + <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item> + <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item> + <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item> + <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item> + <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item> + <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item> + <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item> + <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item> + <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item> + <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item> + <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item> + <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item> + <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item> + <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item> + <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item> + <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item> + <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item> + <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item> + <config:config-item config:name="PrintFaxName" config:type="string"/> + <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item> + <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item> + </config:config-item-set> + </office:settings> + <office:scripts> + <office:script script:language="ooo:Basic"> + <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </office:script> + </office:scripts> + <office:font-face-decls> + <style:font-face style:name="Lucida Sans1" svg:font-family="'Lucida Sans'" style:font-family-generic="swiss"/> + <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="Lucida Sans" svg:font-family="'Lucida Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Microsoft YaHei" svg:font-family="'Microsoft YaHei'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="NSimSun" svg:font-family="NSimSun" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="hu" fo:country="HU" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/> + <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="hu" fo:country="HU" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/> + </style:default-style> + <style:default-style style:family="table"> + <style:table-properties table:border-model="collapsing"/> + </style:default-style> + <style:default-style style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="2.752cm" style:contextual-spacing="true"/> + </style:style> + <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/> + <style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Microsoft YaHei" style:font-family-asian="'Microsoft YaHei'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lucida Sans" style:font-family-complex="'Lucida Sans'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/> + </style:style> + <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list"> + <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lucida Sans1" style:font-family-complex="'Lucida Sans'" style:font-family-generic-complex="swiss"/> + </style:style> + <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"> + <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lucida Sans1" style:font-family-complex="'Lucida Sans'" style:font-family-generic-complex="swiss" style:font-size-complex="12pt" style:font-style-complex="italic"/> + </style:style> + <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index"> + <style:paragraph-properties text:number-lines="false" text:line-number="0"/> + <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lucida Sans1" style:font-family-complex="'Lucida Sans'" style:font-family-generic-complex="swiss"/> + </style:style> + <text:outline-style style:name="Outline"> + <text:outline-level-style text:level="1" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="2" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="3" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="4" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="5" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="6" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="7" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="8" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="9" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="10" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + </text:outline-style> + <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/> + <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/> + <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Text_20_body"> + <style:text-properties officeooo:rsid="001f84fd" officeooo:paragraph-rsid="001f84fd"/> + </style:style> + <style:style style:name="P3" style:family="paragraph"> + <style:paragraph-properties fo:text-align="center"/> + </style:style> + <style:style style:name="gr1" style:family="graphic"> + <style:graphic-properties svg:stroke-width="0.081cm" draw:marker-start-width="0.474cm" draw:marker-end-width="0.474cm" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" fo:padding-top="0.041cm" fo:padding-bottom="0.041cm" fo:padding-left="0.041cm" fo:padding-right="0.041cm" style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true" style:flow-with-text="false"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm"> + <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text> + <text:sequence-decls> + <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/> + <text:sequence-decl text:display-outline-level="0" text:name="Table"/> + <text:sequence-decl text:display-outline-level="0" text:name="Text"/> + <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/> + <text:sequence-decl text:display-outline-level="0" text:name="Figure"/> + </text:sequence-decls> + <text:p text:style-name="Standard">A1</text:p> + <text:p text:style-name="Standard"><draw:line text:anchor-type="paragraph" draw:z-index="0" draw:name="Alakzat1" draw:style-name="gr1" draw:text-style-name="P3" svg:x1="0cm" svg:y1="0cm" svg:x2="3.44cm" svg:y2="0.026cm"> + <text:p/> + </draw:line>A2</text:p> + <text:p text:style-name="Standard"><draw:line text:anchor-type="paragraph" draw:z-index="1" draw:name="Alakzat1_0" draw:style-name="gr1" draw:text-style-name="P3" svg:x1="0cm" svg:y1="0cm" svg:x2="3.44cm" svg:y2="0.026cm"> + <text:p/> + </draw:line>A3</text:p> + <text:p text:style-name="P2"><draw:line text:anchor-type="paragraph" draw:z-index="2" draw:name="Alakzat1_1" draw:style-name="gr1" draw:text-style-name="P3" svg:x1="0cm" svg:y1="0cm" svg:x2="3.44cm" svg:y2="0.026cm"> + <text:p/> + </draw:line>B1</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/layout/data/tdf45908_invoice.odt b/sw/qa/core/layout/data/tdf45908_invoice.odt Binary files differnew file mode 100644 index 000000000..41ff78d34 --- /dev/null +++ b/sw/qa/core/layout/data/tdf45908_invoice.odt diff --git a/sw/qa/core/layout/data/textbox-autogrow-vertical.docx b/sw/qa/core/layout/data/textbox-autogrow-vertical.docx Binary files differnew file mode 100644 index 000000000..0cc45a781 --- /dev/null +++ b/sw/qa/core/layout/data/textbox-autogrow-vertical.docx diff --git a/sw/qa/core/layout/data/textbox-modification.docx b/sw/qa/core/layout/data/textbox-modification.docx Binary files differnew file mode 100644 index 000000000..6adf1a950 --- /dev/null +++ b/sw/qa/core/layout/data/textbox-modification.docx diff --git a/sw/qa/core/layout/data/textbox-phantom-change.docx b/sw/qa/core/layout/data/textbox-phantom-change.docx Binary files differnew file mode 100644 index 000000000..75ac03956 --- /dev/null +++ b/sw/qa/core/layout/data/textbox-phantom-change.docx diff --git a/sw/qa/core/layout/data/vmerge-cell-border.docx b/sw/qa/core/layout/data/vmerge-cell-border.docx Binary files differnew file mode 100644 index 000000000..11d7a76d2 --- /dev/null +++ b/sw/qa/core/layout/data/vmerge-cell-border.docx diff --git a/sw/qa/core/layout/layout.cxx b/sw/qa/core/layout/layout.cxx new file mode 100644 index 000000000..c961ac5c8 --- /dev/null +++ b/sw/qa/core/layout/layout.cxx @@ -0,0 +1,862 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/style/PageStyleLayout.hpp> + +#include <vcl/gdimtf.hxx> +#include <svx/svdpage.hxx> +#include <o3tl/string_view.hxx> + +#include <wrtsh.hxx> +#include <docsh.hxx> +#include <unotxdoc.hxx> +#include <drawdoc.hxx> +#include <IDocumentDrawModelAccess.hxx> +#include <IDocumentState.hxx> +#include <IDocumentLayoutAccess.hxx> +#include <rootfrm.hxx> +#include <itabenum.hxx> +#include <fmtanchr.hxx> +#include <fmtsrnd.hxx> +#include <IDocumentContentOperations.hxx> +#include <fmtfsize.hxx> +#include <fmtfollowtextflow.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/layout/data/"; + +/// Covers sw/source/core/layout/ fixes. +class SwCoreLayoutTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTableFlyOverlap) +{ + // Load a document that has an image anchored in the header. + // It also has a table which has the wrap around the image. + load(DATA_DIRECTORY, "table-fly-overlap.docx"); + SwTwips nFlyTop = parseDump("//header/txt/anchored/fly/infos/bounds", "top").toInt32(); + SwTwips nFlyHeight = parseDump("//header/txt/anchored/fly/infos/bounds", "height").toInt32(); + SwTwips nFlyBottom = nFlyTop + nFlyHeight; + SwTwips nTableFrameTop = parseDump("//tab/infos/bounds", "top").toInt32(); + SwTwips nTablePrintTop = parseDump("//tab/infos/prtBounds", "top").toInt32(); + SwTwips nTableTop = nTableFrameTop + nTablePrintTop; + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater or equal than: 3579 + // - Actual : 2210 + // i.e. the table's top border overlapped with the image, even if the image's wrap mode was set + // to parallel. + CPPUNIT_ASSERT_GREATEREQUAL(nFlyBottom, nTableTop); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTdf128195) +{ + // Load a document that has two paragraphs in the header. + // The second paragraph should have its bottom spacing applied. + load(DATA_DIRECTORY, "tdf128195.docx"); + sal_Int32 nTxtHeight = parseDump("//header/txt[2]/infos/bounds", "height").toInt32(); + sal_Int32 nTxtBottom = parseDump("//header/txt[2]/infos/bounds", "bottom").toInt32(); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2269), nTxtHeight); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3529), nTxtBottom); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testBIRT) +{ + // this looped + load(DATA_DIRECTORY, "birt_min.odt"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testBorderCollapseCompat) +{ + // Load a document with a border conflict: top cell has a dotted bottom border, bottom cell has + // a solid upper border. + load(DATA_DIRECTORY, "border-collapse-compat.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + MetafileXmlDump aDumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *xMetaFile); + + // Make sure the solid border has priority. + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 48 + // i.e. there was no single cell border with width=20, rather there were 48 border parts + // (forming a dotted border), all with width=40. + assertXPath(pXmlDoc, "//polyline[@style='solid']", "width", "20"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testBtlrTableRowSpan) +{ + // Load a document which has a table. The A1 cell has btlr text direction, and the A1..A3 cells + // are merged. + load(DATA_DIRECTORY, "btlr-table-row-span.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + MetafileXmlDump aDumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *xMetaFile); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: USA + // - Actual : West + // i.e. the "USA" text completely disappeared. + assertXPathContent(pXmlDoc, "//textarray[1]/text", "USA"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTableFlyOverlapSpacing) +{ + // Load a document that has an image on the right of a table. The table wraps around the image. + load(DATA_DIRECTORY, "table-fly-overlap-spacing.docx"); + SwTwips nFlyTop = parseDump("//body/txt/anchored/fly/infos/bounds", "top").toInt32(); + SwTwips nFlyHeight = parseDump("//body/txt/anchored/fly/infos/bounds", "height").toInt32(); + SwTwips nFlyBottom = nFlyTop + nFlyHeight; + SwTwips nTableFrameTop = parseDump("//tab/infos/bounds", "top").toInt32(); + SwTwips nTablePrintTop = parseDump("//tab/infos/prtBounds", "top").toInt32(); + SwTwips nTableTop = nTableFrameTop + nTablePrintTop; + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater or equal than: 3993 + // - Actual : 3993 + // i.e. the table was below the image, not on the left of the image. + CPPUNIT_ASSERT_LESS(nFlyBottom, nTableTop); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTablesMoveBackwards) +{ + // Load a document with 1 pages: empty content on first page, then 21 tables on the second page. + load(DATA_DIRECTORY, "tables-move-backwards.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + + // Delete the content on the first page. + pWrtShell->SttEndDoc(/*bStart=*/true); + pWrtShell->EndPg(/*bSelect=*/true); + pWrtShell->DelLeft(); + + // Calc the layout and check the number of pages. + pWrtShell->CalcLayout(); + xmlDocUniquePtr pLayout = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 2 + // i.e. there was an unexpected 2nd page, as only 20 out of 21 tables were moved to the first + // page. + assertXPath(pLayout, "//page", 1); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testContinuousEndnotesMoveBackwards) +{ + // Load a document with the ContinuousEndnotes flag turned on. + load(DATA_DIRECTORY, "continuous-endnotes-move-backwards.doc"); + xmlDocUniquePtr pLayout = parseLayoutDump(); + // We have 2 pages. + assertXPath(pLayout, "/root/page", 2); + // No endnote container on page 1. + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 + // - Actual : 1 + // i.e. there were unexpected endnotes on page 1. + assertXPath(pLayout, "/root/page[1]/ftncont", 0); + // All endnotes are in a container on page 2. + assertXPath(pLayout, "/root/page[2]/ftncont", 1); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testAnchorPositionBasedOnParagraph) +{ + // tdf#134783 check whether position of shape is good if it is anchored to paragraph and + // the "Don't add space between paragraphs of the same style" option is set + load(DATA_DIRECTORY, "tdf134783_testAnchorPositionBasedOnParagraph.fodt"); + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[1]/bounds", "top", "1671"); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[1]/bounds", "bottom", "1732"); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[2]/bounds", "top", "1947"); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[2]/bounds", "bottom", "2008"); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[3]/bounds", "top", "3783"); + assertXPath(pXmlDoc, "(//anchored/SwAnchoredDrawObject)[3]/bounds", "bottom", "3844"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxStaysInsideShape) +{ + // tdf#135198: check whether text box stays inside shape after moving it upwards + load(DATA_DIRECTORY, "shape-textbox.odt"); + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + CPPUNIT_ASSERT(pXmlDoc); + + // Without the fix in place, this test would have failed with + // - Expected: 1932 + // - Actual : 7476 + assertXPath(pXmlDoc, "//anchored/fly/infos/bounds", "top", "1932"); + assertXPath(pXmlDoc, "//anchored/fly/infos/bounds", "bottom", "7184"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxNotModifiedOnOpen) +{ + // tdf#138050: a freshly opened document containing a shape with a text box + // should not appear to be modified + load(DATA_DIRECTORY, "textbox-phantom-change.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + + // Without the fix in place this test would have shown that the document + // was modified due to a fix to tdf#135198 + CPPUNIT_ASSERT(!pDoc->getIDocumentState().IsModified()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextBoxAutoGrowVertical) +{ + load(DATA_DIRECTORY, "textbox-autogrow-vertical.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + SdrObject* pShape = pPage->GetObj(0); + tools::Rectangle aShapeRect = pShape->GetCurrentBoundRect(); + + discardDumpedLayout(); + xmlDocUniquePtr pLayout = parseLayoutDump(); + CPPUNIT_ASSERT(pLayout); + sal_Int32 nFlyLeft = getXPath(pLayout, "//anchored/fly/infos/bounds", "left").toInt32(); + sal_Int32 nFlyTop = getXPath(pLayout, "//anchored/fly/infos/bounds", "top").toInt32(); + sal_Int32 nFlyRight = getXPath(pLayout, "//anchored/fly/infos/bounds", "right").toInt32(); + sal_Int32 nFlyBottom = getXPath(pLayout, "//anchored/fly/infos/bounds", "bottom").toInt32(); + tools::Rectangle aFlyRect(nFlyLeft, nFlyTop, nFlyRight, nFlyBottom); + // Without the accompanying fix in place, this test would have failed, as aFlyRect was too wide, + // so it was not inside aShapeRect anymore. + CPPUNIT_ASSERT(aShapeRect.Contains(aFlyRect)); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTextboxModification) +{ + // Load a document with a textbox in it: the layout will have to position the shape part. + load(DATA_DIRECTORY, "textbox-modification.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + + // Without the accompanying fix in place, this test would have failed, as the document was + // marked as modified right after the import. + CPPUNIT_ASSERT(!pDocShell->IsModified()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testBtlrNestedCell) +{ + // Load a document with a nested table, the inner A1 cell has a btlr text direction. + load(DATA_DIRECTORY, "btlr-nested-cell.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + SwFrame* pPage = pLayout->GetLower(); + SwFrame* pBody = pPage->GetLower(); + SwFrame* pOuterTable = pBody->GetLower()->GetNext(); + SwFrame* pInnerTable = pOuterTable->GetLower()->GetLower()->GetLower(); + + // Check the paint area of the only text frame in the cell. + SwFrame* pTextFrame = pInnerTable->GetLower()->GetLower()->GetLower(); + tools::Long nFrameBottom = pTextFrame->getFrameArea().Bottom(); + SwRect aPaintArea = pTextFrame->GetPaintArea(); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater or equal than: 2829 + // - Actual : 2080 + // i.e. part of the text frame area was not painted, hiding the actual text. + CPPUNIT_ASSERT_GREATEREQUAL(nFrameBottom, aPaintArea.Bottom()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testKeepwithnextFullheight) +{ + // The document has a heading (keep with next) and a full-page image in the next paragraph, i.e. + // conflicting requirements. + // Without the accompanying fix in place, this test would have failed with a layout loop in + // SwEditShell::CalcLayout(). + load(DATA_DIRECTORY, "keepwithnext-fullheight.fodt"); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + CPPUNIT_ASSERT(pXmlDoc); + // Make sure the document has 2 pages. + assertXPath(pXmlDoc, "//page", 2); + // Heading stays on page 1 to avoid a layout loop. + assertXPathContent(pXmlDoc, "//page[1]/body/txt[2]", "Heading"); + // Image stays on page 2. + assertXPath(pXmlDoc, "//page[2]/body/txt/anchored/fly", 1); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testGutterMargin) +{ + // Create a document, remember the old left edge of the page print area (the rectangle that is + // inside margins). + SwDoc* pDoc = createSwDoc(); + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + SwFrame* pPage = pLayout->GetLower(); + tools::Long nOldLeft = pPage->getFramePrintArea().Left(); + + // Set the gutter margin to 2cm. + sal_Int32 nGutterMm100 = 2000; + xStandard->setPropertyValue("GutterMargin", uno::Any(nGutterMm100)); + + // Verify that the new left edge is larger. + tools::Long nNewLeft = pPage->getFramePrintArea().Left(); + tools::Long nGutterTwips = o3tl::toTwips(nGutterMm100, o3tl::Length::mm100); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1134 + // - Actual : 0 + // i.e. the gutter was not added to the left margin. + CPPUNIT_ASSERT_EQUAL(nGutterTwips, nNewLeft - nOldLeft); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testGutterTopMargin) +{ + // Create a document, remember the old top edge of the page print area (the rectangle that is + // inside margins). + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xSettings( + xFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY); + xSettings->setPropertyValue("GutterAtTop", uno::Any(true)); + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + SwFrame* pPage = pLayout->GetLower(); + tools::Long nOldTop = pPage->getFramePrintArea().Top(); + + // Set the gutter margin to 2cm. + sal_Int32 nGutterMm100 = 2000; + xStandard->setPropertyValue("GutterMargin", uno::Any(nGutterMm100)); + + // Verify that the new top edge is larger. + tools::Long nNewTop = pPage->getFramePrintArea().Top(); + tools::Long nGutterTwips = o3tl::toTwips(nGutterMm100, o3tl::Length::mm100); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1134 + // - Actual : 0 + // i.e. the gutter was not added to the left margin. + CPPUNIT_ASSERT_EQUAL(nGutterTwips, nNewTop - nOldTop); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testGutterMirrorMargin) +{ + SwDoc* pDoc = createSwDoc(); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + pWrtShell->InsertPageBreak(); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + SwFrame* pPage = pLayout->GetLower(); + tools::Long nOldLeft = pPage->getFramePrintArea().Left(); + SwFrame* pPage2 = pPage->GetNext(); + tools::Long nOldRight = pPage2->getFramePrintArea().Right(); + + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + xStandard->setPropertyValue("PageStyleLayout", uno::Any(style::PageStyleLayout_MIRRORED)); + sal_Int32 nGutterMm100 = 2000; + xStandard->setPropertyValue("GutterMargin", uno::Any(nGutterMm100)); + + tools::Long nNewLeft = pPage->getFramePrintArea().Left(); + tools::Long nGutterTwips = o3tl::toTwips(nGutterMm100, o3tl::Length::mm100); + CPPUNIT_ASSERT_EQUAL(nGutterTwips, nNewLeft - nOldLeft); + tools::Long nNewRight = pPage2->getFramePrintArea().Right(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1134 + // - Actual : 0 + // i.e. the gutter was missing on the second, mirrored page. + CPPUNIT_ASSERT_EQUAL(nGutterTwips, nOldRight - nNewRight); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testRtlGutterMargin) +{ + // Given a document with a right margin: + SwDoc* pDoc = createSwDoc(); + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + SwFrame* pPage = pLayout->GetLower(); + tools::Long nOldRight = pPage->getFramePrintArea().Right(); + + // When setting enable RTL gutter mode and setting a gutter margin: + xStandard->setPropertyValue("RtlGutter", uno::Any(true)); + sal_Int32 nGutterMm100 = 2000; + xStandard->setPropertyValue("GutterMargin", uno::Any(nGutterMm100)); + + // Then make sure the new right edge of the print area is decreased: + tools::Long nNewRight = pPage->getFramePrintArea().Right(); + tools::Long nGutterTwips = o3tl::toTwips(nGutterMm100, o3tl::Length::mm100); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1134 + // - Actual : 0 + // i.e. the gutter was missing on the right side. + CPPUNIT_ASSERT_EQUAL(nGutterTwips, nOldRight - nNewRight); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testGutterMarginPageBorder) +{ +// FIXME this is 3369 on macOS -- calculate this number dynamically? +// FIXME this is random on Windows at the moment (in two subsequent tests without any scaling, +// the actual values were 6346, 10066) - something broke metafile generation on Windows? +#if !defined(MACOSX) && !defined(_WIN32) + // Given a document with a non-0 gutter margin. + SwDoc* pDoc = createSwDoc(); + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + sal_Int32 nGutterMm100 = 2000; + xStandard->setPropertyValue("GutterMargin", uno::Any(nGutterMm100)); + + // When setting a left border. + table::BorderLine2 aBorder; + aBorder.LineWidth = 2; + aBorder.OuterLineWidth = 2; + xStandard->setPropertyValue("LeftBorder", uno::Any(aBorder)); + + // Then make sure border is at the left edge of the text area. + SwDocShell* pShell = pDoc->GetDocShell(); + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2565 + // - Actual : 1425 + // Where 2565 is close to the left edge of the text area (2553). + assertXPath(pXmlDoc, "//polyline[@style='solid']/point[1]", "x", "2565"); +#endif +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testTdf45908_invoice) +{ + // without the fix, this was hanging (and slowly consuming memory) on fileopen. + load(DATA_DIRECTORY, "tdf45908_invoice.odt"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testVerticallyMergedCellBorder) +{ + // Given a document with a table: 2 columns, 5 rows. B2 -> B5 is merged: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "vmerge-cell-border.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering the table: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Make sure that B4->B5 has no borders. + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Collect vertical positions of all border points. + xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//polyline[@style='solid']/point"); + xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; + std::vector<sal_Int32> aBorderPositions; + for (int i = 0; i < xmlXPathNodeSetGetLength(pXmlNodes); ++i) + { + xmlNodePtr pXmlNode = pXmlNodes->nodeTab[i]; + xmlChar* pValue = xmlGetProp(pXmlNode, BAD_CAST("y")); + sal_Int32 nValue = o3tl::toInt32(reinterpret_cast<char const*>(pValue)); + aBorderPositions.push_back(nValue); + } + xmlXPathFreeObject(pXmlObj); + // Collect top and bottom of the B1->B3 rows. + xmlDocUniquePtr pLayout = parseLayoutDump(); + pXmlObj = getXPathNode(pLayout, "//tab/row/infos/bounds"); + pXmlNodes = pXmlObj->nodesetval; + std::vector<sal_Int32> aLayoutPositions; + for (int i = 0; i < 3; ++i) + { + xmlNodePtr pXmlNode = pXmlNodes->nodeTab[i]; + if (i == 0) + { + xmlChar* pValue = xmlGetProp(pXmlNode, BAD_CAST("top")); + sal_Int32 nValue = o3tl::toInt32(reinterpret_cast<char const*>(pValue)); + aLayoutPositions.push_back(nValue); + } + xmlChar* pValue = xmlGetProp(pXmlNode, BAD_CAST("bottom")); + sal_Int32 nValue = o3tl::toInt32(reinterpret_cast<char const*>(pValue)); + aLayoutPositions.push_back(nValue); + } + xmlXPathFreeObject(pXmlObj); + // Check if any border is outside the B1->B3 range. + for (const auto nBorderPosition : aBorderPositions) + { + bool bFound = false; + for (const auto nLayoutPosition : aLayoutPositions) + { + if (std::abs(nBorderPosition - nLayoutPosition) <= 30) + { + bFound = true; + break; + } + } + std::stringstream ss; + ss << "Bad vertical position for border point: " << nBorderPosition; + ss << " Expected positions: "; + for (size_t i = 0; i < aLayoutPositions.size(); ++i) + { + if (i > 0) + { + ss << ", "; + } + ss << aLayoutPositions[i]; + } + + // Without the accompanying fix in place, this test would have failed with: + // - Bad vertical position for border point: 5624 Expected positions: 3022, 3540, 4059, 4578 + // i.e. the middle vertical border end was the bottom of B5, not bottom of B3. + CPPUNIT_ASSERT_MESSAGE(ss.str(), bFound); + } +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testCrashRemoveFromLayout) +{ + load(DATA_DIRECTORY, "tdf122894-4.doc"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testLinkedBullet) +{ + // Given a document with a graphic bullet, where the image is a linked one: + load(DATA_DIRECTORY, "linked-bullet.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + + // When rendering that document: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure the render result contains exactly one bitmap: + MetafileXmlDump aDumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *xMetaFile); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 0 + // i.e. the bullet's bitmap was lost. + assertXPath(pXmlDoc, "//bmpexscale", 1); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testInnerCellBorderIntersect) +{ + // Given a table with both outer and inner borders: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "inner-border.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering table borders: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure that inner and outer borders don't overlap in Word compatibility mode, + // and inner borders are reduced to prevent an overlap: + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Collect start/end (vertical) positions of horizontal borders. + xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//polyline[@style='solid']/point"); + xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; + std::vector<std::pair<sal_Int32, sal_Int32>> aBorderStartEnds; + for (int i = 0; i < xmlXPathNodeSetGetLength(pXmlNodes); i += 2) + { + xmlNodePtr pStart = pXmlNodes->nodeTab[i]; + xmlNodePtr pEnd = pXmlNodes->nodeTab[i + 1]; + xmlChar* pStartY = xmlGetProp(pStart, BAD_CAST("y")); + xmlChar* pEndY = xmlGetProp(pEnd, BAD_CAST("y")); + sal_Int32 nStartY = o3tl::toInt32(reinterpret_cast<char const*>(pStartY)); + sal_Int32 nEndY = o3tl::toInt32(reinterpret_cast<char const*>(pEndY)); + if (nStartY != nEndY) + { + // Vertical border. + continue; + } + xmlChar* pStartX = xmlGetProp(pStart, BAD_CAST("x")); + xmlChar* pEndX = xmlGetProp(pEnd, BAD_CAST("x")); + sal_Int32 nStartX = o3tl::toInt32(reinterpret_cast<char const*>(pStartX)); + sal_Int32 nEndX = o3tl::toInt32(reinterpret_cast<char const*>(pEndX)); + aBorderStartEnds.emplace_back(nStartX, nEndX); + } + xmlXPathFreeObject(pXmlObj); + // We have 3 lines: top, middle and bottom. The top and the bottom one is a full line, since + // it's an outer border. The middle one has increased start and decreased end to avoid an + // overlap. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aBorderStartEnds.size()); + CPPUNIT_ASSERT_EQUAL(aBorderStartEnds[0].first, aBorderStartEnds[2].first); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 1724 + // - Actual : 1724 + // i.e. the middle line's start was the same as the top line start, while what we want is a + // larger X position, so the start of the middle line doesn't overlap with the thick vertical + // outer border on the left of the table. + CPPUNIT_ASSERT_GREATER(aBorderStartEnds[0].first, aBorderStartEnds[1].first); + CPPUNIT_ASSERT_EQUAL(aBorderStartEnds[0].second, aBorderStartEnds[2].second); + CPPUNIT_ASSERT_LESS(aBorderStartEnds[0].second, aBorderStartEnds[1].second); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testDoubleBorderVertical) +{ + // Given a table with a left and right double border, outer is thick, inner is thin: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "double-border-vertical.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering that document: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure the left border is thick+thin and the right border is thin+thick (from left to + // right): + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Collect widths of vertical lines. + xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//polyline[@style='solid']/point"); + xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; + // Horizontal position -> width. + std::map<sal_Int32, sal_Int32> aBorderWidths; + for (int i = 0; i < xmlXPathNodeSetGetLength(pXmlNodes); i += 2) + { + xmlNodePtr pStart = pXmlNodes->nodeTab[i]; + xmlNodePtr pEnd = pXmlNodes->nodeTab[i + 1]; + xmlChar* pStartX = xmlGetProp(pStart, BAD_CAST("x")); + xmlChar* pEndX = xmlGetProp(pEnd, BAD_CAST("x")); + sal_Int32 nStartX = o3tl::toInt32(reinterpret_cast<char const*>(pStartX)); + sal_Int32 nEndX = o3tl::toInt32(reinterpret_cast<char const*>(pEndX)); + if (nStartX != nEndX) + { + // Horizontal border. + continue; + } + xmlChar* pWidth = xmlGetProp(pStart->parent, BAD_CAST("width")); + sal_Int32 nWidth = o3tl::toInt32(reinterpret_cast<char const*>(pWidth)); + aBorderWidths[nStartX] = nWidth; + } + xmlXPathFreeObject(pXmlObj); + std::vector<sal_Int32> aBorderWidthVec; + std::transform(aBorderWidths.begin(), aBorderWidths.end(), std::back_inserter(aBorderWidthVec), + [](const std::pair<sal_Int32, sal_Int32>& rPair) { return rPair.second; }); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), aBorderWidthVec.size()); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 120 + // - Actual : 60 + // i.e. the left border was thin+thick, not thick+thin. + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[1], aBorderWidthVec[0]); + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[2], aBorderWidthVec[3]); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testDoubleBorderHorizontal) +{ + // Given a table with a top and bottom double border, outer is thin, inner is thick: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "double-border-horizontal.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering table borders: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure the top border is thin+thick and the bottom border is thick+thin (from top to + // bottom): + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Collect widths of horizontal lines. + xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//polyline[@style='solid']/point"); + xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; + // Vertical position -> width. + std::map<sal_Int32, sal_Int32> aBorderWidths; + for (int i = 0; i < xmlXPathNodeSetGetLength(pXmlNodes); i += 2) + { + xmlNodePtr pStart = pXmlNodes->nodeTab[i]; + xmlNodePtr pEnd = pXmlNodes->nodeTab[i + 1]; + xmlChar* pStartY = xmlGetProp(pStart, BAD_CAST("y")); + xmlChar* pEndY = xmlGetProp(pEnd, BAD_CAST("y")); + sal_Int32 nStartY = o3tl::toInt32(reinterpret_cast<char const*>(pStartY)); + sal_Int32 nEndY = o3tl::toInt32(reinterpret_cast<char const*>(pEndY)); + if (nStartY != nEndY) + { + // Vertical border. + continue; + } + xmlChar* pWidth = xmlGetProp(pStart->parent, BAD_CAST("width")); + sal_Int32 nWidth = o3tl::toInt32(reinterpret_cast<char const*>(pWidth)); + aBorderWidths[nStartY] = nWidth; + } + xmlXPathFreeObject(pXmlObj); + std::vector<sal_Int32> aBorderWidthVec; + std::transform(aBorderWidths.begin(), aBorderWidths.end(), std::back_inserter(aBorderWidthVec), + [](const std::pair<sal_Int32, sal_Int32>& rPair) { return rPair.second; }); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), aBorderWidthVec.size()); + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[0], aBorderWidthVec[1]); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 120 + // - Actual : 60 + // i.e. the bottom border was thin+thick, not thick+thin. + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[3], aBorderWidthVec[2]); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testParaBorderInCellClip) +{ + // Given a document which has outside-cell borders defined, which should not be visible: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "para-border-in-cell-clip.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering those borders: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure that we have clipping setup for both paragraphs inside the table cell: + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2 + // - Actual : 0 + // - XPath '//clipregion/polygon' number of nodes is incorrect + // i.e. there was no clipping applied, leading to unexpected left/right borders. + assertXPath(pXmlDoc, "//clipregion/polygon", 2); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testDoublePageBorder) +{ + // Given a page with a top and bottom double border, outer is thick, inner is thin: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "double-page-border.docx"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // When rendering that document: + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + + // Then make sure the top border is thick+thing and the bottom border is thin+thick (from top to + // bottom): + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + // Collect widths of horizontal lines. + xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//polyline[@style='solid']/point"); + xmlNodeSetPtr pXmlNodes = pXmlObj->nodesetval; + // Vertical position -> width. + std::map<sal_Int32, sal_Int32> aBorderWidths; + for (int i = 0; i < xmlXPathNodeSetGetLength(pXmlNodes); i += 2) + { + xmlNodePtr pStart = pXmlNodes->nodeTab[i]; + xmlNodePtr pEnd = pXmlNodes->nodeTab[i + 1]; + xmlChar* pStartY = xmlGetProp(pStart, BAD_CAST("y")); + xmlChar* pEndY = xmlGetProp(pEnd, BAD_CAST("y")); + sal_Int32 nStartY = o3tl::toInt32(reinterpret_cast<char const*>(pStartY)); + sal_Int32 nEndY = o3tl::toInt32(reinterpret_cast<char const*>(pEndY)); + if (nStartY != nEndY) + { + // Vertical border. + continue; + } + xmlChar* pWidth = xmlGetProp(pStart->parent, BAD_CAST("width")); + sal_Int32 nWidth = o3tl::toInt32(reinterpret_cast<char const*>(pWidth)); + aBorderWidths[nStartY] = nWidth; + } + xmlXPathFreeObject(pXmlObj); + std::vector<sal_Int32> aBorderWidthVec; + std::transform(aBorderWidths.begin(), aBorderWidths.end(), std::back_inserter(aBorderWidthVec), + [](const std::pair<sal_Int32, sal_Int32>& rPair) { return rPair.second; }); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), aBorderWidthVec.size()); + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[1], aBorderWidthVec[0]); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 60 + // - Actual : 15 + // i.e. the bottom border was thick+thin, not thin+thick. + CPPUNIT_ASSERT_GREATER(aBorderWidthVec[2], aBorderWidthVec[3]); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testNegativePageBorder) +{ + // Given a document with a top margin and a negative border distance: + createSwDoc(); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + pWrtShell->Insert("test"); + uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + xPageStyle->setPropertyValue("TopMargin", uno::Any(static_cast<sal_Int32>(501))); // 284 twips + table::BorderLine2 aBorder; + aBorder.LineWidth = 159; // 90 twips + aBorder.OuterLineWidth = 159; + xPageStyle->setPropertyValue("TopBorder", uno::Any(aBorder)); + sal_Int32 nTopBorderDistance = -646; // -366 twips + xPageStyle->setPropertyValue("TopBorderDistance", uno::Any(nTopBorderDistance)); + nTopBorderDistance = 0; + xPageStyle->getPropertyValue("TopBorderDistance") >>= nTopBorderDistance; + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-646), nTopBorderDistance); + + // When rendering that border: + std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile(); + + // Then make sure that the negative distance pushes the horizontal borderline down: + MetafileXmlDump aDumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *xMetaFile); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 899 + // - Actual : 524 + // i.e. the negative border distance was rounded up to 0 in lcl_CalcBorderRect(). + // Ideally this would be 284 (top of first page) + 284 (top margin) + 366 (border distance) = + // 934. + assertXPath(pXmlDoc, "//polyline[@style='solid']/point[1]", "y", "899"); + assertXPath(pXmlDoc, "//polyline[@style='solid']/point[2]", "y", "899"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testNegativePageBorderNoMargin) +{ + // Given a document with no top margin and a negative border distance: + createSwDoc(); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + pWrtShell->Insert("test"); + uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + xPageStyle->setPropertyValue("TopMargin", uno::Any(static_cast<sal_Int32>(0))); // 0 twips + table::BorderLine2 aBorder; + aBorder.LineWidth = 159; // 90 twips + aBorder.OuterLineWidth = 159; + xPageStyle->setPropertyValue("TopBorder", uno::Any(aBorder)); + sal_Int32 nTopBorderDistance = -1147; // -650 twips + xPageStyle->setPropertyValue("TopBorderDistance", uno::Any(nTopBorderDistance)); + + // When rendering that border: + std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile(); + + // Then make sure that the negative distance pushes the horizontal borderline down: + MetafileXmlDump aDumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *xMetaFile); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 899 + // - Actual : 329 + // i.e. this failed differently: the lack of top margin caused a second problem. + // Ideally this would be 284 (top of first page) + 650 (border distance) = + // 934. + assertXPath(pXmlDoc, "//polyline[@style='solid']/point[1]", "y", "899"); + assertXPath(pXmlDoc, "//polyline[@style='solid']/point[2]", "y", "899"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreLayoutTest, testFollowTextFlowWrapInBackground) +{ + // Given a document with a table, and a graphic inside that table -- anchored, wrap set to + // through and follow-text-flow set to true: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwInsertTableOptions aTableOptions(SwInsertTableFlags::DefaultBorder, 0); + pWrtShell->InsertTable(aTableOptions, 1, 1); + pWrtShell->MoveTable(GotoPrevTable, fnTableStart); + IDocumentContentOperations& rIDCO = pDoc->getIDocumentContentOperations(); + SfxItemSet aFrameSet(pDoc->GetAttrPool(), svl::Items<RES_FRMATR_BEGIN, RES_FRMATR_END - 1>); + SfxItemSet aGrfSet(pDoc->GetAttrPool(), svl::Items<RES_GRFATR_BEGIN, RES_GRFATR_END - 1>); + SwFormatAnchor aAnchor(RndStdIds::FLY_AT_CHAR); + aFrameSet.Put(aAnchor); + SwFormatSurround aSurround(text::WrapTextMode_THROUGH); + aFrameSet.Put(aSurround); + SwFormatFrameSize aSize(SwFrameSize::Fixed, 1000, 1000); + aFrameSet.Put(aSize); + SwFormatFollowTextFlow aFlow(true); + aFrameSet.Put(aFlow); + GraphicObject aGrf; + rIDCO.InsertGraphicObject(*pWrtShell->GetCursor(), aGrf, &aFrameSet, &aGrfSet); + + // When laying out that document: + calcLayout(); + + // Then make sure that the cell height grows to have space for the graphic, given that + // background=true is not specified. + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nCellHeight = getXPath(pXmlDoc, "//cell[1]/infos/bounds", "height").toInt32(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 1000 + // - Actual : 396 + // i.e. the image was larger than the containing cell. + CPPUNIT_ASSERT_GREATER(static_cast<sal_Int32>(1000), nCellHeight); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/macros-test.cxx b/sw/qa/core/macros-test.cxx new file mode 100644 index 000000000..6840a6884 --- /dev/null +++ b/sw/qa/core/macros-test.cxx @@ -0,0 +1,554 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> + +#include <string_view> + +#include <unotest/macros_test.hxx> +#include <test/bootstrapfixture.hxx> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XIndexContainer.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/document/XEmbeddedScripts.hpp> +#include <com/sun/star/drawing/XControlShape.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/drawing/XShapeGrouper.hpp> +#include <com/sun/star/drawing/XShape.hpp> +#include <com/sun/star/drawing/XShapes.hpp> +#include <com/sun/star/form/XForm.hpp> +#include <com/sun/star/form/XFormsSupplier.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/script/XLibraryContainer.hpp> +#include <com/sun/star/script/XLibraryContainerPassword.hpp> +#include <com/sun/star/text/TextContentAnchorType.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/util/SearchAlgorithms2.hpp> + +#include <i18nutil/searchopt.hxx> +#include <comphelper/processfactory.hxx> +#include <comphelper/propertysequence.hxx> +#include <comphelper/scopeguard.hxx> + +#include <unotools/tempfile.hxx> + +#include <unocrsr.hxx> +#include <ndtxt.hxx> +#include <doc.hxx> +#include <IDocumentLayoutAccess.hxx> +#include <IDocumentMarkAccess.hxx> +#include <IDocumentUndoRedo.hxx> +#include <IDocumentContentOperations.hxx> +#include <docsh.hxx> +#include <unotxdoc.hxx> + +typedef tools::SvRef<SwDocShell> SwDocShellRef; + +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; + +/* Implementation of Macros test */ + +class SwMacrosTest : public test::BootstrapFixture, public unotest::MacrosTest +{ +public: + SwMacrosTest(); + + void createFileURL(std::u16string_view aFileBase, std::u16string_view aFileExtension, OUString& rFilePath); + + virtual void setUp() override; + virtual void tearDown() override; + + void testVba(); + void testBookmarkDeleteAndJoin(); + void testBookmarkDeleteTdf90816(); + void testControlShapeGrouping(); + void testFdo55289(); + void testFdo68983(); + void testFdo87530(); + void testFindReplace(); + + CPPUNIT_TEST_SUITE(SwMacrosTest); + CPPUNIT_TEST(testVba); + CPPUNIT_TEST(testBookmarkDeleteAndJoin); + CPPUNIT_TEST(testBookmarkDeleteTdf90816); + CPPUNIT_TEST(testControlShapeGrouping); + CPPUNIT_TEST(testFdo55289); + CPPUNIT_TEST(testFdo68983); + CPPUNIT_TEST(testFdo87530); + CPPUNIT_TEST(testFindReplace); + CPPUNIT_TEST_SUITE_END(); + +private: + uno::Reference<uno::XInterface> m_xWriterComponent; + OUString m_aBaseString; +}; + +void SwMacrosTest::createFileURL(std::u16string_view aFileBase, std::u16string_view aFileExtension, OUString& rFilePath) +{ + rFilePath = m_directories.getSrcRootURL() + m_aBaseString + "/" + aFileExtension + "/" + + aFileBase + aFileExtension; +} + +void SwMacrosTest::testVba() +{ + TestMacroInfo testInfo[] = { + { + OUString("testVba."), + OUString("vnd.sun.Star.script:Project.NewMacros.Macro1?language=Basic&location=document") + } + }; + for ( size_t i=0; i<SAL_N_ELEMENTS( testInfo ); ++i ) + { + OUString aFileName; + createFileURL(testInfo[i].sFileBaseName, u"doc", aFileName); + uno::Reference< css::lang::XComponent > xComponent = loadFromDesktop(aFileName, "com.sun.star.text.TextDocument"); + OUString sUrl = testInfo[i].sMacroUrl; + Any aRet; + Sequence< sal_Int16 > aOutParamIndex; + Sequence< Any > aOutParam; + Sequence< uno::Any > aParams; + + SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent); + + CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell); + SfxObjectShell::CallXScript(xComponent, sUrl, aParams, aRet, aOutParamIndex,aOutParam); + OUString aStringRes; + aRet >>= aStringRes; + // CPPUNIT_ASSERT_EQUAL(OUString("OK"), aStringRes); + pFoundShell->DoClose(); + } +} + +void SwMacrosTest::testBookmarkDeleteAndJoin() +{ + rtl::Reference<SwDoc> const pDoc(new SwDoc); + pDoc->GetIDocumentUndoRedo().DoUndo(true); // bug is in SwUndoDelete + SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + IDocumentContentOperations & rIDCO(pDoc->getIDocumentContentOperations()); + rIDCO.AppendTextNode(*aPaM.GetPoint()); + rIDCO.InsertString(aPaM, "A"); + rIDCO.AppendTextNode(*aPaM.GetPoint()); + rIDCO.InsertString(aPaM, "A"); + rIDCO.AppendTextNode(*aPaM.GetPoint()); + aPaM.Move(fnMoveBackward, GoInNode); + aPaM.Move(fnMoveBackward, GoInNode); + aPaM.Move(fnMoveBackward, GoInContent); + aPaM.SetMark(); + aPaM.Move(fnMoveForward, GoInDoc); + IDocumentMarkAccess & rIDMA = *pDoc->getIDocumentMarkAccess(); + sw::mark::IMark *pMark = + rIDMA.makeMark(aPaM, "test", IDocumentMarkAccess::MarkType::BOOKMARK, + ::sw::mark::InsertMode::New); + CPPUNIT_ASSERT(pMark); + // select so pMark start position is on a node that is fully deleted + aPaM.Move(fnMoveBackward, GoInNode); + // must leave un-selected content in last node to get the bJoinPrev flag! + aPaM.Move(fnMoveBackward, GoInContent); + aPaM.Exchange(); + aPaM.Move(fnMoveBackward, GoInDoc); + // delete + rIDCO.DeleteAndJoin(aPaM); + + for (IDocumentMarkAccess::const_iterator_t i = rIDMA.getAllMarksBegin(); i != rIDMA.getAllMarksEnd(); ++i) + { + // problem was that the nContent was pointing at deleted node + CPPUNIT_ASSERT_EQUAL(static_cast<const SwContentNode*>((*i)->GetMarkStart().nContent.GetIdxReg()), + static_cast<const SwContentNode*>((*i)->GetMarkStart().nNode.GetNode().GetContentNode())); + } +} + +void SwMacrosTest::testBookmarkDeleteTdf90816() +{ + rtl::Reference<SwDoc> const pDoc(new SwDoc); + pDoc->GetIDocumentUndoRedo().DoUndo(true); // bug is in SwUndoDelete + SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + IDocumentContentOperations & rIDCO(pDoc->getIDocumentContentOperations()); + rIDCO.AppendTextNode(*aPaM.GetPoint()); + rIDCO.InsertString(aPaM, "ABC"); + aPaM.Move(fnMoveBackward, GoInContent); + aPaM.SetMark(); + aPaM.Move(fnMoveBackward, GoInContent); + IDocumentMarkAccess & rIDMA = *pDoc->getIDocumentMarkAccess(); + sw::mark::IMark *pMark = + rIDMA.makeMark(aPaM, "test", IDocumentMarkAccess::MarkType::BOOKMARK, + ::sw::mark::InsertMode::New); + CPPUNIT_ASSERT(pMark); + + // delete the same selection as the bookmark + rIDCO.DeleteAndJoin(aPaM); + + // bookmark still there? + auto iter = rIDMA.getAllMarksBegin(); + CPPUNIT_ASSERT_MESSAGE("the bookmark was deleted", + iter != rIDMA.getAllMarksEnd()); + CPPUNIT_ASSERT_EQUAL((*iter)->GetMarkPos(), *aPaM.Start()); + CPPUNIT_ASSERT_EQUAL((*iter)->GetOtherMarkPos(), *aPaM.End()); +} + +void SwMacrosTest::testControlShapeGrouping() +{ + OUString aFileName; + createFileURL(u"testControlShapeGrouping.", u"odt", aFileName); + Reference< css::lang::XComponent > xComponent( + loadFromDesktop(aFileName, "com.sun.star.text.TextDocument")); + + uno::Reference<frame::XModel> const xModel(xComponent, UNO_QUERY); + CPPUNIT_ASSERT(xModel.is()); + uno::Reference<lang::XMultiServiceFactory> xFactory(xModel, UNO_QUERY); + uno::Reference<drawing::XDrawPageSupplier> const xDPS(xModel, UNO_QUERY); + uno::Reference<drawing::XDrawPage> const xDP = xDPS->getDrawPage(); + CPPUNIT_ASSERT(xDP.is()); + uno::Reference<drawing::XShapes> const xDPShapes = xDP; + CPPUNIT_ASSERT(xDPShapes.is()); + uno::Reference<drawing::XShapes> const xShapes(getMultiServiceFactory()->createInstance("com.sun.star.drawing.ShapeCollection"), + UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + uno::Reference<container::XIndexAccess> xShapesIC = xShapes; + CPPUNIT_ASSERT(xShapesIC.is()); + + // uno::Reference<beans::XPropertySet> xFormProps(xForm, UNO_QUERY); + // xFormProps->setPropertyValue("Name", makeAny("aForm")); + uno::Reference<form::XFormsSupplier> const xFS(xDP, UNO_QUERY); + CPPUNIT_ASSERT(xFS.is()); + uno::Reference<container::XIndexContainer> const xForms(xFS->getForms(), UNO_QUERY); + CPPUNIT_ASSERT(xForms.is()); + uno::Reference<form::XForm> xForm(xForms->getByIndex(0), UNO_QUERY); + CPPUNIT_ASSERT(xForm.is()); + uno::Reference<container::XNameContainer> xFormNC(xForm, UNO_QUERY); + + uno::Reference<drawing::XControlShape> const xDateShape( + xFactory->createInstance("com.sun.star.drawing.ControlShape"), + UNO_QUERY); + uno::Reference<awt::XControlModel> const xDateControlModel( + xFactory->createInstance("com.sun.star.form.component.DateField"), + UNO_QUERY); + xDateShape->setControl(xDateControlModel); + uno::Reference<beans::XPropertySet> xDateShapeProps(xDateShape, UNO_QUERY); + xDateShapeProps->setPropertyValue("AnchorType", Any(text::TextContentAnchorType_AT_PARAGRAPH)); + + uno::Reference<drawing::XControlShape> const xTimeShape( + xFactory->createInstance("com.sun.star.drawing.ControlShape"), + UNO_QUERY); + uno::Reference<awt::XControlModel> const xTimeControlModel( + xFactory->createInstance("com.sun.star.form.component.TimeField"), + UNO_QUERY); + xTimeShape->setControl(xTimeControlModel); + uno::Reference<beans::XPropertySet> xTimeShapeProps(xTimeShape, UNO_QUERY); + xTimeShapeProps->setPropertyValue("AnchorType", Any(text::TextContentAnchorType_AT_PARAGRAPH)); + + xFormNC->insertByName("aDateCntrl", Any(xDateControlModel)); + xDPShapes->add(xDateShape); + xFormNC->insertByName("aTimeCntrl", Any(xTimeControlModel)); + xDPShapes->add(xTimeShape); + + xShapes->add(xDateShape); + xShapes->add(xTimeShape); + uno::Reference<drawing::XShapeGrouper> const xDPGrouper(xDP, UNO_QUERY); + CPPUNIT_ASSERT(xDPGrouper.is()); + uno::Reference<drawing::XShapeGroup> xGroup(xDPGrouper->group(xShapes)); + CPPUNIT_ASSERT(xGroup.is()); + +#if 0 + uno::Reference<container::XIndexAccess> xGroupIC(xGroup, UNO_QUERY); + CPPUNIT_ASSERT(xDateShape->getControl().is()); + CPPUNIT_ASSERT_EQUAL(xDateShape->getControl(), xDateControlModel); + CPPUNIT_ASSERT(xTimeShape->getControl().is()); + CPPUNIT_ASSERT_EQUAL(xTimeShape->getControl(), xTimeControlModel); + + { + uno::Reference< uno::XInterface > xDI; + xGroupIC->getByIndex(0) >>= xDI; + CPPUNIT_ASSERT(xDI.is()); + uno::Reference< drawing::XControlShape > xDS(xDI, UNO_QUERY); + CPPUNIT_ASSERT(xDS.is()); + CPPUNIT_ASSERT_EQUAL(xDS->getControl(), xDateControlModel); + + uno::Reference< uno::XInterface > xTI; + xGroupIC->getByIndex(1) >>= xTI; + CPPUNIT_ASSERT(xTI.is()); + uno::Reference< drawing::XControlShape > xTS(xTI, UNO_QUERY); + CPPUNIT_ASSERT(xTS.is()); + CPPUNIT_ASSERT_EQUAL(xTS->getControl(), xTimeControlModel); + } + { + uno::Reference< uno::XInterface > xDI; + xShapesIC->getByIndex(0) >>= xDI; + CPPUNIT_ASSERT(xDI.is()); + uno::Reference< drawing::XControlShape > xDS(xDI, UNO_QUERY); + CPPUNIT_ASSERT(xDS.is()); + CPPUNIT_ASSERT_EQUAL(xDS->getControl(), xDateControlModel); + + uno::Reference< uno::XInterface > xTI; + xShapesIC->getByIndex(1) >>= xTI; + CPPUNIT_ASSERT(xTI.is()); + uno::Reference< drawing::XControlShape > xTS(xTI, UNO_QUERY); + CPPUNIT_ASSERT(xTS.is()); + CPPUNIT_ASSERT_EQUAL(xTS->getControl(), xTimeControlModel); + } +#endif + + // close + Reference<util::XCloseable> xDocCloseable(xComponent, UNO_QUERY_THROW); + xDocCloseable->close(false); +} + +void SwMacrosTest::testFdo55289() +{ + SwDoc* const pDoc = new SwDoc; + SwDocShellRef pDocShell = new SwDocShell(*pDoc, SfxObjectCreateMode::EMBEDDED); + // this needs to run with no layout to tickle the bugs in the special + // cases in SwXShape re-anchoring + assert(!pDoc->getIDocumentLayoutAccess().GetCurrentLayout()); + + uno::Reference<frame::XModel> const xModel(pDocShell->GetModel()); + uno::Reference<drawing::XDrawPageSupplier> const xDPS(xModel, UNO_QUERY); + uno::Reference<drawing::XShapes> const xShapes = xDPS->getDrawPage(); + uno::Reference<beans::XPropertySet> const xShape( + uno::Reference<lang::XMultiServiceFactory>(xModel, UNO_QUERY_THROW)-> + createInstance("com.sun.star.drawing.GraphicObjectShape"), + UNO_QUERY); + xShape->setPropertyValue("AnchorType", + Any(text::TextContentAnchorType_AT_PAGE)); + xShapes->add(uno::Reference<drawing::XShape>(xShape, UNO_QUERY)); + xShape->setPropertyValue("AnchorType", + Any(text::TextContentAnchorType_AT_CHARACTER)); + xShape->setPropertyValue("AnchorType", + Any(text::TextContentAnchorType_AS_CHARACTER)); + xShape->setPropertyValue("AnchorType", + Any(text::TextContentAnchorType_AT_CHARACTER)); + xShape->setPropertyValue("AnchorType", + Any(text::TextContentAnchorType_AS_CHARACTER)); + uno::Reference<text::XTextRange> const xEnd = + uno::Reference<text::XTextDocument>(xModel, UNO_QUERY_THROW)->getText()->getEnd(); + uno::Reference<text::XTextContent> const xShapeContent(xShape, UNO_QUERY); + xShapeContent->attach(xEnd); + pDocShell->DoClose(); +} + +void SwMacrosTest::testFdo68983() +{ + OUString aFileName; + createFileURL(u"fdo68983.", u"odt", aFileName); + Reference< css::lang::XComponent > xComponent = + loadFromDesktop(aFileName, "com.sun.star.text.TextDocument"); + Reference< frame::XStorable > xDocStorable(xComponent, UNO_QUERY_THROW); + + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + Sequence<beans::PropertyValue> desc( comphelper::InitPropertySequence({ + { "FilterName", Any(OUString("writer8")) } + })); + xDocStorable->storeAsURL(aTempFile.GetURL(), desc); + + Reference<util::XCloseable>(xComponent, UNO_QUERY_THROW)->close(false); + + // re-load + xComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument"); + + // check that password-protected library survived store and re-load + Reference<document::XEmbeddedScripts> xDocScr(xComponent, UNO_QUERY_THROW); + Reference<script::XStorageBasedLibraryContainer> xStorBasLib(xDocScr->getBasicLibraries()); + Reference<script::XLibraryContainer> xBasLib(xStorBasLib, UNO_QUERY_THROW); + Reference<script::XLibraryContainerPassword> xBasLibPwd(xStorBasLib, UNO_QUERY_THROW); + CPPUNIT_ASSERT(xBasLibPwd->isLibraryPasswordProtected("Library1")); + CPPUNIT_ASSERT(xBasLibPwd->verifyLibraryPassword("Library1", "foo")); + xBasLib->loadLibrary("Library1"); + CPPUNIT_ASSERT(xBasLib->isLibraryLoaded("Library1")); + + // close + Reference<util::XCloseable> xDocCloseable(xComponent, UNO_QUERY_THROW); + xDocCloseable->close(false); +} + +void SwMacrosTest::testFdo87530() +{ + Reference<css::lang::XComponent> xComponent = + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + + Sequence<beans::PropertyValue> desc( comphelper::InitPropertySequence({ + { "FilterName", Any(OUString("writer8")) } + })); + + { + // insert initial password protected library + Reference<document::XEmbeddedScripts> xDocScr(xComponent, UNO_QUERY_THROW); + Reference<script::XStorageBasedLibraryContainer> xStorBasLib(xDocScr->getBasicLibraries()); + Reference<script::XLibraryContainer> xBasLib(xStorBasLib, UNO_QUERY_THROW); + Reference<script::XLibraryContainerPassword> xBasLibPwd(xStorBasLib, UNO_QUERY_THROW); + Reference<container::XNameContainer> xLibrary(xBasLib->createLibrary("BarLibrary")); + xLibrary->insertByName("BarModule", + uno::Any(OUString("Sub Main\nEnd Sub\n"))); + xBasLibPwd->changeLibraryPassword("BarLibrary", "", "foo"); + + Reference<frame::XStorable> xDocStorable(xComponent, UNO_QUERY_THROW); + xDocStorable->storeAsURL(aTempFile.GetURL(), desc); + } + + Reference<util::XCloseable>(xComponent, UNO_QUERY_THROW)->close(false); + + // re-load + xComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument"); + + { + // check that password-protected library survived store and re-load + Reference<document::XEmbeddedScripts> xDocScr(xComponent, UNO_QUERY_THROW); + Reference<script::XStorageBasedLibraryContainer> xStorBasLib(xDocScr->getBasicLibraries()); + Reference<script::XLibraryContainer> xBasLib(xStorBasLib, UNO_QUERY_THROW); + Reference<script::XLibraryContainerPassword> xBasLibPwd(xStorBasLib, UNO_QUERY_THROW); + CPPUNIT_ASSERT(xBasLibPwd->isLibraryPasswordProtected("BarLibrary")); + CPPUNIT_ASSERT(xBasLibPwd->verifyLibraryPassword("BarLibrary", "foo")); + xBasLib->loadLibrary("BarLibrary"); + CPPUNIT_ASSERT(xBasLib->isLibraryLoaded("BarLibrary")); + Reference<container::XNameContainer> xLibrary(xBasLib->getByName("BarLibrary"), UNO_QUERY); + Any module(xLibrary->getByName("BarModule")); + CPPUNIT_ASSERT_EQUAL(OUString("Sub Main\nEnd Sub\n"), module.get<OUString>()); + + // add a second module now - tdf#87530 happened here + Reference<container::XNameContainer> xFooLib(xBasLib->createLibrary("FooLibrary")); + xFooLib->insertByName("FooModule", + uno::Any(OUString("Sub Main\nEnd Sub\n"))); + xBasLibPwd->changeLibraryPassword("FooLibrary", "", "foo"); + + // store again + Reference<frame::XStorable> xDocStorable(xComponent, UNO_QUERY_THROW); + xDocStorable->store(); + } + + Reference<util::XCloseable>(xComponent, UNO_QUERY_THROW)->close(false); + + // re-load + xComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument"); + + // check that password-protected library survived store and re-load + Reference<document::XEmbeddedScripts> xDocScr(xComponent, UNO_QUERY_THROW); + Reference<script::XStorageBasedLibraryContainer> xStorBasLib(xDocScr->getBasicLibraries()); + Reference<script::XLibraryContainer> xBasLib(xStorBasLib, UNO_QUERY_THROW); + Reference<script::XLibraryContainerPassword> xBasLibPwd(xStorBasLib, UNO_QUERY_THROW); + CPPUNIT_ASSERT(xBasLibPwd->isLibraryPasswordProtected("FooLibrary")); + CPPUNIT_ASSERT(xBasLibPwd->verifyLibraryPassword("FooLibrary", "foo")); + xBasLib->loadLibrary("FooLibrary"); + CPPUNIT_ASSERT(xBasLib->isLibraryLoaded("FooLibrary")); + Reference<container::XNameContainer> xLibrary(xBasLib->getByName("FooLibrary"), UNO_QUERY); + Any module(xLibrary->getByName("FooModule")); + CPPUNIT_ASSERT_EQUAL(OUString("Sub Main\nEnd Sub\n"), module.get<OUString>()); + + // close + Reference<util::XCloseable>(xComponent, UNO_QUERY_THROW)->close(false); +} + + +void SwMacrosTest::testFindReplace() +{ + // we need a full document with view and layout etc. because ::GetNode() + Reference<lang::XComponent> const xComponent = + loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + + const ::comphelper::ScopeGuard aComponentScopeGuard( + [&xComponent]() { xComponent->dispose(); } ); + + SwXTextDocument *const pTextDoc = dynamic_cast<SwXTextDocument *>(xComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc *const pDoc = pTextDoc->GetDocShell()->GetDoc(); + SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1); + // use a UnoCursor so it will be corrected when deleting nodes + auto pPaM(pDoc->CreateUnoCursor(SwPosition(aIdx))); + + IDocumentContentOperations & rIDCO(pDoc->getIDocumentContentOperations()); + rIDCO.InsertString(*pPaM, "foo"); + rIDCO.AppendTextNode(*pPaM->GetPoint()); + rIDCO.InsertString(*pPaM, "bar"); + rIDCO.AppendTextNode(*pPaM->GetPoint()); + rIDCO.InsertString(*pPaM, "baz"); + pPaM->Move(fnMoveBackward, GoInDoc); + + bool bCancel(false); + i18nutil::SearchOptions2 opts( + util::SearchAlgorithms_REGEXP, + 65536, + "$", + "", + lang::Locale("en", "US", ""), + 2, + 2, + 2, + TransliterationFlags::IGNORE_CASE | TransliterationFlags::IGNORE_WIDTH | + TransliterationFlags::IGNORE_KASHIDA_CTL | TransliterationFlags::IGNORE_DIACRITICS_CTL, + util::SearchAlgorithms2::REGEXP, + '\\'); + + // find newline on 1st paragraph + bool bFound = pPaM->Find_Text( + opts, false, SwDocPositions::Curr, SwDocPositions::End, bCancel, FindRanges::InBody); + CPPUNIT_ASSERT(bFound); + CPPUNIT_ASSERT(pPaM->HasMark()); + CPPUNIT_ASSERT(pPaM->GetPoint()->nNode != pPaM->GetMark()->nNode); + CPPUNIT_ASSERT_EQUAL(OUString(OUStringChar(CH_TXTATR_NEWLINE)), pPaM->GetText()); + + // now do another Find, inside the selection from the first Find +// opts.searchFlags = 71680; + bFound = pPaM->Find_Text( + opts, false, SwDocPositions::Curr, SwDocPositions::End, bCancel, FindRanges::InSel); + CPPUNIT_ASSERT(bFound); + CPPUNIT_ASSERT(pPaM->HasMark()); + CPPUNIT_ASSERT(pPaM->GetPoint()->nNode != pPaM->GetMark()->nNode); + CPPUNIT_ASSERT_EQUAL(OUString(OUStringChar(CH_TXTATR_NEWLINE)), pPaM->GetText()); + + rIDCO.ReplaceRange(*pPaM, " ", true); + + pPaM->DeleteMark(); + pPaM->Move(fnMoveBackward, GoInDoc); + + // problem was that after the 2nd Find, the wrong newline was selected + CPPUNIT_ASSERT_EQUAL(OUString("foo bar"), + pPaM->Start()->nNode.GetNode().GetTextNode()->GetText()); + pPaM->Move(fnMoveForward, GoInNode); + CPPUNIT_ASSERT_EQUAL(OUString("baz"), + pPaM->End()->nNode.GetNode().GetTextNode()->GetText()); +} + +SwMacrosTest::SwMacrosTest() + : m_aBaseString("/sw/qa/core/data") +{ +} + +void SwMacrosTest::setUp() +{ + test::BootstrapFixture::setUp(); + + // This is a bit of a fudge, we do this to ensure that SwGlobals::ensure, + // which is a private symbol to us, gets called + m_xWriterComponent = + getMultiServiceFactory()->createInstance("com.sun.star.comp.Writer.TextDocument"); + CPPUNIT_ASSERT_MESSAGE("no writer component!", m_xWriterComponent.is()); + mxDesktop = css::frame::Desktop::create( comphelper::getComponentContext(getMultiServiceFactory()) ); +} + +void SwMacrosTest::tearDown() +{ + uno::Reference< lang::XComponent >( m_xWriterComponent, UNO_QUERY_THROW )->dispose(); + test::BootstrapFixture::tearDown(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwMacrosTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/objectpositioning/data/bottom-margin-with-footer.docx b/sw/qa/core/objectpositioning/data/bottom-margin-with-footer.docx Binary files differnew file mode 100644 index 000000000..bb48ae4a7 --- /dev/null +++ b/sw/qa/core/objectpositioning/data/bottom-margin-with-footer.docx diff --git a/sw/qa/core/objectpositioning/data/inside-outside-vert-align.docx b/sw/qa/core/objectpositioning/data/inside-outside-vert-align.docx Binary files differnew file mode 100644 index 000000000..1308e1f6a --- /dev/null +++ b/sw/qa/core/objectpositioning/data/inside-outside-vert-align.docx diff --git a/sw/qa/core/objectpositioning/data/overlap-crash.odt b/sw/qa/core/objectpositioning/data/overlap-crash.odt Binary files differnew file mode 100644 index 000000000..a756c85dd --- /dev/null +++ b/sw/qa/core/objectpositioning/data/overlap-crash.odt diff --git a/sw/qa/core/objectpositioning/data/vml-vertical-alignment.docx b/sw/qa/core/objectpositioning/data/vml-vertical-alignment.docx Binary files differnew file mode 100644 index 000000000..36ed5fdfb --- /dev/null +++ b/sw/qa/core/objectpositioning/data/vml-vertical-alignment.docx diff --git a/sw/qa/core/objectpositioning/objectpositioning.cxx b/sw/qa/core/objectpositioning/objectpositioning.cxx new file mode 100644 index 000000000..e3aace4ff --- /dev/null +++ b/sw/qa/core/objectpositioning/objectpositioning.cxx @@ -0,0 +1,282 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/text/VertOrientation.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> + +#include <wrtsh.hxx> +#include <unotxdoc.hxx> +#include <docsh.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/objectpositioning/data/"; + +/// Covers sw/source/core/objectpositioning/ fixes. +class SwCoreObjectpositioningTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testOverlapCrash) +{ + // Load a document with 2 images. + load(DATA_DIRECTORY, "overlap-crash.odt"); + + // Change their anchor type to to-char. + uno::Reference<beans::XPropertySet> xShape1(getShape(1), uno::UNO_QUERY); + xShape1->setPropertyValue("AnchorType", uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + uno::Reference<beans::XPropertySet> xShape2(getShape(1), uno::UNO_QUERY); + xShape2->setPropertyValue("AnchorType", uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + + // Insert a new paragraph at the start. + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + // Without the accompanying fix in place, this test would have crashed. + pWrtShell->SplitNode(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testVertPosFromBottom) +{ + // Create a document, insert a shape and position it 1cm above the bottom of the body area. + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(10000, 10000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapeProps->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::NONE)); + xShapeProps->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + xShapeProps->setPropertyValue("VertOrientPosition", uno::Any(static_cast<sal_Int32>(-11000))); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + xDrawPageSupplier->getDrawPage()->add(xShape); + + // Verify that the distance between the body and anchored object bottom is indeed around 1cm. + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nBodyBottom = getXPath(pXmlDoc, "//body/infos/bounds", "bottom").toInt32(); + sal_Int32 nAnchoredBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject/bounds", "bottom").toInt32(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 565 + // - Actual : 9035 + // i.e. the vertical position was from-top, not from-bottom. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(565), nBodyBottom - nAnchoredBottom); +} + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testVertAlignBottomMargin) +{ + // Create a document, insert three shapes and align it the bottom,center,top of page print area bottom. + // The size of shapes are 284 ~ 0.5cm + // The height of page print area bottom is 1134 ~ 2cm + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + + //Create first shape and align bottom of page print area bottom. + uno::Reference<drawing::XShape> xShapeBottom( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeBottom->setSize(awt::Size(500, 500)); + uno::Reference<beans::XPropertySet> xShapePropsBottom(xShapeBottom, uno::UNO_QUERY); + xShapePropsBottom->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsBottom->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::BOTTOM)); + xShapePropsBottom->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierBottom(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierBottom->getDrawPage()->add(xShapeBottom); + + //Create second shape and align center of page print area bottom. + uno::Reference<drawing::XShape> xShapeCenter( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeCenter->setSize(awt::Size(500, 500)); + uno::Reference<beans::XPropertySet> xShapePropsCenter(xShapeCenter, uno::UNO_QUERY); + xShapePropsCenter->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsCenter->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::CENTER)); + xShapePropsCenter->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierCenter(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierCenter->getDrawPage()->add(xShapeCenter); + + //Create third shape and align top of page print area bottom. + uno::Reference<drawing::XShape> xShapeTop( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeTop->setSize(awt::Size(500, 500)); + uno::Reference<beans::XPropertySet> xShapePropsTop(xShapeTop, uno::UNO_QUERY); + xShapePropsTop->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsTop->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::TOP)); + xShapePropsTop->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierTop(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierTop->getDrawPage()->add(xShapeTop); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nBodyBottom = getXPath(pXmlDoc, "//body/infos/bounds", "bottom").toInt32(); //14989 + sal_Int32 nPageBottom = getXPath(pXmlDoc, "//page/infos/bounds", "bottom").toInt32(); //16123 + sal_Int32 nFirstShapeBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[1]/bounds", "bottom") + .toInt32(); //16124 + sal_Int32 nSecondShapeBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "bottom") + .toInt32(); //15699 + sal_Int32 nSecondShapeTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "top").toInt32(); //15414 + sal_Int32 nThirdShapeTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[3]/bounds", "top").toInt32(); //14989 + + // Verify that the distance between the bottom of page and bottom of first shape is around 0cm. (align=bottom) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nFirstShapeBottom - nPageBottom); + // Verify that the distance between the bottom of page and bottom of second shape is around 0.75cm and + // verify that the distance between the bottom of body and top of second shape is around 0.75cm.(align=center) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(424), nPageBottom - nSecondShapeBottom); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(425), nSecondShapeTop - nBodyBottom); + // Verify that the distance between the bottom of body and top of third shape is around 0cm. (align=top) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), nThirdShapeTop - nBodyBottom); +} + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testVertAlignBottomMarginWithFooter) +{ + // Load an empty document with footer. + load(DATA_DIRECTORY, "bottom-margin-with-footer.docx"); + uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + + // Insert three shapes and align it the bottom,center,top of page print area bottom. + // The height of page print area bottom is 2268 ~ 4cm. + // The size of shapes are 567 ~ 1cm + // Create first shape and align bottom of page print area bottom. + uno::Reference<drawing::XShape> xShapeBottom( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeBottom->setSize(awt::Size(1000, 1000)); + uno::Reference<beans::XPropertySet> xShapePropsBottom(xShapeBottom, uno::UNO_QUERY); + xShapePropsBottom->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsBottom->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::BOTTOM)); + xShapePropsBottom->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierBottom(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierBottom->getDrawPage()->add(xShapeBottom); + + // Create second shape and align center of page print area bottom. + uno::Reference<drawing::XShape> xShapeCenter( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeCenter->setSize(awt::Size(1000, 1000)); + uno::Reference<beans::XPropertySet> xShapePropsCenter(xShapeCenter, uno::UNO_QUERY); + xShapePropsCenter->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsCenter->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::CENTER)); + xShapePropsCenter->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierCenter(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierCenter->getDrawPage()->add(xShapeCenter); + + // Create third shape and align top of page print area bottom. + uno::Reference<drawing::XShape> xShapeTop( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShapeTop->setSize(awt::Size(1000, 1000)); + uno::Reference<beans::XPropertySet> xShapePropsTop(xShapeTop, uno::UNO_QUERY); + xShapePropsTop->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapePropsTop->setPropertyValue("VertOrient", uno::Any(text::VertOrientation::TOP)); + xShapePropsTop->setPropertyValue("VertOrientRelation", + uno::Any(text::RelOrientation::PAGE_PRINT_AREA_BOTTOM)); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplierTop(mxComponent, uno::UNO_QUERY); + xDrawPageSupplierTop->getDrawPage()->add(xShapeTop); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nBodyBottom = getXPath(pXmlDoc, "//body/infos/bounds", "bottom").toInt32(); //14853 + sal_Int32 nPageBottom = getXPath(pXmlDoc, "//page/infos/bounds", "bottom").toInt32(); //17121 + sal_Int32 nFirstShapeBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[1]/bounds", "bottom") + .toInt32(); //17122 + sal_Int32 nSecondShapeTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "top").toInt32(); //15703 + sal_Int32 nSecondShapeBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "bottom") + .toInt32(); //16272 + sal_Int32 nThirdShapeTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[3]/bounds", "top").toInt32(); //14853 + + // Verify that the distance between the bottom of page and bottom of first shape is around 0cm. (align=bottom) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nFirstShapeBottom - nPageBottom); + // Verify that the distance between the bottom of page and bottom of second shape is around 1.5cm and + // verify that the distance between the bottom of body and top of second shape is around 1.5cm.(align=center) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(849), nPageBottom - nSecondShapeBottom); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(850), nSecondShapeTop - nBodyBottom); + // Verify that the distance between the bottom of body and top of third shape is around 0cm. (align=top) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), nThirdShapeTop - nBodyBottom); +} + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testInsideOutsideVertAlignBottomMargin) +{ + // Load a document, with two shapes. + // The shapes align the outside and inside of page print area bottom. + load(DATA_DIRECTORY, "inside-outside-vert-align.docx"); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nBodyBottom = getXPath(pXmlDoc, "//body/infos/bounds", "bottom").toInt32(); //15704 + sal_Int32 nPageBottom = getXPath(pXmlDoc, "//page/infos/bounds", "bottom").toInt32(); //17121 + sal_Int32 nFirstShapeOutside + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[1]/bounds", "bottom") + .toInt32(); //17098 + sal_Int32 nSecondShapeInside + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "top").toInt32(); //15694 + + // Verify that the distance between the bottom of page and bottom of first shape is around 0cm. (align=outside) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), nPageBottom - nFirstShapeOutside); + // Verify that the distance between the bottom of body and top of second shape is around 0cm. (align=inside) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), nBodyBottom - nSecondShapeInside); +} + +CPPUNIT_TEST_FIXTURE(SwCoreObjectpositioningTest, testVMLVertAlignBottomMargin) +{ + // Load a document, with five shapes. + // The shapes align the top,center,bottom,outside and inside of page print area bottom. + // The height of page print area bottom is 4320 ~ 7.62cm. + // The size of shapes are 442 ~ 0.78cm + load(DATA_DIRECTORY, "vml-vertical-alignment.docx"); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nBodyBottom = getXPath(pXmlDoc, "//body/infos/bounds", "bottom").toInt32(); //11803 + sal_Int32 nPageBottom = getXPath(pXmlDoc, "//page/infos/bounds", "bottom").toInt32(); //16123 + + sal_Int32 nFirstVMLShapeInside + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[1]/bounds", "top").toInt32(); //11802 + sal_Int32 nSecondVMLShapeBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[2]/bounds", "bottom") + .toInt32(); //16124 + sal_Int32 nThirdVMLShapeCenterBottom + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[3]/bounds", "bottom") + .toInt32(); //14185 + sal_Int32 nThirdVMLShapeCenterTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[3]/bounds", "top").toInt32(); //13741 + sal_Int32 nFourthVMLShapeTop + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[4]/bounds", "top").toInt32(); //11802 + sal_Int32 nFifthVMLShapeOutside + = getXPath(pXmlDoc, "//anchored/SwAnchoredDrawObject[5]/bounds", "bottom") + .toInt32(); //16124 + + // Verify that the distance between the bottom of body and top of first VMLshape is around 0cm. (align=inside) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nBodyBottom - nFirstVMLShapeInside); + // Verify that the distance between the bottom of page and bottom of second VMLshape is around 0cm. (align=bottom) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nSecondVMLShapeBottom - nPageBottom); + // Verify that the distance between the bottom of page and bottom of third VMLshape is around 3.4cm and + // verify that the distance between the bottom of body and top of third shape is around 3.4cm.(align=center) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1938), nPageBottom - nThirdVMLShapeCenterBottom); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1938), nThirdVMLShapeCenterTop - nBodyBottom); + // Verify that the distance between the bottom of body and top of fourth VMLshape is around 0cm. (align=top) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nBodyBottom - nFourthVMLShapeTop); + // Verify that the distance between the bottom of page and bottom of fifth shape is around 0cm. (align=outside) + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nFifthVMLShapeOutside - nPageBottom); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/performance-jobfile b/sw/qa/core/performance-jobfile new file mode 100644 index 000000000..9e33d3c85 --- /dev/null +++ b/sw/qa/core/performance-jobfile @@ -0,0 +1,9 @@ +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_end_1000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_end_10000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_end_100000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_end_1000000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_front_1000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_front_10000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_front_100000 +BigPtrArrayPerformanceTest.BigPtrArrayPerformanceTest.test_insert_at_front_1000000 + diff --git a/sw/qa/core/test_ToxLinkProcessor.cxx b/sw/qa/core/test_ToxLinkProcessor.cxx new file mode 100644 index 000000000..a4bb1eac6 --- /dev/null +++ b/sw/qa/core/test_ToxLinkProcessor.cxx @@ -0,0 +1,148 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/types.h> + +#include <rtl/ustring.hxx> + +#include <ToxLinkProcessor.hxx> + +#include <cppunit/TestAssert.h> +#include <cppunit/extensions/HelperMacros.h> +#include <test/bootstrapfixture.hxx> + +#include <swdll.hxx> + +using namespace sw; + +class ToxLinkProcessorTest : public test::BootstrapFixture +{ + void NoExceptionIsThrownIfTooManyLinksAreClosed(); + void AddingAndClosingTwoOverlappingLinksResultsInOneClosedLink(); + void LinkIsCreatedCorrectly(); + void LinkSequenceIsPreserved(); + + CPPUNIT_TEST_SUITE(ToxLinkProcessorTest); + CPPUNIT_TEST(NoExceptionIsThrownIfTooManyLinksAreClosed); + CPPUNIT_TEST(AddingAndClosingTwoOverlappingLinksResultsInOneClosedLink); + CPPUNIT_TEST(LinkIsCreatedCorrectly); + CPPUNIT_TEST(LinkSequenceIsPreserved); + CPPUNIT_TEST_SUITE_END(); +public: + void setUp() override { + BootstrapFixture::setUp(); + SwGlobals::ensure(); + } + + static constexpr OUStringLiteral STYLE_NAME_1 = u"anyStyle1"; + static constexpr OUStringLiteral STYLE_NAME_2 = u"anyStyle2"; + static const sal_uInt16 POOL_ID_1; + static const sal_uInt16 POOL_ID_2; + static constexpr OUStringLiteral URL_1 = u"#anyUrl1"; + static constexpr OUStringLiteral URL_2 = u"#anyUrl2"; +}; + +const sal_uInt16 ToxLinkProcessorTest::POOL_ID_1 = 42; +const sal_uInt16 ToxLinkProcessorTest::POOL_ID_2 = 43; + +void +ToxLinkProcessorTest::NoExceptionIsThrownIfTooManyLinksAreClosed() +{ + ToxLinkProcessor sut; + sut.StartNewLink(0, STYLE_NAME_1); + sut.CloseLink(1, URL_1, /*bRelative=*/true); + // fdo#85872 actually it turns out the UI does something like this + // so an exception must not be thrown! + // should not succeed either (for backward compatibility) + sut.CloseLink(2, URL_1, /*bRelative=*/true); + CPPUNIT_ASSERT_EQUAL(1u, static_cast<unsigned>(sut.m_ClosedLinks.size())); + CPPUNIT_ASSERT_EQUAL(1u, static_cast<unsigned>(sut.m_ClosedLinks.at(0)->mEndTextPos)); + CPPUNIT_ASSERT_MESSAGE("no links are open", !sut.m_pStartedLink); +} + +void +ToxLinkProcessorTest::AddingAndClosingTwoOverlappingLinksResultsInOneClosedLink() +{ + ToxLinkProcessor sut; + sut.StartNewLink(0, STYLE_NAME_1); + sut.StartNewLink(0, STYLE_NAME_2); + sut.CloseLink(1, URL_1, /*bRelative=*/true); + // this should not cause an error, and should not succeed either + // (for backward compatibility) + sut.CloseLink(1, URL_2, /*bRelative=*/true); + CPPUNIT_ASSERT_EQUAL(1u, static_cast<unsigned>(sut.m_ClosedLinks.size())); + CPPUNIT_ASSERT_MESSAGE("no links are open", !sut.m_pStartedLink); + // backward compatibility: the last start is closed by the first end + CPPUNIT_ASSERT_EQUAL(OUString(STYLE_NAME_2), sut.m_ClosedLinks[0]->mINetFormat.GetINetFormat()); + CPPUNIT_ASSERT_EQUAL(OUString(URL_1), sut.m_ClosedLinks[0]->mINetFormat.GetValue()); +} + +namespace { + +class ToxLinkProcessorWithOverriddenObtainPoolId : public ToxLinkProcessor { +public: + virtual sal_uInt16 + ObtainPoolId(const OUString& characterStyle) const override { + if (characterStyle == ToxLinkProcessorTest::STYLE_NAME_1) { + return ToxLinkProcessorTest::POOL_ID_1; + } + if (characterStyle == ToxLinkProcessorTest::STYLE_NAME_2) { + return ToxLinkProcessorTest::POOL_ID_2; + } + return 0; + } +}; + +} + +void +ToxLinkProcessorTest::LinkIsCreatedCorrectly() +{ + // obtainpoolid needs to be overridden to check what we are + ToxLinkProcessorWithOverriddenObtainPoolId sut; + + sut.StartNewLink(0, STYLE_NAME_1); + sut.CloseLink(1, URL_1, /*bRelative=*/true); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Style is stored correctly in link", OUString(STYLE_NAME_1), sut.m_ClosedLinks.at(0)->mINetFormat.GetVisitedFormat()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Url is stored correctly in link", OUString(URL_1), sut.m_ClosedLinks.at(0)->mINetFormat.GetValue()); +} + +void +ToxLinkProcessorTest::LinkSequenceIsPreserved() +{ + + // obtainpoolid needs to be overridden to check what we are + ToxLinkProcessorWithOverriddenObtainPoolId sut; + + sut.StartNewLink(0, STYLE_NAME_2); + sut.CloseLink(1, URL_2, /*bRelative=*/true); + sut.StartNewLink(1, STYLE_NAME_1); + sut.CloseLink(2, URL_1, /*bRelative=*/true); + + // check first closed element + CPPUNIT_ASSERT_EQUAL_MESSAGE("Style is stored correctly in link", + OUString(STYLE_NAME_2), sut.m_ClosedLinks.at(0)->mINetFormat.GetVisitedFormat()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Pool id is stored correctly in link", + POOL_ID_2, sut.m_ClosedLinks.at(0)->mINetFormat.GetINetFormatId()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Url is stored correctly in link", + OUString(URL_2), sut.m_ClosedLinks.at(0)->mINetFormat.GetValue()); + // check second closed element + CPPUNIT_ASSERT_EQUAL_MESSAGE("Style is stored correctly in link", + OUString(STYLE_NAME_1), sut.m_ClosedLinks.at(1)->mINetFormat.GetVisitedFormat()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Pool id is stored correctly in link", + POOL_ID_1, sut.m_ClosedLinks.at(1)->mINetFormat.GetINetFormatId()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Url is stored correctly in link", + OUString(URL_1), sut.m_ClosedLinks.at(1)->mINetFormat.GetValue()); +} + +// Put the test suite in the registry +CPPUNIT_TEST_SUITE_REGISTRATION(ToxLinkProcessorTest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/test_ToxMiscTest.cxx b/sw/qa/core/test_ToxMiscTest.cxx new file mode 100644 index 000000000..22ad986ac --- /dev/null +++ b/sw/qa/core/test_ToxMiscTest.cxx @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <tox.hxx> +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +using namespace sw; + +class ToxMiscTest : public CppUnit::TestFixture +{ +public: + void testTdf73162(); + CPPUNIT_TEST_SUITE(ToxMiscTest); + CPPUNIT_TEST(testTdf73162); + CPPUNIT_TEST_SUITE_END(); +}; + +void ToxMiscTest::testTdf73162() +{ + //create Tokens with the help of input string + SwFormTokensHelper tokensHelper( + "<LS Index Link,65535,><E# ,65535,0,10><X ,65535,\001.\001><ET ,65535,><T " + ",65535,0,5,.,1><# ,65535,><LE ,65535,>"); //input token string + SwFormTokens formTokens = tokensHelper.GetTokens(); + + //check the size of token vector / count of tokens + CPPUNIT_ASSERT_EQUAL(std::vector<SwFormToken>::size_type(7), formTokens.size()); + + //check individual tokens for proper values + //first token + SwFormToken token1 = formTokens.at(0); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_LINK_START, token1.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<LS Index Link,65535,>"), token1.GetString()); + //second token + SwFormToken token2 = formTokens.at(1); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_ENTRY_NO, token2.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<E# ,65535,0,10>"), token2.GetString()); + //third token + SwFormToken token3 = formTokens.at(2); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_TEXT, token3.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<X ,65535,\001.\001>"), token3.GetString()); + //fourth token + SwFormToken token4 = formTokens.at(3); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_ENTRY_TEXT, token4.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<ET ,65535,>"), token4.GetString()); + //fifth token + SwFormToken token5 = formTokens.at(4); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_TAB_STOP, token5.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<T ,65535,0,5,.,1>"), token5.GetString()); + //sixth token + SwFormToken token6 = formTokens.at(5); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_PAGE_NUMS, token6.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<# ,65535,>"), token6.GetString()); + //seventh token + SwFormToken token7 = formTokens.at(6); + CPPUNIT_ASSERT_EQUAL(FormTokenType::TOKEN_LINK_END, token7.eTokenType); + CPPUNIT_ASSERT_EQUAL(OUString("<LE ,65535,>"), token7.GetString()); +} + +// Put the test suite in the registry +CPPUNIT_TEST_SUITE_REGISTRATION(ToxMiscTest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/test_ToxTextGenerator.cxx b/sw/qa/core/test_ToxTextGenerator.cxx new file mode 100644 index 000000000..c0b667a27 --- /dev/null +++ b/sw/qa/core/test_ToxTextGenerator.cxx @@ -0,0 +1,200 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <rtl/ustring.hxx> +#include <chpfld.hxx> +#include <tox.hxx> +#include <txmsrt.hxx> +#include <ToxTextGenerator.hxx> +#include <ToxTabStopTokenHandler.hxx> + +#include <memory> + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +#include <swdll.hxx> + +using namespace sw; + +class ToxTextGeneratorTest : public CppUnit::TestFixture { +public: + virtual void setUp() override + { + SwGlobals::ensure(); + } + + void EmptyStringIsReturnedForPageNumberPlaceholderOfZeroItems(); + void OneAtSignIsReturnedForPageNumberPlaceholderOfOneItem(); + void TwoAtSignsAreReturnedForPageNumberPlaceholderOfOneItem(); + void EmptyStringIsReturnedAsNumStringIfNoTextMarkIsSet(); + void EmptyStringIsReturnedAsNumStringIfToxSourcesIsEmpty(); + void ChapterNumberWithoutTextIsGeneratedForNoprepstTitle(); + void ChapterNumberWithTitleIsGeneratedForNumberNoPrepst(); + + CPPUNIT_TEST_SUITE(ToxTextGeneratorTest); + CPPUNIT_TEST(EmptyStringIsReturnedForPageNumberPlaceholderOfZeroItems); + CPPUNIT_TEST(OneAtSignIsReturnedForPageNumberPlaceholderOfOneItem); + CPPUNIT_TEST(TwoAtSignsAreReturnedForPageNumberPlaceholderOfOneItem); + CPPUNIT_TEST(EmptyStringIsReturnedAsNumStringIfNoTextMarkIsSet); + CPPUNIT_TEST(EmptyStringIsReturnedAsNumStringIfToxSourcesIsEmpty); + CPPUNIT_TEST(ChapterNumberWithoutTextIsGeneratedForNoprepstTitle); + CPPUNIT_TEST(ChapterNumberWithTitleIsGeneratedForNumberNoPrepst); + CPPUNIT_TEST_SUITE_END(); + +}; + +namespace { + +struct MockedSortTab : public SwTOXSortTabBase { + MockedSortTab() + : SwTOXSortTabBase(TOX_SORT_INDEX,nullptr,nullptr,nullptr) {} + + virtual TextAndReading GetText_Impl(SwRootFrame const*) const override { + return TextAndReading(); + } + virtual sal_uInt16 GetLevel() const override { + return 0; + } +}; + +} + +void +ToxTextGeneratorTest::EmptyStringIsReturnedForPageNumberPlaceholderOfZeroItems() +{ + OUString actual = ToxTextGenerator::ConstructPageNumberPlaceholder(0); + CPPUNIT_ASSERT_EQUAL(OUString(""), actual); +} + +void +ToxTextGeneratorTest::OneAtSignIsReturnedForPageNumberPlaceholderOfOneItem() +{ + OUString actual = ToxTextGenerator::ConstructPageNumberPlaceholder(1); + CPPUNIT_ASSERT_EQUAL(OUString("@~"), actual); +} + +void +ToxTextGeneratorTest::TwoAtSignsAreReturnedForPageNumberPlaceholderOfOneItem() +{ + OUString actual = ToxTextGenerator::ConstructPageNumberPlaceholder(2); + CPPUNIT_ASSERT_EQUAL(OUString("@, @~"), actual); +} + +void +ToxTextGeneratorTest::EmptyStringIsReturnedAsNumStringIfNoTextMarkIsSet() +{ + MockedSortTab sortTab; + sortTab.pTextMark = nullptr; + + OUString actual = ToxTextGenerator::GetNumStringOfFirstNode(sortTab, false, 0, nullptr); + CPPUNIT_ASSERT_EQUAL(OUString(""), actual); +} + +void +ToxTextGeneratorTest::EmptyStringIsReturnedAsNumStringIfToxSourcesIsEmpty() +{ + MockedSortTab sortTab; + sortTab.pTextMark = reinterpret_cast<SwTextTOXMark*>(1); + + OUString actual = ToxTextGenerator::GetNumStringOfFirstNode(sortTab, false, 0, nullptr); + CPPUNIT_ASSERT_EQUAL(OUString(""), actual); +} + +namespace { + +class MockedToxTabStopTokenHandler : public ToxTabStopTokenHandler { +public: + virtual HandledTabStopToken + HandleTabStopToken(const SwFormToken&, const SwTextNode&, + const SwRootFrame *) const override { + return HandledTabStopToken(); + } +}; + +class ToxTextGeneratorWithMockedChapterField : public ToxTextGenerator { +public: + explicit ToxTextGeneratorWithMockedChapterField(SwForm const &form) + : ToxTextGenerator(form, std::make_shared<MockedToxTabStopTokenHandler>()), + mChapterFieldType(), mChapterField(&mChapterFieldType) {} + + SwChapterField& + GetChapterField() { + return mChapterField; + } + +private: + SwChapterField + ObtainChapterField(SwChapterFieldType*, const SwFormToken*, + const SwContentFrame*, const SwContentNode *) const override { + return mChapterField; + } + + SwChapterFieldType mChapterFieldType; + SwChapterField mChapterField; +}; + +} + +void +ToxTextGeneratorTest::ChapterNumberWithoutTextIsGeneratedForNoprepstTitle() +{ + SwForm form; + ToxTextGeneratorWithMockedChapterField ttg(form); + // set all values to make sure they are not used + ttg.GetChapterField().m_State.sNumber = "1"; + ttg.GetChapterField().m_State.sPre = "PRE"; + ttg.GetChapterField().m_State.sPost = "POST"; + ttg.GetChapterField().m_State.sTitle = "TITLE"; + + SwFormToken token(TOKEN_CHAPTER_INFO); + token.nChapterFormat = CF_NUM_NOPREPST_TITLE; + + OUString expected("1"); + OUString actual = ttg.GenerateTextForChapterToken(token, nullptr, nullptr, nullptr); + CPPUNIT_ASSERT_EQUAL(expected, actual); + + // we cannot mock the pre- and suffix generation in the chapterfield. We just test that sNumber and + // sTitle are used and hope that the pre- and suffix addition works. + token.nChapterFormat = CF_NUMBER; + expected = ttg.GenerateTextForChapterToken(token, nullptr, nullptr, nullptr); + CPPUNIT_ASSERT_EQUAL(expected, actual); +} + + +void +ToxTextGeneratorTest::ChapterNumberWithTitleIsGeneratedForNumberNoPrepst() +{ + SwForm form; + ToxTextGeneratorWithMockedChapterField ttg(form); + // set all values to make sure they are not used + ttg.GetChapterField().m_State.sNumber = "5"; + ttg.GetChapterField().m_State.sPre = "PRE"; + ttg.GetChapterField().m_State.sPost = "POST"; + ttg.GetChapterField().m_State.sTitle = "myTitle"; + + SwFormToken token(TOKEN_CHAPTER_INFO); + token.nChapterFormat = CF_NUMBER_NOPREPST; + + OUString expected("5 myTitle"); + OUString actual = ttg.GenerateTextForChapterToken(token, nullptr, nullptr, nullptr); + CPPUNIT_ASSERT_EQUAL(expected, actual); + + // we cannot mock the pre- and suffix generation in the chapterfield. We just test that sNumber and + // sTitle are used and hope that the pre- and suffix addition works. + token.nChapterFormat = CF_NUM_TITLE; + expected = ttg.GenerateTextForChapterToken(token, nullptr, nullptr, nullptr); + CPPUNIT_ASSERT_EQUAL(expected, actual); +} + +// Put the test suite in the registry +CPPUNIT_TEST_SUITE_REGISTRATION(ToxTextGeneratorTest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/test_ToxWhitespaceStripper.cxx b/sw/qa/core/test_ToxWhitespaceStripper.cxx new file mode 100644 index 000000000..7af8dae25 --- /dev/null +++ b/sw/qa/core/test_ToxWhitespaceStripper.cxx @@ -0,0 +1,134 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/types.h> + +#include <rtl/ustring.hxx> + +#include <ToxWhitespaceStripper.hxx> + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +using namespace sw; + +class ToxWhitespaceStripperTest : public CppUnit::TestFixture +{ + void MappingCharactersToVariousStrippedStringsWorks(); + + void StrippingWhitespacesFromVariousStringsWorks(); + + void PositionAfterStringCanBeRequested(); + + void InvalidPositionIsMappedToLastEntry(); + + CPPUNIT_TEST_SUITE(ToxWhitespaceStripperTest); + CPPUNIT_TEST(MappingCharactersToVariousStrippedStringsWorks); + CPPUNIT_TEST(StrippingWhitespacesFromVariousStringsWorks); + CPPUNIT_TEST(PositionAfterStringCanBeRequested); + CPPUNIT_TEST(InvalidPositionIsMappedToLastEntry); + + CPPUNIT_TEST_SUITE_END(); +}; + +void ToxWhitespaceStripperTest::MappingCharactersToVariousStrippedStringsWorks() +{ + { + ToxWhitespaceStripper sut("abc\n"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), sut.GetPositionInStrippedString(0)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), sut.GetPositionInStrippedString(1)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), sut.GetPositionInStrippedString(2)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), sut.GetPositionInStrippedString(3)); + } + { + ToxWhitespaceStripper sut("abc\n\n"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), sut.GetPositionInStrippedString(0)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), sut.GetPositionInStrippedString(1)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), sut.GetPositionInStrippedString(2)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), sut.GetPositionInStrippedString(3)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), sut.GetPositionInStrippedString(4)); + } + { + ToxWhitespaceStripper sut("abc\ndef"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), sut.GetPositionInStrippedString(0)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), sut.GetPositionInStrippedString(1)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), sut.GetPositionInStrippedString(2)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), sut.GetPositionInStrippedString(3)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4), sut.GetPositionInStrippedString(4)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), sut.GetPositionInStrippedString(5)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6), sut.GetPositionInStrippedString(6)); + } + { + // 012345 6789 + // 01234567 + // " abc def" + ToxWhitespaceStripper sut(" abc \ndef"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), sut.GetPositionInStrippedString(0)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), sut.GetPositionInStrippedString(1)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), sut.GetPositionInStrippedString(2)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), sut.GetPositionInStrippedString(3)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), sut.GetPositionInStrippedString(4)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4), sut.GetPositionInStrippedString(5)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4), sut.GetPositionInStrippedString(6)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), sut.GetPositionInStrippedString(7)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6), sut.GetPositionInStrippedString(8)); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(7), sut.GetPositionInStrippedString(9)); + } +} + +void ToxWhitespaceStripperTest::StrippingWhitespacesFromVariousStringsWorks() +{ + { + ToxWhitespaceStripper sut("abc\n"); + CPPUNIT_ASSERT_EQUAL(OUString("abc"), sut.GetStrippedString()); + } + { + ToxWhitespaceStripper sut("abc\n\n"); + CPPUNIT_ASSERT_EQUAL(OUString("abc"), sut.GetStrippedString()); + } + { + ToxWhitespaceStripper sut("abc\ndef"); + CPPUNIT_ASSERT_EQUAL(OUString("abc def"), sut.GetStrippedString()); + } + { + ToxWhitespaceStripper sut(" abc \ndef"); + CPPUNIT_ASSERT_EQUAL(OUString(" abc def"), sut.GetStrippedString()); + } + { + ToxWhitespaceStripper sut(" "); + CPPUNIT_ASSERT_EQUAL(OUString(""), sut.GetStrippedString()); + } + { + ToxWhitespaceStripper sut("d "); + CPPUNIT_ASSERT_EQUAL(OUString("d"), sut.GetStrippedString()); + } +} + +void ToxWhitespaceStripperTest::PositionAfterStringCanBeRequested() +{ + OUString const test("abc"); + ToxWhitespaceStripper sut(test); + sal_Int32 expected = test.getLength(); + CPPUNIT_ASSERT_EQUAL(expected, sut.GetPositionInStrippedString(test.getLength())); +} + +void ToxWhitespaceStripperTest::InvalidPositionIsMappedToLastEntry() +{ + ToxWhitespaceStripper sut("ab c"); + sal_Int32 const expected = 4; // the length of the string after merging the two whitespaces + sal_Int32 result + = sut.GetPositionInStrippedString(40); // a value past the original string length + CPPUNIT_ASSERT_EQUAL(expected, result); +} + +// Put the test suite in the registry +CPPUNIT_TEST_SUITE_REGISTRATION(ToxWhitespaceStripperTest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/test_rect.cxx b/sw/qa/core/test_rect.cxx new file mode 100644 index 000000000..cfb9fa63a --- /dev/null +++ b/sw/qa/core/test_rect.cxx @@ -0,0 +1,107 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +#include <swrect.hxx> + +class RectUnittest : public CppUnit::TestFixture +{ +public: + void testBasic(); + void testUnion(); + void testIntersection(); + + CPPUNIT_TEST_SUITE(RectUnittest); + CPPUNIT_TEST(testBasic); + CPPUNIT_TEST(testUnion); + CPPUNIT_TEST(testIntersection); + CPPUNIT_TEST_SUITE_END(); +}; + +void RectUnittest::testBasic() +{ + SwRect rect(Point(10, 15), Size(20, 25)); + + CPPUNIT_ASSERT_EQUAL(rect, SwRect(10, 15, 20, 25)); + CPPUNIT_ASSERT_EQUAL(rect, SwRect(Point(10, 15), Point(10 + 20 - 1, 15 + 25 - 1))); + + CPPUNIT_ASSERT_EQUAL(tools::Long(20), rect.Width()); + CPPUNIT_ASSERT_EQUAL(tools::Long(25), rect.Height()); + CPPUNIT_ASSERT_EQUAL(tools::Long(10), rect.Left()); + CPPUNIT_ASSERT_EQUAL(tools::Long(15), rect.Top()); + CPPUNIT_ASSERT_EQUAL(tools::Long(10 + 20 - 1), rect.Right()); + CPPUNIT_ASSERT_EQUAL(tools::Long(15 + 25 - 1), rect.Bottom()); + + CPPUNIT_ASSERT_EQUAL(Point(rect.Left(), rect.Top()), rect.TopLeft()); + CPPUNIT_ASSERT_EQUAL(Point(rect.Right(), rect.Top()), rect.TopRight()); + CPPUNIT_ASSERT_EQUAL(Point(rect.Left(), rect.Bottom()), rect.BottomLeft()); + CPPUNIT_ASSERT_EQUAL(Point(rect.Right(), rect.Bottom()), rect.BottomRight()); +} + +void RectUnittest::testUnion() +{ + SwRect rect1(Point(10, 10), Size(10, 10)); + SwRect rect2(Point(15, 15), Size(10, 10)); + SwRect rect3(Point(30, 30), Size(10, 10)); + SwRect tmp; + + tmp = rect1; + tmp.Union(rect2); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(15, 15)), tmp); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(15, 15)), rect1.GetUnion(rect2)); + + tmp = rect1; + tmp.Union(rect3); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(30, 30)), tmp); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(30, 30)), rect1.GetUnion(rect3)); + + tmp = rect1; + tmp.Union(SwRect()); + CPPUNIT_ASSERT_EQUAL(rect1, tmp); + CPPUNIT_ASSERT_EQUAL(rect1, rect1.GetUnion(SwRect())); + tmp = SwRect(); + tmp.Union(rect1); + CPPUNIT_ASSERT_EQUAL(rect1, tmp); + CPPUNIT_ASSERT_EQUAL(rect1, SwRect().GetUnion(rect1)); +} + +void RectUnittest::testIntersection() +{ + SwRect rect1(Point(10, 10), Size(10, 10)); + SwRect rect2(Point(15, 15), Size(10, 10)); + SwRect rect3(Point(30, 30), Size(10, 10)); + SwRect tmp; + + tmp = rect1; + tmp.Intersection(rect2); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(15, 15), Size(5, 5)), tmp); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(15, 15), Size(5, 5)), rect1.GetIntersection(rect2)); + + tmp = rect1; + tmp.Intersection(rect3); + CPPUNIT_ASSERT(tmp.IsEmpty()); + CPPUNIT_ASSERT(rect1.GetIntersection(rect3).IsEmpty()); + + tmp = rect1; + tmp.Intersection(SwRect()); + CPPUNIT_ASSERT(tmp.IsEmpty()); + CPPUNIT_ASSERT(rect1.GetIntersection(SwRect()).IsEmpty()); + tmp = SwRect(); + tmp.Intersection(rect1); + CPPUNIT_ASSERT(tmp.IsEmpty()); + CPPUNIT_ASSERT(SwRect().GetIntersection(rect1).IsEmpty()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(RectUnittest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/test_region.cxx b/sw/qa/core/test_region.cxx new file mode 100644 index 000000000..15fa398c7 --- /dev/null +++ b/sw/qa/core/test_region.cxx @@ -0,0 +1,108 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +#include <swregion.hxx> +#include <vcl/region.hxx> + +class RegionUnittest : public CppUnit::TestFixture +{ +public: + void testCompress(); + void testInvert(); + + CPPUNIT_TEST_SUITE(RegionUnittest); + CPPUNIT_TEST(testCompress); + CPPUNIT_TEST(testInvert); + CPPUNIT_TEST_SUITE_END(); +}; + +void RegionUnittest::testCompress() +{ + SwRegionRects region; + + // All inside each other, check it'll compress them to the largest one. + region = SwRegionRects(); + region += SwRect(Point(10, 10), Size(10, 10)); + region += SwRect(Point(10, 10), Size(20, 20)); + region += SwRect(Point(10, 10), Size(100, 100)); + region += SwRect(Point(10, 10), Size(50, 50)); + region.Compress(SwRegionRects::CompressExact); + CPPUNIT_ASSERT_EQUAL(size_t(1), region.size()); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(100, 100)), region[0]); + + // Check merging of adjacent rectangles. This will merge first two groups + // and then those two merged rects only in the next iteration. + region = SwRegionRects(); + region += SwRect(Point(10, 10), Size(10000, 10000)); + region += SwRect(Point(10010, 10), Size(10000, 10000)); + region += SwRect(Point(10, 10010), Size(10000, 10000)); + region += SwRect(Point(10010, 10010), Size(10000, 10000)); + region.Compress(SwRegionRects::CompressExact); + CPPUNIT_ASSERT_EQUAL(size_t(1), region.size()); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(20000, 20000)), region[0]); + + // Check fuzzy compress, two almost aligned rects will be compressed to one. + region = SwRegionRects(); + region += SwRect(Point(10, 10), Size(100, 100)); + region += SwRect(Point(110, 10), Size(100, 90)); + region.Compress(SwRegionRects::CompressExact); + CPPUNIT_ASSERT_EQUAL(size_t(2), region.size()); + region.Compress(SwRegionRects::CompressFuzzy); + CPPUNIT_ASSERT_EQUAL(size_t(1), region.size()); + CPPUNIT_ASSERT_EQUAL(SwRect(Point(10, 10), Size(200, 100)), region[0]); + + // Check it doesn't crash because of empty size. + region = SwRegionRects(); + region += SwRect(Point(0, 0), Size(0, 0)); + region += SwRect(Point(10, 10), Size(0, 0)); + region += SwRect(Point(100, 100), Size(0, 0)); + region.Compress(SwRegionRects::CompressExact); + region.Compress(SwRegionRects::CompressFuzzy); +} + +void RegionUnittest::testInvert() +{ + // Check that punching holes and inverting has the same result as adding up rects. + const SwRect fullRect(Point(100, 100), Size(1000, 1000)); + const SwRect rects[] + = { { Point(200, 200), Size(200, 200) }, + { Point(0, 0), Size(200, 200) }, // this one is intentionally partially out of bounds + { Point(700, 760), Size(20, 150) }, + { Point(100, 300), Size(200, 200) }, + { Point(100, 800), Size(10, 10) }, // these two partially overlap + { Point(105, 805), Size(10, 10) } }; + SwRegionRects region1(fullRect); + for (const SwRect& rect : rects) + region1 -= rect; + region1.Invert(); + region1.Compress(SwRegionRects::CompressExact); + SwRegionRects region2; + region2.ChangeOrigin(fullRect); + for (const SwRect& rect : rects) + region2 += rect; + region2.LimitToOrigin(); + region2.Compress(SwRegionRects::CompressExact); + // The regions should be the same area, but not necessarily the same representation. + // SwRegionRects cannot compare those easily, but vcl::Region can. + vcl::Region vclRegion1, vclRegion2; + for (const SwRect& rect : region1) + vclRegion1.Union(tools::Rectangle(rect.Pos(), rect.SSize())); + for (const SwRect& rect : region2) + vclRegion2.Union(tools::Rectangle(rect.Pos(), rect.SSize())); + CPPUNIT_ASSERT_EQUAL(vclRegion1, vclRegion2); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(RegionUnittest); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/text/data/clearing-break-header.fodt b/sw/qa/core/text/data/clearing-break-header.fodt new file mode 100644 index 000000000..2bdbcd3c7 --- /dev/null +++ b/sw/qa/core/text/data/clearing-break-header.fodt @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="gr1" style:family="graphic"> + <style:graphic-properties fo:margin-left="0.318cm" fo:margin-right="0.318cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:run-through="background" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="from-left" style:horizontal-rel="page" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true" style:flow-with-text="false"/> + </style:style> + <style:style style:name="gr2" style:family="graphic"> + <style:graphic-properties draw:stroke="none" svg:stroke-width="0cm" draw:fill="none" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="bottom" draw:auto-grow-height="false" style:run-through="background"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" fo:margin-top="1.251cm" fo:margin-bottom="2.54cm" fo:margin-left="2.501cm" fo:margin-right="2.501cm"> + </style:page-layout-properties> + <style:header-style> + <style:header-footer-properties fo:min-height="1.289cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="1.189cm" style:dynamic-spacing="true"/> + </style:header-style> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"> + <style:header> + <text:p><draw:g text:anchor-type="char" draw:z-index="1" draw:style-name="gr1"><draw:rect draw:style-name="gr2" svg:width="8.347cm" svg:height="8.908cm" svg:x="11.871cm" svg:y="21.243cm"><text:p/></draw:rect></draw:g></text:p> + <text:p/> + </style:header> + </style:master-page> + </office:master-styles> + <office:body> + <office:text> + <text:p><text:line-break loext:clear="all"/></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/clearing-break-start.fodt b/sw/qa/core/text/data/clearing-break-start.fodt new file mode 100644 index 000000000..f2df00fad --- /dev/null +++ b/sw/qa/core/text/data/clearing-break-start.fodt @@ -0,0 +1,28 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="fr1" style:family="graphic"> + <style:graphic-properties fo:margin-left="0.318cm" fo:margin-right="0.318cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="parallel" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph"/> + </style:style> + </office:automatic-styles> + <office:body> + <office:text> + <text:p><draw:frame draw:style-name="fr1" draw:name="Picture 1" text:anchor-type="char" svg:x="0cm" svg:y="0cm" svg:width="1.806cm" svg:height="1.806cm" draw:z-index="0"><draw:image draw:mime-type="image/png"><office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + </office:binary-data></draw:image></draw:frame>X</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/clearing-break.fodt b/sw/qa/core/text/data/clearing-break.fodt new file mode 100644 index 000000000..a2f128506 --- /dev/null +++ b/sw/qa/core/text/data/clearing-break.fodt @@ -0,0 +1,28 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="fr1" style:family="graphic"> + <style:graphic-properties fo:margin-left="0.318cm" fo:margin-right="0.318cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="parallel" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph"/> + </style:style> + </office:automatic-styles> + <office:body> + <office:text> + <text:p><draw:frame draw:style-name="fr1" draw:name="Picture 1" text:anchor-type="char" svg:x="0cm" svg:y="0cm" svg:width="1.806cm" svg:height="1.806cm" draw:z-index="0"><draw:image draw:mime-type="image/png"><office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + </office:binary-data></draw:image></draw:frame>AB</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/empty-numbering-page-split.fodt b/sw/qa/core/text/data/empty-numbering-page-split.fodt new file mode 100644 index 000000000..517ad2e0f --- /dev/null +++ b/sw/qa/core/text/data/empty-numbering-page-split.fodt @@ -0,0 +1,62 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:styles> + <style:default-style style:family="paragraph"> + <style:text-properties fo:font-size="12pt"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"/> + <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/> + <style:text-properties fo:font-size="14pt"/> + </style:style> + <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/> + </style:style> + <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:class="text"> + <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:break-before="page"/> + </style:style> + <text:outline-style style:name="Outline"> + <text:outline-level-style text:level="1" style:num-format=""> + <style:list-level-properties text:min-label-distance="0.381cm"/> + </text:outline-level-style> + </text:outline-style> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="Intro"> + <style:paragraph-properties style:page-number="1"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm"/> + <style:header-style> + <style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0cm"/> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="0.6cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.499cm" style:dynamic-spacing="false"/> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm2"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm"/> + <style:header-style> + <style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.499cm"/> + </style:header-style> + <style:footer-style/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1" style:next-style-name="Intro"> + <style:header> + <text:p/> + </style:header> + <style:footer> + <text:p/> + </style:footer> + </style:master-page> + <style:master-page style:name="Intro" style:page-layout-name="pm2"/> + </office:master-styles> + <office:body> + <office:text text:use-soft-page-breaks="true"> + <text:h text:style-name="Heading_20_1" text:outline-level="1"/> + <text:p text:style-name="P1"/> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/firstLineIndent-withFlag.fodt b/sw/qa/core/text/data/firstLineIndent-withFlag.fodt new file mode 100644 index 000000000..069b960b9 --- /dev/null +++ b/sw/qa/core/text/data/firstLineIndent-withFlag.fodt @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:settings> + <config:config-item-set config:name="ooo:configuration-settings"> + <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item> + </config:config-item-set> + </office:settings> + <office:font-face-decls> + <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="paragraph"> + <style:text-properties style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" fo:hyphenate="false"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"/> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="5.5mm" fo:line-height="100%" fo:text-indent="0cm" style:auto-text-indent="true"/> + </style:style> + <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:line-height="200%" fo:text-indent="0cm" style:auto-text-indent="true"/> + </style:style> + </office:automatic-styles> + <office:body> + <office:text> + <text:p text:style-name="P1">LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. LibreOffice is one of the friendliest and fastest-growing projects in the free and open source software world.</text:p> + <text:p text:style-name="P2">LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. LibreOffice is one of the friendliest and fastest-growing projects in the free and open source software world.</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/footnote-connect.fodt b/sw/qa/core/text/data/footnote-connect.fodt new file mode 100644 index 000000000..dd26db98c --- /dev/null +++ b/sw/qa/core/text/data/footnote-connect.fodt @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ooo="http://openoffice.org/2004/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:settings> + <config:config-item-set config:name="ooo:configuration-settings"> + <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item> + <config:config-item config:name="ContinuousEndnotes" config:type="boolean">true</config:config-item> + </config:config-item-set> + </office:settings> + <office:font-face-decls> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="roman" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:text-properties style:font-name="Liberation Sans" fo:font-size="12pt"/> + </style:default-style> + <style:default-style style:family="table"> + <style:table-properties table:border-model="collapsing"/> + </style:default-style> + <style:default-style style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"> + <style:text-properties style:font-name="Liberation Sans" fo:font-size="12pt"/> + </style:style> + <style:style style:name="Endnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"> + <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt"/> + </style:style> + <style:style style:name="Frame" style:family="graphic"> + </style:style> + </office:styles> + <office:automatic-styles> + <style:style style:name="Table6" style:family="table"> + <style:table-properties style:width="15.983cm" table:align="margins" style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="Table6.A" style:family="table-column"> + <style:table-column-properties style:column-width="15.983cm" style:rel-column-width="65535*"/> + </style:style> + <style:style style:name="Table6.1" style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:style> + <style:style style:name="Table6.A1" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="top" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" fo:padding-bottom="0.199cm" fo:border="none" style:writing-mode="lr-tb"/> + </style:style> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="Standard"> + </style:style> + <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard"> + <style:paragraph-properties fo:break-before="page"/> + </style:style> + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame"> + <style:graphic-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="left" style:horizontal-rel="page-content" fo:background-color="#ffffff" style:background-transparency="100%" draw:fill="solid" draw:fill-color="#ffffff" draw:opacity="0%" fo:padding="0cm" fo:border="none" style:writing-mode="lr-tb" draw:wrap-influence-on-position="once-successive" loext:allow-overlap="true"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.27cm" fo:margin-bottom="3.071cm" fo:margin-left="3cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="39" style:layout-grid-base-height="0.635cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:layout-grid-base-width="0.423cm" style:layout-grid-snap-to="true" style:footnote-max-height="0cm"> + <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style> + <style:header-footer-properties fo:min-height="0.653cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.554cm" style:dynamic-spacing="true"/> + </style:footer-style> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"> + <style:footer> + <text:p></text:p> + </style:footer> + <loext:footer-first> + <text:p text:style-name="Footer"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="paragraph" svg:y="25.506cm" svg:width="15.983cm" draw:z-index="0"><draw:text-box fo:min-height="0.058cm"><table:table table:name="Table6" table:style-name="Table6"><table:table-column table:style-name="Table6.A"/><table:table-row table:style-name="Table6.1"><table:table-cell table:style-name="Table6.A1" office:value-type="string"><text:p text:style-name="Standard">A1</text:p></table:table-cell></table:table-row></table:table></draw:text-box></draw:frame></text:p> + </loext:footer-first> + </style:master-page> + </office:master-styles> + <office:body> + <office:text text:use-soft-page-breaks="true"> + <text:p text:style-name="P1">P01</text:p> + <text:p text:style-name="Standard">P02</text:p> + <text:p text:style-name="Standard">P03</text:p> + <text:p text:style-name="Standard">P04</text:p> + <text:p text:style-name="Standard">P05</text:p> + <text:p text:style-name="Standard">P06</text:p> + <text:p text:style-name="Standard">P07</text:p> + <text:p text:style-name="Standard">P08</text:p> + <text:p text:style-name="Standard">P09</text:p> + <text:p text:style-name="Standard">P10</text:p> + <text:p text:style-name="Standard">P11</text:p> + <text:p text:style-name="Standard">P12</text:p> + <text:p text:style-name="Standard">P13</text:p> + <text:p text:style-name="Standard">P14</text:p> + <text:p text:style-name="Standard">P15</text:p> + <text:p text:style-name="Standard">P16</text:p> + <text:p text:style-name="Standard">P17</text:p> + <text:p text:style-name="Standard">P18</text:p> + <text:p text:style-name="Standard">P19</text:p> + <text:p text:style-name="Standard">P20</text:p> + <text:p text:style-name="Standard">P21</text:p> + <text:p text:style-name="Standard">P22</text:p> + <text:p text:style-name="Standard">P23</text:p> + <text:p text:style-name="Standard">P24</text:p> + <text:p text:style-name="Standard">P25</text:p> + <text:p text:style-name="Standard">P26</text:p> + <text:p text:style-name="Standard">P27</text:p> + <text:p text:style-name="Standard">P28</text:p> + <text:p text:style-name="Standard">P29</text:p> + <text:p text:style-name="Standard">P30</text:p> + <text:p text:style-name="Standard">P31</text:p> + <text:p text:style-name="Standard">P32</text:p> + <text:p text:style-name="Standard">P33</text:p> + <text:p text:style-name="Standard">P34</text:p> + <text:p text:style-name="Standard">P35</text:p> + <text:p text:style-name="Standard">P36</text:p> + <text:p text:style-name="Standard">P37</text:p> + <text:p text:style-name="Standard">P38</text:p> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="P3">P2P01</text:p> + <text:p text:style-name="Standard">P2P02</text:p> + <text:p text:style-name="Standard">P2P03</text:p> + <text:p text:style-name="Standard">P2P04</text:p> + <text:p text:style-name="Standard">P2P05</text:p> + <text:p text:style-name="Standard">P2P06</text:p> + <text:p text:style-name="Standard">P2P07</text:p> + <text:p text:style-name="Standard">P2P08</text:p> + <text:p text:style-name="Standard">P2P09</text:p> + <text:p text:style-name="Standard">P2P10</text:p> + <text:p text:style-name="Standard">P2P11</text:p> + <text:p text:style-name="Standard">P2P12<text:note text:id="ftn1" text:note-class="endnote"><text:note-citation>1</text:note-citation><text:note-body></text:note-body></text:note> First line<text:line-break/>second line</text:p> + <text:p text:style-name="P3"/> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/image.png b/sw/qa/core/text/data/image.png Binary files differnew file mode 100644 index 000000000..49e71b07a --- /dev/null +++ b/sw/qa/core/text/data/image.png diff --git a/sw/qa/core/text/data/line-height.fodt b/sw/qa/core/text/data/line-height.fodt new file mode 100644 index 000000000..d784ec241 --- /dev/null +++ b/sw/qa/core/text/data/line-height.fodt @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics"/> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="84.1cm" fo:page-height="118.9cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm"/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text> + <text:p><draw:frame draw:style-name="fr1" draw:name="Image1" text:anchor-type="as-char" svg:width="84.1cm" svg:height="118.9cm" draw:z-index="0"><draw:image draw:mime-type="image/png"><office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + </office:binary-data></draw:image></draw:frame></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/line-width.fodt b/sw/qa/core/text/data/line-width.fodt new file mode 100644 index 000000000..a6b2b2f5c --- /dev/null +++ b/sw/qa/core/text/data/line-width.fodt @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:automatic-styles> + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics"/> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-height="84.1cm" fo:page-width="118.9cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm"/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text> + <text:p><draw:frame draw:style-name="fr1" draw:name="Image1" text:anchor-type="as-char" svg:height="84.1cm" svg:width="118.9cm" draw:z-index="0"><draw:image draw:mime-type="image/png"><office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + </office:binary-data></draw:image></draw:frame></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/number-portion-format.odt b/sw/qa/core/text/data/number-portion-format.odt Binary files differnew file mode 100644 index 000000000..19b23ae84 --- /dev/null +++ b/sw/qa/core/text/data/number-portion-format.odt diff --git a/sw/qa/core/text/data/number-portion-noformat.docx b/sw/qa/core/text/data/number-portion-noformat.docx Binary files differnew file mode 100644 index 000000000..b289b9c69 --- /dev/null +++ b/sw/qa/core/text/data/number-portion-noformat.docx diff --git a/sw/qa/core/text/data/ruby.fodt b/sw/qa/core/text/data/ruby.fodt new file mode 100644 index 000000000..b5a0e23d2 --- /dev/null +++ b/sw/qa/core/text/data/ruby.fodt @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:font-face-decls> + </office:font-face-decls> + <office:styles> + </office:styles> + <office:automatic-styles> + <style:style style:name="Ru1" style:family="ruby"> + <style:ruby-properties style:ruby-align="left" style:ruby-position="above" loext:ruby-position="above"/> + </style:style> + <style:style style:name="Ru2" style:family="ruby"> + <style:ruby-properties style:ruby-align="center" style:ruby-position="above" loext:ruby-position="above"/> + </style:style> + <style:style style:name="Ru3" style:family="ruby"> + <style:ruby-properties style:ruby-align="right" style:ruby-position="above" loext:ruby-position="above"/> + </style:style> + </office:automatic-styles> + <office:master-styles> + </office:master-styles> + <office:body> + <office:text> + <text:p text:style-name="P1">Ruby test: <text:ruby text:style-name="Ru1"><text:ruby-base>base text</text:ruby-base><text:ruby-text text:style-name="Rubies">ruby (left)</text:ruby-text></text:ruby> <text:ruby text:style-name="Ru2"><text:ruby-base>base text</text:ruby-base><text:ruby-text>ruby (center)</text:ruby-text></text:ruby> <text:ruby text:style-name="Ru3"><text:ruby-base>base text</text:ruby-base><text:ruby-text>ruby (right)</text:ruby-text></text:ruby></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/data/tabovermargin-section.fodt b/sw/qa/core/text/data/tabovermargin-section.fodt new file mode 100644 index 000000000..6fd39c471 --- /dev/null +++ b/sw/qa/core/text/data/tabovermargin-section.fodt @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:settings> + <config:config-item-set config:name="ooo:configuration-settings"> + <config:config-item config:name="TabOverMargin" config:type="boolean">true</config:config-item> + </config:config-item-set> + </office:settings> + <office:styles> + <style:default-style style:family="paragraph"> + </style:default-style> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Index_20_1"> + <style:paragraph-properties> + <style:tab-stops> + <style:tab-stop style:position="17.59cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Sect1" style:family="section"> + <style:section-properties style:editable="false"> + <style:columns fo:column-count="2" fo:column-gap="0cm"> + <style:column style:rel-width="32767*" fo:start-indent="0cm" fo:end-indent="0cm"/> + <style:column style:rel-width="32768*" fo:start-indent="0cm" fo:end-indent="0cm"/> + </style:columns> + </style:section-properties> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" fo:background-color="#ffffff" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="37" style:layout-grid-base-height="0.635cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:layout-grid-base-width="0.423cm" style:layout-grid-snap-to="true" draw:fill="solid" draw:fill-color="#ffffff" draw:opacity="0%" style:footnote-max-height="0cm" loext:margin-gutter="0cm"> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style/> + </style:page-layout> + <style:style style:name="dp1" style:family="drawing-page"> + <style:drawing-page-properties draw:fill="solid" draw:background-size="full" draw:fill-color="#ffffff" draw:opacity="0%"/> + </style:style> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/> + </office:master-styles> + <office:body> + <office:text> + <text:p>before</text:p> + <text:section text:style-name="Sect1" text:name="Section1"> + <text:p text:style-name="P1">hello<text:tab/>1</text:p> + </text:section> + <text:p>after</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx new file mode 100644 index 000000000..eaf5cce31 --- /dev/null +++ b/sw/qa/core/text/text.cxx @@ -0,0 +1,596 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <memory> + +#include <com/sun/star/text/BibliographyDataType.hpp> +#include <com/sun/star/text/WritingMode2.hpp> + +#include <vcl/gdimtf.hxx> +#include <vcl/filter/PDFiumLibrary.hxx> +#include <comphelper/propertyvalue.hxx> +#include <unotools/mediadescriptor.hxx> + +#include <docsh.hxx> +#include <unotxdoc.hxx> +#include <wrtsh.hxx> +#include <IDocumentLayoutAccess.hxx> +#include <rootfrm.hxx> +#include <txtfrm.hxx> +#include <porlay.hxx> +#include <pormulti.hxx> +#include <formatlinebreak.hxx> +#include <sortedobjs.hxx> +#include <anchoredobject.hxx> +#include <fmtcntnt.hxx> +#include <fmtfsize.hxx> +#include <IDocumentRedlineAccess.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/text/data/"; + +/// Covers sw/source/core/text/ fixes. +class SwCoreTextTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testFootnoteConnect) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "footnote-connect.fodt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + // Jump to the start of the next page. + pWrtShell->SttNxtPg(); + // Remove the page break. + pWrtShell->DelLeft(); + // Split the multi-line text frame, containing an endnote. + pWrtShell->DelLeft(); + // Join the split text frame. + pWrtShell->DelLeft(); + // Turn the 3 page document into a 2 page one, so the endnote frame is moved. + // Without the accompanying fix in place, this test would have crashed due to a use-after-free + // in SwFootnoteFrame::GetRef(). + pWrtShell->DelLeft(); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testSemiTransparentText) +{ + // Create an in-memory empty document. + loadURL("private:factory/swriter", nullptr); + + // Set text to half-transparent and type a character. + uno::Reference<beans::XPropertySet> xParagraph(getParagraph(1), uno::UNO_QUERY); + CPPUNIT_ASSERT(xParagraph.is()); + sal_Int16 nTransparence = 50; + xParagraph->setPropertyValue("CharTransparence", uno::Any(nTransparence)); + uno::Reference<text::XTextRange> xTextRange(xParagraph, uno::UNO_QUERY); + CPPUNIT_ASSERT(xTextRange.is()); + xTextRange->setString("x"); + + // Render the document to a metafile. + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + CPPUNIT_ASSERT(pDocShell); + std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile(); + CPPUNIT_ASSERT(xMetaFile); + + // Make sure that DrawTransparent() was used during rendering. + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "//floattransparent"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testBibliographyUrlPdfExport) +{ + // Given a document with a bibliography entry field: + std::shared_ptr<vcl::pdf::PDFium> pPDFium = vcl::pdf::PDFiumLibrary::get(); + if (!pPDFium) + { + return; + } + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("AT")), + comphelper::makePropertyValue("Author", OUString("Author")), + comphelper::makePropertyValue("Title", OUString("Title")), + comphelper::makePropertyValue("URL", OUString("http://www.example.com/test.pdf#page=1")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + + // When exporting to PDF: + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + utl::MediaDescriptor aMediaDescriptor; + aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); + xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); + + // Then make sure the field links the source. + SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); + SvMemoryStream aMemory; + aMemory.WriteStream(aFile); + std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument + = pPDFium->openDocument(aMemory.GetData(), aMemory.GetSize(), OString()); + CPPUNIT_ASSERT(pPdfDocument); + std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = pPdfDocument->openPage(/*nIndex=*/0); + // Without the accompanying fix in place, this test would have failed, the field was not + // clickable (while it was clickable on the UI). + CPPUNIT_ASSERT(pPdfPage->hasLinks()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTabOverMarginSection) +{ + createSwDoc(DATA_DIRECTORY, "tabovermargin-section.fodt"); + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 nWidth + = getXPath(pXmlDoc, "//Text[@nType='PortionType::TabRight']", "nWidth").toInt32(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected less than: 5000 + // - Actual : 9372 + // i.e. the tab portion width was not the expected 4386, but much larger, so the number after + // the tab portion was not visible. + CPPUNIT_ASSERT_LESS(static_cast<sal_Int32>(5000), nWidth); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testLineHeight) +{ + // Given a document with an as-char image, height in twips not fitting into sal_uInt16: + createSwDoc(DATA_DIRECTORY, "line-height.fodt"); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure its top is the top of the page: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 284 + // - Actual : -65252 + // due to various unsigned integer truncations. + assertXPath(pXmlDoc, "//fly/infos/bounds", "top", OUString::number(DOCUMENTBORDER)); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testLineWidth) +{ + // Given a document with an as-char image, width in twips not fitting into sal_uInt16: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "line-width.fodt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + sal_Int32 nOldLeft = pWrtShell->GetCharRect().Left(); + + // When moving the cursor to the right: + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + + // Then make sure we move to the right by the image width: + sal_Int32 nNewLeft = pWrtShell->GetCharRect().Left(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected greater than: 65536 + // - Actual : 1872 + // i.e. the width (around 67408 twips) was truncated. + CPPUNIT_ASSERT_GREATER(static_cast<sal_Int32>(65536), nNewLeft - nOldLeft); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testChineseAutoFirstLineIndent) +{ + // The test document contains two simple multi-line paragraph. For both paragraphs, the first line indent + // is set to 'auto'. Line spacing is 100% for the 1st paragraph and 200% for the 2nd paragraph. + // Also, there is a "AutoFirstLineIndentDisregardLineSpace" capability flag set in the document. + createSwDoc(DATA_DIRECTORY, "firstLineIndent-withFlag.fodt"); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Get the line width of the first line for the 1st paragraph. + sal_Int32 nFirstLineWidth + = getXPath(pXmlDoc, "//body/txt[1]/SwParaPortion/SwLineLayout[1]", "width").toInt32(); + // Get the line width of the first line for the 2nd paragraph. + sal_Int32 nSecondLineWidth + = getXPath(pXmlDoc, "//body/txt[2]/SwParaPortion/SwLineLayout[1]", "width").toInt32(); + + // Tdf#129448: the changing of line-height should not affect the auto first line indent. + // As a result, the first line width of the two paragraphs should be the same. + CPPUNIT_ASSERT_EQUAL(nSecondLineWidth, nFirstLineWidth); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testRuby) +{ + // Given a document with multiple ruby portions: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "ruby.fodt"); + + // When laying out that document: + SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout(); + + // Then make sure that no unwanted margin portions are created, making the actual text + // invisible: + SwFrame* pPageFrame = pLayout->GetLower(); + SwFrame* pBodyFrame = pPageFrame->GetLower(); + SwFrame* pFrame = pBodyFrame->GetLower(); + CPPUNIT_ASSERT(pFrame->IsTextFrame()); + auto pTextFrame = static_cast<SwTextFrame*>(pFrame); + SwParaPortion* pPara = pTextFrame->GetPara(); + bool bFirst = true; + for (SwLinePortion* pPor = pPara->GetFirstPortion(); pPor; pPor = pPor->GetNextPortion()) + { + // Look for multi-portions in the only paragraph of the document. + if (pPor->GetWhichPor() != PortionType::Multi) + { + continue; + } + + if (bFirst) + { + bFirst = false; + continue; + } + + // The second multi-portion has two lines, check the start of the second line. + auto pMulti = static_cast<SwMultiPortion*>(pPor); + // Without the accompanying fix in place, this test would have failed, as the portion was a + // margin portion, not a text portion. The margin was so large that the actual text portion was + // hidden. No margin is needed here at all. + CPPUNIT_ASSERT(pMulti->GetRoot().GetNext()->GetFirstPortion()->IsTextPortion()); + } +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testEmptyNumberingPageSplit) +{ + // Given a document with 2 pages: the only para on page 1 is a numbering without a number + // portion: + createSwDoc(DATA_DIRECTORY, "empty-numbering-page-split.fodt"); + + // When inserting an image that doesn't fit the body frame: + // Then make sure that the layout update after insertion finishes: + uno::Sequence<beans::PropertyValue> aArgs = { + comphelper::makePropertyValue("FileName", + m_directories.getURLFromSrc(DATA_DIRECTORY) + "image.png"), + }; + // Without the accompanying fix in place, this never finished. + dispatchCommand(mxComponent, ".uno:InsertGraphic", aArgs); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreak) +{ + // Given a document with a fly frame and two characters wrapped around it: + createSwDoc(DATA_DIRECTORY, "clearing-break.fodt"); + // Insert a clearing break between "A" and "B": + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xCursor->gotoEnd(/*bSelect=*/false); + xCursor->goLeft(/*nCount=*/1, /*bSelect=*/false); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xLineBreak( + xFactory->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::ALL); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure that the second line "jumps down", below the fly frame: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1024 + // - Actual : 276 + // i.e. the line height wasn't the twips value of the 1.806 cm from the file, but was based on + // the font size of the text, which is only correct for non-clearing breaks. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]", "height", "1024"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreakAtStart) +{ + // Given a document with a fly frame and a character wrapped around it: + createSwDoc(DATA_DIRECTORY, "clearing-break-start.fodt"); + // Insert a clearing break before "X": + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xCursor->gotoEnd(/*bSelect=*/false); + xCursor->goLeft(/*nCount=*/1, /*bSelect=*/false); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xLineBreak( + xFactory->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::ALL); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure that the second line "jumps down", below the fly frame: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1024 + // - Actual : 276 + // i.e. the line height was too small, but only in case the full line was a fly and a break + // portion, without any real content. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]", "height", "1024"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreakLeft) +{ + // Given a document with two anchored objects (left height is 5cm, right height is 7.5cm) and a + // clearing break (type=left): + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + { + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(5000, 5000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + uno::Reference<text::XTextContent> xShapeContent(xShape, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xShapeContent, /*bAbsorb=*/false); + } + { + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(5000, 7500)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + xShapeProps->setPropertyValue("HoriOrientPosition", uno::Any(sal_Int32(10000))); + uno::Reference<text::XTextContent> xShapeContent2(xShape, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xShapeContent2, /*bAbsorb=*/false); + } + uno::Reference<text::XTextContent> xLineBreak( + xFactory->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::LEFT); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + xText->insertString(xCursor, "foo", /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + xText->insertString(xCursor, "bar", /*bAbsorb=*/false); + + // When laying out that document: + calcLayout(); + + // Then make sure the "bar" jumps down below the left shape, but not below the right shape (due + // to type=left): + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2837 + // - Actual : 4254 + // i.e. any non-none type was handled as type=all, and this was jumping below both shapes. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]", "height", "2837"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreakLeftRTL) +{ + // Given a document with an anchored object in an RTL para and a clearing break (type=left): + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<beans::XPropertySet> xCursorProps(xCursor, uno::UNO_QUERY); + xCursorProps->setPropertyValue("WritingMode", uno::Any(text::WritingMode2::RL_TB)); + { + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(5000, 5000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + uno::Reference<text::XTextContent> xShapeContent(xShape, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xShapeContent, /*bAbsorb=*/false); + } + uno::Reference<text::XTextContent> xLineBreak( + xFactory->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::RIGHT); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + xText->insertString(xCursor, "foo", /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + xText->insertString(xCursor, "bar", /*bAbsorb=*/false); + + // When laying out that document: + calcLayout(); + + // Then make sure the "bar" does not jump down (due to type=left && RTL): + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 276 + // - Actual : 2837 + // i.e. left/right was not ignored in the RTL case. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]", "height", "276"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreakVertical) +{ + // Given a document with an anchored object in a vertical page and a clearing break (type=all): + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<beans::XPropertySet> xStandard(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + xStandard->setPropertyValue("WritingMode", uno::Any(text::WritingMode2::TB_RL)); + { + uno::Reference<drawing::XShape> xShape( + xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); + xShape->setSize(awt::Size(5000, 5000)); + uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY); + xShapeProps->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AT_CHARACTER)); + uno::Reference<text::XTextContent> xShapeContent(xShape, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xShapeContent, /*bAbsorb=*/false); + } + uno::Reference<text::XTextContent> xLineBreak( + xFactory->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::ALL); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + xText->insertString(xCursor, "foo", /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + xText->insertString(xCursor, "bar", /*bAbsorb=*/false); + + // When laying out that document: + calcLayout(); + + // Then make sure the "bar" does jump (logic) down the correct amount: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2837 + // - Actual : 7135 + // i.e. the expected break height is the twips value of the 5cm rectangle size, it was much + // more. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]/SwBreakPortion", "height", "2837"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testClearingLineBreakHeader) +{ + // Given a document with a shape in the header and a clearing break in the body text: + createSwDoc(DATA_DIRECTORY, "clearing-break-header.fodt"); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure that the shape from the header is ignored while calculating the line height: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 276 + // - Actual : 15398 + // i.e. the shape was in the background, but we failed to ignore it for the break portion. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout[1]", "height", "276"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testAsCharImageDocModelFromViewPoint) +{ + // Given a document with an as-char image: + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xTextGraphic( + xFactory->createInstance("com.sun.star.text.TextGraphicObject"), uno::UNO_QUERY); + // Only set the anchor type, the actual bitmap content is not interesting. + xTextGraphic->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AS_CHARACTER)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xBodyText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor(xBodyText->createTextCursor()); + uno::Reference<text::XTextContent> xTextContent(xTextGraphic, uno::UNO_QUERY); + xBodyText->insertTextContent(xCursor, xTextContent, false); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwRootFrame* pRootFrame = pWrtShell->GetLayout(); + SwFrame* pPageFrame = pRootFrame->GetLower(); + SwFrame* pBodyFrame = pPageFrame->GetLower(); + SwFrame* pTextFrame = pBodyFrame->GetLower(); + const SwSortedObjs& rSortedObjs = *pTextFrame->GetDrawObjs(); + const SwAnchoredObject* pAnchoredObject = rSortedObjs[0]; + // The content points to the start node, the next node is the graphic node. + SwNodeIndex aGraphicNode = *pAnchoredObject->GetFrameFormat().GetContent().GetContentIdx(); + ++aGraphicNode; + tools::Rectangle aFlyFrame = pAnchoredObject->GetDrawObj()->GetLastBoundRect(); + Point aDocPos = aFlyFrame.Center(); + + // When translating the view point to the model position: + pWrtShell->SttCursorMove(); + pWrtShell->CallSetCursor(&aDocPos, /*bOnlyText=*/false); + pWrtShell->EndCursorMove(); + + // Then make sure that we find the graphic node, and not its anchor: + SwShellCursor* pShellCursor = pWrtShell->getShellCursor(/*bBlock=*/false); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: SwNodeIndex (node 6) + // - Actual : SwNodeIndex (node 12) + // i.e. the cursor position was the text node hosting the as-char image, not the graphic node of + // the image. + CPPUNIT_ASSERT_EQUAL(aGraphicNode, pShellCursor->GetMark()->nNode); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testRedlineDelete) +{ + // Given a document with A4 paper size, some text, redlining on, but hidden: + SwDoc* pDoc = createSwDoc(); + SwDocShell* pDocShell = pDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + { + // Set page size to A4. + size_t nCurIdx = pWrtShell->GetCurPageDesc(); + SwPageDesc aPageDesc(pWrtShell->GetPageDesc(nCurIdx)); + SwFrameFormat& rMaster = aPageDesc.GetMaster(); + SwFormatFrameSize aSize(SwFrameSize::Fixed); + aSize.SetSize(Size(11906, 16838)); + rMaster.SetFormatAttr(aSize); + pWrtShell->ChgPageDesc(nCurIdx, aPageDesc); + } + OUString aBefore("aaaaaaaaa aaaaaaaaaa aa aa aa "); + OUString aDelete("delete eeeeeeeeeee ee eeeeeeeeeee ee eeeeee"); + pWrtShell->Insert(aBefore + " " + aDelete + + " zz zzz zzzzzzzzz zzz zzzz zzzz zzzzzzzzz zzzzzz zzz zzzzzzzzzzz zzz"); + // Enable redlining. + pDocShell->SetChangeRecording(/*bActivate=*/true); + // Hide redlining. + pWrtShell->StartAllAction(); + pWrtShell->GetLayout()->SetHideRedlines(true); + pWrtShell->EndAllAction(); + + // When deleting content in the middle of the paragraph: + pWrtShell->SttEndDoc(/*bStt=*/true); + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, /*nCount=*/aBefore.getLength(), + /*bBasicCall=*/false); + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/true, /*nCount=*/aDelete.getLength(), + /*bBasicCall=*/false); + // Without the accompanying fix in place, this test would have crashed: + pWrtShell->Delete(); + + // Then make sure that the redline is created: + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), + pDoc->getIDocumentRedlineAccess().GetRedlineTable().size()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testNumberPortionFormat) +{ + // Given a document with a single paragraph, direct formatting asks 24pt font size for the + // numbering and the text portion: + createSwDoc(DATA_DIRECTORY, "number-portion-format.odt"); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure that the numbering portion has the correct font size: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 480 + // - Actual : 240 + // i.e. the numbering portion font size was 12pt, not 24pt (but only when the doc had a + // bookmark). + assertXPath(pXmlDoc, "//Special[@nType='PortionType::Number']", "nHeight", "480"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testNumberPortionNoformat) +{ + // Given a document with a numbering and a single paragraph, the entire run is red: + createSwDoc(DATA_DIRECTORY, "number-portion-noformat.docx"); + + // When laying out that document: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + // Then make sure that just because the entire run is red, the numbering portion is not red: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: ffffffff (COL_AUTO) + // - Actual : 00ff0000 (COL_LIGHTRED) + // i.e. the run color affected the color of the number portion in Writer, but not in Word. + CPPUNIT_ASSERT_EQUAL( + OUString("ffffffff"), + getXPath(pXmlDoc, "//Special[@nType='PortionType::Number']/SwFont", "color")); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/tox/tox.cxx b/sw/qa/core/tox/tox.cxx new file mode 100644 index 000000000..a5667a694 --- /dev/null +++ b/sw/qa/core/tox/tox.cxx @@ -0,0 +1,256 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/text/BibliographyDataType.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/text/XDocumentIndex.hpp> +#include <com/sun/star/text/XTextDocument.hpp> + +#include <comphelper/propertyvalue.hxx> + +#include <IDocumentFieldsAccess.hxx> +#include <authfld.hxx> +#include <fmtfld.hxx> + +namespace +{ +/// Covers sw/source/core/tox/ fixes. +class Test : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityLinkClick) +{ + // Create a document with a bibliography reference (of type WWW) in it. + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("ARJ00")), + comphelper::makePropertyValue("Author", OUString("Ar, J")), + comphelper::makePropertyValue("Title", OUString("mytitle")), + comphelper::makePropertyValue("Year", OUString("2020")), + comphelper::makePropertyValue("URL", OUString("http://www.example.com/test.pdf")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + // Create a bibliography table. + uno::Reference<text::XTextContent> xTable( + xFactory->createInstance("com.sun.star.text.Bibliography"), uno::UNO_QUERY); + xCursor->gotoEnd(/*bExpand=*/false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::APPEND_PARAGRAPH, + /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xTable, /*bAbsorb=*/false); + + // Update it. + uno::Reference<text::XDocumentIndex> xTableIndex(xTable, uno::UNO_QUERY); + xTableIndex->update(); + + // Paragraph index: Reference, table header, table row. + // Portion index: ID, etc; then the URL. + auto aActual = getProperty<OUString>(getRun(getParagraph(3), 2), "HyperLinkURL"); + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.container.NoSuchElementException + // i.e. the URL was not clickable and the table row was a single text portion. + CPPUNIT_ASSERT_EQUAL(OUString("http://www.example.com/test.pdf"), aActual); +} + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityTableEntryURL) +{ + // Given a document with a bibliography reference (of type WWW) in it: + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("AT")), + comphelper::makePropertyValue("Author", OUString("Author")), + comphelper::makePropertyValue("Title", OUString("Title")), + comphelper::makePropertyValue("URL", OUString("http://www.example.com/test.pdf#page=1")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + // Create a bibliography table. + uno::Reference<text::XTextContent> xTable( + xFactory->createInstance("com.sun.star.text.Bibliography"), uno::UNO_QUERY); + xCursor->gotoEnd(/*bExpand=*/false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::APPEND_PARAGRAPH, + /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xTable, /*bAbsorb=*/false); + + // When updating that table: + uno::Reference<text::XDocumentIndex> xTableIndex(xTable, uno::UNO_QUERY); + xTableIndex->update(); + + // Then the page number from the source's URL should be stripped: + // Paragraph index: Reference, table header, table row. + // Portion index: ID, etc; then the URL. + auto aActual = getProperty<OUString>(getRun(getParagraph(3), 2), "HyperLinkURL"); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: http://www.example.com/test.pdf + // - Actual : http://www.example.com/test.pdf#page=1 + // i.e. the page number was still part of the bibliography table. + CPPUNIT_ASSERT_EQUAL(OUString("http://www.example.com/test.pdf"), aActual); +} + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityTableEntryClick) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a biblio entry field with an URL: + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("AT")), + comphelper::makePropertyValue("Author", OUString("Author")), + comphelper::makePropertyValue("Title", OUString("Title")), + comphelper::makePropertyValue("URL", OUString("http://www.example.com/test.pdf#page=1")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + + // Then make sure that the field is clickable, since the page part will not be part of the + // bibliography table: + const SwFieldTypes* pTypes = pDoc->getIDocumentFieldsAccess().GetFieldTypes(); + auto it = std::find_if(pTypes->begin(), pTypes->end(), + [](const std::unique_ptr<SwFieldType>& pType) { + return pType->Which() == SwFieldIds::TableOfAuthorities; + }); + CPPUNIT_ASSERT(it != pTypes->end()); + const SwFieldType* pType = it->get(); + std::vector<SwFormatField*> aFormatFields; + pType->GatherFields(aFormatFields); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aFormatFields.size()); + SwField* pField = aFormatFields[0]->GetField(); + // Without the accompanying fix in place, this test would have failed, as the field was not + // clickable. + CPPUNIT_ASSERT(pField->IsClickable()); + // This is needed, so the mouse has the correct RefHand pointer style. + CPPUNIT_ASSERT(pField->HasClickHdl()); +} + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityTableEntryRelClick) +{ + // Given an empty document with a file:// base URL: + SwDoc* pDoc = createSwDoc(); + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aArgs = { + comphelper::makePropertyValue("FilterName", OUString("writer8")), + }; + xStorable->storeAsURL(maTempFile.GetURL(), aArgs); + + // When inserting a biblio entry field with a relative URL: + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("AT")), + comphelper::makePropertyValue("Author", OUString("Author")), + comphelper::makePropertyValue("Title", OUString("Title")), + comphelper::makePropertyValue("URL", OUString("test.pdf#page=1")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + + // Then make sure that the field is clickable: + const SwFieldTypes* pTypes = pDoc->getIDocumentFieldsAccess().GetFieldTypes(); + auto it = std::find_if(pTypes->begin(), pTypes->end(), + [](const std::unique_ptr<SwFieldType>& pType) { + return pType->Which() == SwFieldIds::TableOfAuthorities; + }); + CPPUNIT_ASSERT(it != pTypes->end()); + const SwFieldType* pType = it->get(); + std::vector<SwFormatField*> aFormatFields; + pType->GatherFields(aFormatFields); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aFormatFields.size()); + auto pField = static_cast<SwAuthorityField*>(aFormatFields[0]->GetField()); + CPPUNIT_ASSERT(pField->GetAbsoluteURL().startsWith("file://")); +} + +CPPUNIT_TEST_FIXTURE(Test, testAuthorityTableURLDeduplication) +{ + // Given a document with 3 bibliography references (of type WWW) in it: + static const std::initializer_list<std::u16string_view> aURLs = { + u"http://www.example.com/test.pdf#page=1", + u"http://www.example.com/test.pdf#page=2", + u"http://www.example.com/test2.pdf", + }; + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + for (const auto& rURL : aURLs) + { + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("AT")), + comphelper::makePropertyValue("Author", OUString("Author")), + comphelper::makePropertyValue("Title", OUString("Title")), + comphelper::makePropertyValue("URL", OUString(rURL)), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + } + // Create a bibliography table. + uno::Reference<text::XTextContent> xTable( + xFactory->createInstance("com.sun.star.text.Bibliography"), uno::UNO_QUERY); + xCursor->gotoEnd(/*bExpand=*/false); + xText->insertControlCharacter(xCursor, text::ControlCharacter::APPEND_PARAGRAPH, + /*bAbsorb=*/false); + xText->insertTextContent(xCursor, xTable, /*bAbsorb=*/false); + + // When updating that table: + uno::Reference<text::XDocumentIndex> xTableIndex(xTable, uno::UNO_QUERY); + xTableIndex->update(); + + // Then the first two fields should be merged to a single source, but not the third. + CPPUNIT_ASSERT_EQUAL(OUString("AT: Author, Title, , http://www.example.com/test.pdf"), + getParagraph(3)->getString()); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: AT: Author, Title, , http://www.example.com/test2.pdf + // - Actual : AT: Author, Title, , http://www.example.com/test.pdf + // i.e. test.pdf was mentioned twice, without deduplication. + CPPUNIT_ASSERT_EQUAL(OUString("AT: Author, Title, , http://www.example.com/test2.pdf"), + getParagraph(4)->getString()); +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/txtnode/data/btlr-cell-chinese.doc b/sw/qa/core/txtnode/data/btlr-cell-chinese.doc Binary files differnew file mode 100644 index 000000000..a4a70f677 --- /dev/null +++ b/sw/qa/core/txtnode/data/btlr-cell-chinese.doc diff --git a/sw/qa/core/txtnode/data/fly-anchor-undo.odt b/sw/qa/core/txtnode/data/fly-anchor-undo.odt Binary files differnew file mode 100644 index 000000000..dd2093161 --- /dev/null +++ b/sw/qa/core/txtnode/data/fly-anchor-undo.odt diff --git a/sw/qa/core/txtnode/data/textbox-copy-anchor.docx b/sw/qa/core/txtnode/data/textbox-copy-anchor.docx Binary files differnew file mode 100644 index 000000000..b835097f1 --- /dev/null +++ b/sw/qa/core/txtnode/data/textbox-copy-anchor.docx diff --git a/sw/qa/core/txtnode/data/textbox-node-split.docx b/sw/qa/core/txtnode/data/textbox-node-split.docx Binary files differnew file mode 100644 index 000000000..5760ee6e2 --- /dev/null +++ b/sw/qa/core/txtnode/data/textbox-node-split.docx diff --git a/sw/qa/core/txtnode/data/title-field-invalidate.fodt b/sw/qa/core/txtnode/data/title-field-invalidate.fodt new file mode 100644 index 000000000..e7d07cab7 --- /dev/null +++ b/sw/qa/core/txtnode/data/title-field-invalidate.fodt @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:meta> + <dc:subject>mysubject</dc:subject> + <dc:title>mytitle</dc:title> + <meta:user-defined meta:name="Version" meta:value-type="string">1.1</meta:user-defined> + </office:meta> + <office:automatic-styles> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="14.8cm" fo:page-height="21.0cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm"/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:display-name="Standard" style:page-layout-name="pm1" style:next-style-name="Standard"> + <style:footer> + <text:p><text:subject>mysubject</text:subject> <text:title>mytitle</text:title> <text:user-defined text:name="Version">1.1</text:user-defined> <text:modification-date>May 18, 2021</text:modification-date></text:p> + </style:footer> + </style:master-page> + </office:master-styles> + <office:body> + <office:text> + <text:p>body text</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/core/txtnode/justify.cxx b/sw/qa/core/txtnode/justify.cxx new file mode 100644 index 000000000..0bdcd01e3 --- /dev/null +++ b/sw/qa/core/txtnode/justify.cxx @@ -0,0 +1,182 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> +#include <justify.hxx> +#include <cstddef> +#include <vector> + +namespace +{ +/// Covers sw/source/core/txtnode/justify fixes. +class SwCoreJustifyTest : public SwModelTestBase +{ +}; + +/// CharWidthArray: store char widths because they are more readable. +class CharWidthArray +{ +public: + std::vector<sal_Int32> maArray; + template <typename... Args> + CharWidthArray(Args&&... args) + : maArray{ std::forward<Args>(args)... } + { + } + template <typename Function> void InvokeWithKernArray(Function f); + void ConvertToKernArray(); + void ConvertToCharWidths(); +}; + +inline bool operator==(const CharWidthArray& lhs, const CharWidthArray& rhs) +{ + return lhs.maArray == rhs.maArray; +} + +std::ostream& operator<<(std::ostream& rStrm, const CharWidthArray& rCharWidthArray) +{ + const std::vector<sal_Int32>& rArray(rCharWidthArray.maArray); + sal_Int32 nLen = rArray.size(); + rStrm << "{ "; + for (sal_Int32 i = 0; i < nLen; ++i) + { + rStrm << rArray[i]; + rStrm << (i < nLen - 1 ? ", " : " "); + } + rStrm << "}"; + return rStrm; +} + +void CharWidthArray::ConvertToKernArray() +{ + for (std::size_t i = 1; i < maArray.size(); ++i) + maArray[i] += maArray[i - 1]; +} + +void CharWidthArray::ConvertToCharWidths() +{ + for (sal_Int32 i = maArray.size() - 1; i > 0; --i) + maArray[i] -= maArray[i - 1]; +} + +/// Convert maArray to kern array values, then invoke the function, and convert it back. +template <typename Function> void CharWidthArray::InvokeWithKernArray(Function f) +{ + ConvertToKernArray(); + f(); + ConvertToCharWidths(); +} +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSpaceDistributionHalfSpace) +{ + // Related to: tdf#149017 + static const OUStringLiteral aText = u"ne del pro"; + CharWidthArray aActual{ 720, 639, 360, 720, 639, 400, 360, 720, 480, 720 }; + CharWidthArray aExpected{ 720, 851, 573, 720, 639, 612, 573, 720, 480, 720 }; + + aActual.InvokeWithKernArray( + [&] { Justify::SpaceDistribution(aActual.maArray, aText, 0, 10, 425, 0, false); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSpaceDistributionNoHalfSpace) +{ + // Related to: tdf#149017 + static const OUStringLiteral aText = u"ne del pro"; + CharWidthArray aActual{ 720, 639, 360, 720, 639, 400, 360, 720, 480, 720 }; + CharWidthArray aExpected{ 720, 639, 785, 720, 639, 400, 785, 720, 480, 720 }; + + aActual.InvokeWithKernArray( + [&] { Justify::SpaceDistribution(aActual.maArray, aText, 0, 10, 425, 0, true); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSpaceDistributionUnicodeIVS) +{ + // Related to: tdf#148594 + static const OUStringLiteral aText + = u"\u9B54\u9AD8\u4E00\U000E01E1\u4E08\u4F55\u9B54\u9AD8\u4E00\U000E01E1"; + CharWidthArray aActual{ 1600, 1600, 1600, 0, 0, 1600, 1600, 1600, 1600, 1600, 0, 0 }; + CharWidthArray aExpected{ 1800, 1800, 1800, 0, 0, 1800, 1800, 1800, 1800, 1800, 0, 0 }; + aActual.InvokeWithKernArray( + [&] { Justify::SpaceDistribution(aActual.maArray, aText, 0, 12, 0, 200, false); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGrid) +{ + tools::Long nDelta = 0; + // "曰〈é“高一尺化太平〉云云" + static const OUStringLiteral aText + = u"\u66f0\u3008\u9053\u9ad8\u4e00\u5c3a\u5316\u592a\u5e73\u3009\u4e91\u4e91"; + CharWidthArray aActual{ 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880 }; + CharWidthArray aExpected{ + 1360, 1040, 1200, 1200, 1200, 1200, 1200, 1200, 1040, 1360, 1200, 1040 + }; + aActual.InvokeWithKernArray( + [&] { nDelta = Justify::SnapToGrid(aActual.maArray, aText, 0, 12, 400, false); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); + CPPUNIT_ASSERT_EQUAL(tools::Long(160), nDelta); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGridMixWidth) +{ + // Related to: tdf#149365 + tools::Long nDelta = 0; + // "ä¸ä¸ä¸ï½¹ï½ºï½»ï½¼ï½½ï½¾ï½¿ï½¶ï½¹ï½º" ( mixing fullwidth ideograph and half-width kana ) + static const OUStringLiteral aText + = u"\u4e2d\u4e2d\u4e2d\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff76\uff79\uff7a"; + CharWidthArray aActual{ 640, 640, 640, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320 }; + CharWidthArray aExpected{ 800, 800, 760, 400, 400, 400, 400, 400, 400, 400, 400, 400, 360 }; + aActual.InvokeWithKernArray( + [&] { nDelta = Justify::SnapToGrid(aActual.maArray, aText, 0, 13, 400, false); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); + CPPUNIT_ASSERT_EQUAL(tools::Long(80), nDelta); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGridIVS) +{ + // Related to: tdf#149214 + tools::Long nDelta = 0; + static const OUStringLiteral aText = u"\u9053\u9ad8\u4e00\U000E01E2\u5c3a\u5316"; + + CharWidthArray aActual{ 800, 800, 800, 0, 0, 800, 800 }; + CharWidthArray aExpected{ 800, 800, 800, 0, 0, 800, 800 }; + aActual.InvokeWithKernArray( + [&] { nDelta = Justify::SnapToGrid(aActual.maArray, aText, 0, 7, 400, false); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); + CPPUNIT_ASSERT_EQUAL(tools::Long(0), nDelta); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGridEdge1) +{ + CharWidthArray aActual{ 640, 640, 640, 640, 640, 640, 320, 960 }; + CharWidthArray aExpected{ 840, 840, 840, 840, 840, 840, 440, 1240 }; + aActual.InvokeWithKernArray([&] { Justify::SnapToGridEdge(aActual.maArray, 8, 400, 40, 0); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGridEdge2) +{ + CharWidthArray aActual{ 640, 640, 640, 640, 640, 640, 320, 640 }; + CharWidthArray aExpected{ 840, 840, 840, 840, 840, 840, 440, 840 }; + aActual.InvokeWithKernArray([&] { Justify::SnapToGridEdge(aActual.maArray, 8, 100, 40, 80); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreJustifyTest, testSnapToGridEdgeIVS) +{ + CharWidthArray aActual{ 640, 0, 0, 640, 640, 640, 640, 640 }; + CharWidthArray aExpected{ 840, 0, 0, 840, 840, 840, 840, 840 }; + aActual.InvokeWithKernArray([&] { Justify::SnapToGridEdge(aActual.maArray, 8, 400, 40, 0); }); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/txtnode/txtnode.cxx b/sw/qa/core/txtnode/txtnode.cxx new file mode 100644 index 000000000..bd9bcd66d --- /dev/null +++ b/sw/qa/core/txtnode/txtnode.cxx @@ -0,0 +1,323 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <LibreOfficeKit/LibreOfficeKitEnums.h> +#include <comphelper/lok.hxx> +#include <sfx2/viewsh.hxx> +#include <vcl/gdimtf.hxx> +#include <vcl/scheduler.hxx> +#include <sfx2/lokhelper.hxx> +#include <test/lokcallback.hxx> +#include <editeng/escapementitem.hxx> + +#include <IDocumentStatistics.hxx> +#include <fmtanchr.hxx> +#include <frameformats.hxx> +#include <wrtsh.hxx> +#include <unotxdoc.hxx> +#include <docsh.hxx> +#include <formatcontentcontrol.hxx> +#include <view.hxx> +#include <edtwin.hxx> +#include <txatbase.hxx> +#include <ndtxt.hxx> +#include <textcontentcontrol.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/txtnode/data/"; + +/// Covers sw/source/core/txtnode/ fixes. +class SwCoreTxtnodeTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testBtlrCellChinese) +{ + // Load a document with a table cell, with btlr cell direction. The cell has text which is + // classified as vertical, i.e. the glyph has the same direction in both the lrtb ("Latin") and + // tbrl ("Chinese") directions. Make sure that Chinese text is handled the same way in the btlr + // case as it's handled in the Latin case. + load(DATA_DIRECTORY, "btlr-cell-chinese.doc"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile(); + MetafileXmlDump dumper; + xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + assertXPath(pXmlDoc, "//font[1]", "orientation", "900"); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: false + // - Actual : true + // i.e. the glyph was rotated further, so it was upside down. + assertXPath(pXmlDoc, "//font[1]", "vertical", "false"); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testTextBoxCopyAnchor) +{ + load(DATA_DIRECTORY, "textbox-copy-anchor.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pShell->GetWrtShell(); + SwDoc aClipboard; + pWrtShell->SelAll(); + pWrtShell->Copy(aClipboard); + pWrtShell->SttEndDoc(/*bStart=*/false); + pWrtShell->Paste(aClipboard); + + const SwFrameFormats& rFormats = *pShell->GetDoc()->GetSpzFrameFormats(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4 + // - Actual : 6 + // i.e. 2 fly frames were copied twice. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), rFormats.size()); + + SwPosition aDrawAnchor1 = *rFormats[0]->GetAnchor().GetContentAnchor(); + SwPosition aFlyAnchor1 = *rFormats[1]->GetAnchor().GetContentAnchor(); + CPPUNIT_ASSERT_EQUAL(aFlyAnchor1.nNode, aDrawAnchor1.nNode); + SwPosition aDrawAnchor2 = *rFormats[2]->GetAnchor().GetContentAnchor(); + SwPosition aFlyAnchor2 = *rFormats[3]->GetAnchor().GetContentAnchor(); + // This also failed, aFlyAnchor2 was wrong, as it got out of sync with aDrawAnchor2. + CPPUNIT_ASSERT_EQUAL(aFlyAnchor2.nNode, aDrawAnchor2.nNode); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testTextBoxNodeSplit) +{ + load(DATA_DIRECTORY, "textbox-node-split.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pShell->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStart=*/false); + // Without the accompanying fix in place, this would have crashed in + // SwFlyAtContentFrame::SwClientNotify(). + pWrtShell->SplitNode(); +} + +namespace +{ +struct ViewCallback +{ + int m_nInvalidations = 0; + + static void callback(int nType, const char* pPayload, void* pData); + void callbackImpl(int nType, const char* pPayload); +}; + +void ViewCallback::callback(int nType, const char* pPayload, void* pData) +{ + static_cast<ViewCallback*>(pData)->callbackImpl(nType, pPayload); +} + +void ViewCallback::callbackImpl(int nType, const char* /*pPayload*/) +{ + switch (nType) + { + case LOK_CALLBACK_INVALIDATE_TILES: + { + ++m_nInvalidations; + } + break; + } +} +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testTitleFieldInvalidate) +{ + // Set up LOK to track invalidations. + comphelper::LibreOfficeKit::setActive(true); + + // Given a document with a title field: + load(DATA_DIRECTORY, "title-field-invalidate.fodt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + pTextDoc->initializeForTiledRendering({}); + SwDocShell* pShell = pTextDoc->GetDocShell(); + SwDoc* pDoc = pShell->GetDoc(); + SwWrtShell* pWrtShell = pShell->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStt=*/false); + ViewCallback aCallback; + TestLokCallbackWrapper aCallbackWrapper(&ViewCallback::callback, &aCallback); + pWrtShell->GetSfxViewShell()->setLibreOfficeKitViewCallback(&aCallbackWrapper); + aCallbackWrapper.setLOKViewId(SfxLokHelper::getView(pWrtShell->GetSfxViewShell())); + Scheduler::ProcessEventsToIdle(); + aCallback.m_nInvalidations = 0; + + // When typing to the document: + pWrtShell->Insert("x"); + pWrtShell->GetSfxViewShell()->flushPendingLOKInvalidateTiles(); + + // Then make sure that only the text frame at the cursor is invalidated: + pDoc->getIDocumentStatistics().GetUpdatedDocStat(/*bCompleteAsync=*/true, /*bFields=*/false); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 2 + // i.e. the footer was also invalidated on each keypress. + CPPUNIT_ASSERT_EQUAL(1, aCallback.m_nInvalidations); + + // Tear down LOK. + pWrtShell->GetSfxViewShell()->setLibreOfficeKitViewCallback(nullptr); + mxComponent->dispose(); + mxComponent.clear(); + comphelper::LibreOfficeKit::setActive(false); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testFlyAnchorUndo) +{ + // Given a document with a fly frame, anchored after the last char of the document: + load(DATA_DIRECTORY, "fly-anchor-undo.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pShell = pTextDoc->GetDocShell(); + SwDoc* pDoc = pShell->GetDoc(); + const SwFrameFormats& rSpz = *pDoc->GetSpzFrameFormats(); + sal_Int32 nExpected = rSpz[0]->GetAnchor().GetContentAnchor()->nContent.GetIndex(); + + // When deleting that last character and undoing it: + SwWrtShell* pWrtShell = pShell->GetWrtShell(); + pWrtShell->SttEndDoc(/*bStt=*/false); + pWrtShell->DelLeft(); + pWrtShell->Undo(); + + // Then make sure the anchor position after the undo is the same as the original: + sal_Int32 nActual = rSpz[0]->GetAnchor().GetContentAnchor()->nContent.GetIndex(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 3 + // - Actual : 2 + // i.e. the anchor position was left unchanged by the undo. + CPPUNIT_ASSERT_EQUAL(nExpected, nActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testSplitNodeSuperscriptCopy) +{ + // Given a document with superscript text at the end of a paragraph: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->Insert("1st"); + pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 2, /*bBasicCall=*/false); + SfxItemSetFixed<RES_CHRATR_ESCAPEMENT, RES_CHRATR_ESCAPEMENT> aSet(pWrtShell->GetAttrPool()); + SvxEscapementItem aItem(SvxEscapement::Superscript, RES_CHRATR_ESCAPEMENT); + aSet.Put(aItem); + pWrtShell->SetAttrSet(aSet); + + // When hitting enter at the end of the paragraph: + pWrtShell->SttEndDoc(/*bStt=*/false); + pWrtShell->SplitNode(/*bAutoFormat=*/true); + + // Then make sure that the superscript formatting doesn't appear on the next paragraph: + aSet.ClearItem(RES_CHRATR_ESCAPEMENT); + pWrtShell->GetCurAttr(aSet); + // Without the accompanying fix in place, this test would have failed, the unexpected + // superscript appeared in the next paragraph. + CPPUNIT_ASSERT(!aSet.HasItem(RES_CHRATR_ESCAPEMENT)); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testInsertDropDownContentControlTwice) +{ + // Given an already selected dropdown content control: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::DROP_DOWN_LIST); + + // When trying to insert an inner one, make sure that we don't crash: + pWrtShell->InsertContentControl(SwContentControlType::DROP_DOWN_LIST); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testCheckboxContentControlKeyboard) +{ + // Given an already selected checkbox content control: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::CHECKBOX); + SwEditWin& rEditWin = pWrtShell->GetView().GetEditWin(); + + // When pressing space on the keyboard: + KeyEvent aKeyEvent(' ', KEY_SPACE); + rEditWin.KeyInput(aKeyEvent); + + // Then make sure the state is toggled: + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + // Without the accompanying fix in place, this test would have failed, because the state + // remained unchanged. + CPPUNIT_ASSERT(pContentControl->GetChecked()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testDropdownContentControlKeyboard) +{ + // Given an already selected dropdown content control: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::DROP_DOWN_LIST); + + // When checking if alt-down should open a popup: + SwTextContentControl* pTextContentControl = pWrtShell->CursorInsideContentControl(); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + vcl::KeyCode aKeyCode(KEY_DOWN, KEY_MOD2); + bool bShouldOpen = pContentControl->ShouldOpenPopup(aKeyCode); + + // Then make sure that the answer is yes for dropdowns: + // Without the accompanying fix in place, this test would have failed, the dropdown popup was + // mouse-only. + CPPUNIT_ASSERT(bShouldOpen); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testPictureContentControlKeyboard) +{ + // Given an already selected picture content control: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::PICTURE); + pWrtShell->GotoObj(/*bNext=*/true, GotoObjFlags::Any); + + // When checking if enter should trigger the file picker: + const SwFrameFormat* pFlyFormat = pWrtShell->GetFlyFrameFormat(); + const SwFormatAnchor& rFormatAnchor = pFlyFormat->GetAnchor(); + const SwPosition* pAnchorPos = rFormatAnchor.GetContentAnchor(); + SwTextNode* pTextNode = pAnchorPos->nNode.GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrAt(pAnchorPos->nContent.GetIndex(), + RES_TXTATR_CONTENTCONTROL, SwTextNode::PARENT); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + bool bIsInteracting = pContentControl->IsInteractingCharacter('\r'); + + // Then make sure that the answer is yes for pictures: + // Without the accompanying fix in place, this test would have failed, the picture replacement + // file-picker was mouse-only. + CPPUNIT_ASSERT(bIsInteracting); +} + +CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testDateContentControlKeyboard) +{ + // Given an already selected date content control: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + pWrtShell->InsertContentControl(SwContentControlType::DATE); + + // When checking if alt-down should open a popup: + SwTextContentControl* pTextContentControl = pWrtShell->CursorInsideContentControl(); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + vcl::KeyCode aKeyCode(KEY_DOWN, KEY_MOD2); + bool bShouldOpen = pContentControl->ShouldOpenPopup(aKeyCode); + + // Then make sure that the answer is yes for date: + // Without the accompanying fix in place, this test would have failed, the date popup was + // mouse-only. + CPPUNIT_ASSERT(bShouldOpen); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/undo/data/table-copy-redline.odt b/sw/qa/core/undo/data/table-copy-redline.odt Binary files differnew file mode 100644 index 000000000..f39168782 --- /dev/null +++ b/sw/qa/core/undo/data/table-copy-redline.odt diff --git a/sw/qa/core/undo/data/textbox-cut-save.docx b/sw/qa/core/undo/data/textbox-cut-save.docx Binary files differnew file mode 100644 index 000000000..a1a350d08 --- /dev/null +++ b/sw/qa/core/undo/data/textbox-cut-save.docx diff --git a/sw/qa/core/undo/data/textbox-cut-undo.docx b/sw/qa/core/undo/data/textbox-cut-undo.docx Binary files differnew file mode 100644 index 000000000..35f0e8571 --- /dev/null +++ b/sw/qa/core/undo/data/textbox-cut-undo.docx diff --git a/sw/qa/core/undo/undo.cxx b/sw/qa/core/undo/undo.cxx new file mode 100644 index 000000000..0e9ef5b02 --- /dev/null +++ b/sw/qa/core/undo/undo.cxx @@ -0,0 +1,108 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <unotools/mediadescriptor.hxx> +#include <sfx2/viewfrm.hxx> +#include <sfx2/dispatch.hxx> + +#include <unotxdoc.hxx> +#include <docsh.hxx> +#include <wrtsh.hxx> +#include <swdtflvr.hxx> +#include <frameformats.hxx> +#include <fmtcntnt.hxx> +#include <view.hxx> +#include <cmdid.h> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/undo/data/"; + +/// Covers sw/source/core/undo/ fixes. +class SwCoreUndoTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreUndoTest, testTextboxCutSave) +{ + // Load the document and select all. + load(DATA_DIRECTORY, "textbox-cut-save.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + pWrtShell->SelAll(); + + // Cut. + rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell); + pTransfer->Cut(); + + // Undo. + pWrtShell->Undo(); + + // Save. + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + utl::MediaDescriptor aMediaDescriptor; + aMediaDescriptor["FilterName"] <<= OUString("Office Open XML Text"); + + // Without the accompanying fix in place, this test would have failed with: + // void sax_fastparser::FastSaxSerializer::endDocument(): Assertion `mbMarkStackEmpty && maMarkStack.empty()' failed. + // i.e. failed to save because we tried to write not-well-formed XML. + xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUndoTest, testTextboxCutUndo) +{ + load(DATA_DIRECTORY, "textbox-cut-undo.docx"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + SwDoc* pDoc = pDocShell->GetDoc(); + SwView* pView = pDoc->GetDocShell()->GetView(); + + pView->GetViewFrame()->GetDispatcher()->Execute(FN_CNTNT_TO_NEXT_FRAME, SfxCallMode::SYNCHRON); + pView->StopShellTimer(); + rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell); + pTransfer->Cut(); + SwFrameFormats& rSpzFrameFormats = *pDoc->GetSpzFrameFormats(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rSpzFrameFormats.size()); + + pWrtShell->Undo(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rSpzFrameFormats.size()); + + const SwNodeIndex* pIndex1 = rSpzFrameFormats[0]->GetContent().GetContentIdx(); + const SwNodeIndex* pIndex2 = rSpzFrameFormats[1]->GetContent().GetContentIdx(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 5 + // - Actual : 8 + // i.e. the draw frame format had a wrong node index in its content. + CPPUNIT_ASSERT_EQUAL(pIndex1->GetIndex(), pIndex2->GetIndex()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUndoTest, testTableCopyRedline) +{ + // Given a document with two table cells and redlining enabled: + load(DATA_DIRECTORY, "table-copy-redline.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + + // When doing select-all, copy, paste and undo: + pWrtShell->SelAll(); + rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell); + pTransfer->Copy(); + TransferableDataHelper aHelper(pTransfer); + SwTransferable::Paste(*pWrtShell, aHelper); + + // Without the accompanying fix in place, this test would have crashed. + pWrtShell->Undo(); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/unocore/data/broken-embedded-object.odt b/sw/qa/core/unocore/data/broken-embedded-object.odt Binary files differnew file mode 100644 index 000000000..94a080923 --- /dev/null +++ b/sw/qa/core/unocore/data/broken-embedded-object.odt diff --git a/sw/qa/core/unocore/data/graphic.png b/sw/qa/core/unocore/data/graphic.png Binary files differnew file mode 100644 index 000000000..fdad35484 --- /dev/null +++ b/sw/qa/core/unocore/data/graphic.png diff --git a/sw/qa/core/unocore/data/paragraph-marker-formatted-run.docx b/sw/qa/core/unocore/data/paragraph-marker-formatted-run.docx Binary files differnew file mode 100644 index 000000000..c0635c157 --- /dev/null +++ b/sw/qa/core/unocore/data/paragraph-marker-formatted-run.docx diff --git a/sw/qa/core/unocore/data/paragraph-marker.docx b/sw/qa/core/unocore/data/paragraph-marker.docx Binary files differnew file mode 100644 index 000000000..8dac2d96c --- /dev/null +++ b/sw/qa/core/unocore/data/paragraph-marker.docx diff --git a/sw/qa/core/unocore/data/tdf119081.odt b/sw/qa/core/unocore/data/tdf119081.odt Binary files differnew file mode 100644 index 000000000..a9b479dd5 --- /dev/null +++ b/sw/qa/core/unocore/data/tdf119081.odt diff --git a/sw/qa/core/unocore/unocore.cxx b/sw/qa/core/unocore/unocore.cxx new file mode 100644 index 000000000..cce4d837c --- /dev/null +++ b/sw/qa/core/unocore/unocore.cxx @@ -0,0 +1,722 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <com/sun/star/text/BibliographyDataType.hpp> +#include <com/sun/star/text/XTextAppend.hpp> +#include <com/sun/star/text/XTextFrame.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/text/XDependentTextField.hpp> +#include <com/sun/star/document/XDocumentInsertable.hpp> + +#include <comphelper/propertyvalue.hxx> +#include <comphelper/sequenceashashmap.hxx> +#include <vcl/errinf.hxx> + +#include <wrtsh.hxx> +#include <unotextrange.hxx> +#include <unotxdoc.hxx> +#include <docsh.hxx> +#include <ndtxt.hxx> +#include <textlinebreak.hxx> +#include <textcontentcontrol.hxx> + +using namespace ::com::sun::star; + +namespace +{ +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/unocore/data/"; +} + +/// Covers sw/source/core/unocore/ fixes. +class SwCoreUnocoreTest : public SwModelTestBase +{ +}; + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testTdf119081) +{ + // Load a doc with a nested table in it. + load(DATA_DIRECTORY, "tdf119081.odt"); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); + + // Enter outer A1. + pWrtShell->Down(/*bSelect=*/false, /*nCount=*/3); + // Enter inner A1. + pWrtShell->Right(CRSR_SKIP_CELLS, /*bSelect=*/false, /*nCount=*/1, /*bBasicCall=*/false, + /*bVisual=*/true); + // Enter outer B1. + pWrtShell->Down(/*bSelect=*/false, /*nCount=*/2); + + SwDoc* pDoc = pDocShell->GetDoc(); + SwPaM& rCursor = pWrtShell->GetCurrentShellCursor(); + uno::Reference<text::XTextRange> xInsertPosition + = SwXTextRange::CreateXTextRange(*pDoc, *rCursor.GetPoint(), nullptr); + uno::Reference<text::XTextAppend> xTextAppend(xInsertPosition->getText(), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.uno.RuntimeException + xTextAppend->insertTextPortion("x", {}, xInsertPosition); + + // Verify that the string is indeed inserted. + pWrtShell->Left(CRSR_SKIP_CELLS, /*bSelect=*/true, /*nCount=*/1, /*bBasicCall=*/false, + /*bVisual=*/true); + CPPUNIT_ASSERT_EQUAL(OUString("x"), pWrtShell->GetCurrentShellCursor().GetText()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, flyAtParaAnchor) +{ + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<lang::XMultiServiceFactory> const xMSF(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<text::XTextDocument> const xTD(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<text::XTextFrame> const xTextFrame( + xMSF->createInstance("com.sun.star.text.TextFrame"), uno::UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> const xFrameProps(xTextFrame, uno::UNO_QUERY_THROW); + xFrameProps->setPropertyValue("AnchorType", uno::Any(text::TextContentAnchorType_AT_PARAGRAPH)); + auto const xText = xTD->getText(); + auto const xTextCursor = xText->createTextCursor(); + CPPUNIT_ASSERT(xTextCursor.is()); + xText->insertTextContent(xTextCursor, xTextFrame, false); + auto const xAnchor = xTextFrame->getAnchor(); + uno::Reference<text::XTextContent> const xFieldmark( + xMSF->createInstance("com.sun.star.text.Fieldmark"), uno::UNO_QUERY_THROW); + // this crashed because the anchor didn't have SwIndex + xText->insertTextContent(xAnchor, xFieldmark, false); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testRtlGutter) +{ + mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument"); + uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), + uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Unknown property: RtlGutter + auto bRtlGutter = getProperty<bool>(xPageStyle, "RtlGutter"); + CPPUNIT_ASSERT(!bRtlGutter); + xPageStyle->setPropertyValue("RtlGutter", uno::Any(true)); + bRtlGutter = getProperty<bool>(xPageStyle, "RtlGutter"); + CPPUNIT_ASSERT(bRtlGutter); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testBiblioLocalCopy) +{ + // Given an empty document: + createSwDoc(); + + // When setting the LocalURL of a biblio field: + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xField( + xFactory->createInstance("com.sun.star.text.TextField.Bibliography"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aFields = { + comphelper::makePropertyValue("BibiliographicType", text::BibliographyDataType::WWW), + comphelper::makePropertyValue("Identifier", OUString("ARJ00")), + comphelper::makePropertyValue("Author", OUString("Me")), + comphelper::makePropertyValue("Title", OUString("mytitle")), + comphelper::makePropertyValue("Year", OUString("2020")), + comphelper::makePropertyValue("URL", OUString("http://www.example.com/test.pdf")), + comphelper::makePropertyValue("LocalURL", OUString("file:///home/me/test.pdf")), + }; + xField->setPropertyValue("Fields", uno::Any(aFields)); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xContent(xField, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContent, /*bAbsorb=*/false); + + // Then make sure we get that LocalURL back: + comphelper::SequenceAsHashMap aMap(xField->getPropertyValue("Fields")); + // Without the accompanying fix in place, this test would have failed, there was no LocalURL key + // in the map. + CPPUNIT_ASSERT(aMap.find("LocalURL") != aMap.end()); + auto aActual = aMap["LocalURL"].get<OUString>(); + CPPUNIT_ASSERT_EQUAL(OUString("file:///home/me/test.pdf"), aActual); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testLinkedStyles) +{ + // Given an empty document: + createSwDoc(); + + // When defining a linked style for a para style: + uno::Reference<container::XNameAccess> xParaStyles = getStyles("ParagraphStyles"); + uno::Reference<beans::XPropertySet> xParaStyle(xParaStyles->getByName("Caption"), + uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(xParaStyle, "LinkStyle")); + xParaStyle->setPropertyValue("LinkStyle", uno::Any(OUString("Emphasis"))); + // Then make sure we get the linked char style back: + CPPUNIT_ASSERT_EQUAL(OUString("Emphasis"), getProperty<OUString>(xParaStyle, "LinkStyle")); + + // When defining a linked style for a char style: + uno::Reference<container::XNameAccess> xCharStyles = getStyles("CharacterStyles"); + uno::Reference<beans::XPropertySet> xCharStyle(xCharStyles->getByName("Emphasis"), + uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(xCharStyle, "LinkStyle")); + xCharStyle->setPropertyValue("LinkStyle", uno::Any(OUString("Caption"))); + // Then make sure we get the linked para style back: + CPPUNIT_ASSERT_EQUAL(OUString("Caption"), getProperty<OUString>(xCharStyle, "LinkStyle")); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testViewCursorTextFrame) +{ + // Given a document with a graphic and holding a reference to that graphic frame: + createSwDoc(); + uno::Sequence<beans::PropertyValue> aInsertArgs = { comphelper::makePropertyValue( + "FileName", m_directories.getURLFromSrc(DATA_DIRECTORY) + "graphic.png") }; + dispatchCommand(mxComponent, ".uno:InsertGraphic", aInsertArgs); + uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier( + xModel->getCurrentController(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xViewCursor(xTextViewCursorSupplier->getViewCursor(), + uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFrame; + xViewCursor->getPropertyValue("TextFrame") >>= xFrame; + + // When saving to ODT, then make sure the store doesn't fail: + uno::Reference<frame::XStorable> xStorable(xModel, uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aStoreArgs + = { comphelper::makePropertyValue("FilterName", OUString("writer8")) }; + // Without the accompanying fix in place, this test would have failed with: + // uno.RuntimeException: "SwXParagraph: disposed or invalid ..." + xStorable->storeToURL(maTempFile.GetURL(), aStoreArgs); +} + +/// Fails the test if an error popup would be presented. +static void BasicDisplayErrorHandler(const OUString& /*rErr*/, const OUString& /*rAction*/) +{ + CPPUNIT_ASSERT(false); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testBrokenEmbeddedObject) +{ + // Given a document with a broken embedded object (the XML markup is not well-formed): + load(DATA_DIRECTORY, "broken-embedded-object.odt"); + uno::Reference<text::XTextEmbeddedObjectsSupplier> xSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xObjects(xSupplier->getEmbeddedObjects(), + uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xObject(xObjects->getByIndex(0), uno::UNO_QUERY); + uno::Reference<lang::XServiceInfo> xEmbeddedObject; + // Get the property first, which initializes Draw, which would overwrite our error handler. + xObject->getPropertyValue("EmbeddedObject") >>= xEmbeddedObject; + ErrorRegistry::RegisterDisplay(&BasicDisplayErrorHandler); + + // When trying to load that embedded object: + xObject->getPropertyValue("EmbeddedObject") >>= xEmbeddedObject; + + // Then make sure we get a non-empty reference and an error popup it not shown: + CPPUNIT_ASSERT(xEmbeddedObject.is()); + // Without the accompanying fix in place, we got this reference, but first an error popup was + // shown to the user. + CPPUNIT_ASSERT( + xEmbeddedObject->supportsService("com.sun.star.comp.embed.OCommonEmbeddedObject")); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testLineBreakInsert) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a line-break with properties: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xLineBreak( + xMSF->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::ALL); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + + // Then make sure that both the line break and its matching text attribute is inserted: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwNodeOffset nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); + SwTextNode* pTextNode = pDoc->GetNodes()[nIndex]->GetTextNode(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: "\n" (newline) + // - Actual : "" (empty string) + // i.e. SwXLineBreak::attach() did not insert the newline + its text attribute. + CPPUNIT_ASSERT_EQUAL(OUString("\n"), pTextNode->GetText()); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_LINEBREAK); + CPPUNIT_ASSERT(pAttr); + auto pTextLineBreak = static_cast<SwTextLineBreak*>(pAttr); + auto& rFormatLineBreak = static_cast<SwFormatLineBreak&>(pTextLineBreak->GetAttr()); + CPPUNIT_ASSERT_EQUAL(SwLineBreakClear::ALL, rFormatLineBreak.GetValue()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testLineBreakTextPortionEnum) +{ + // Given a document with a clearing break: + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextContent> xLineBreak( + xMSF->createInstance("com.sun.star.text.LineBreak"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xLineBreakProps(xLineBreak, uno::UNO_QUERY); + auto eClear = static_cast<sal_Int16>(SwLineBreakClear::ALL); + xLineBreakProps->setPropertyValue("Clear", uno::Any(eClear)); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertTextContent(xCursor, xLineBreak, /*bAbsorb=*/false); + + // When enumerating the text portions of the only paragraph in the document: + uno::Reference<css::text::XTextRange> xTextPortion = getRun(getParagraph(1), 1); + + // Then make sure that the text portion type is correct + the clear type can be read: + auto aPortionType = getProperty<OUString>(xTextPortion, "TextPortionType"); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: LineBreak + // - Actual : Text + // i.e. a line break with properties was part of the normal Text portion, making it impossible + // to get those properties. + CPPUNIT_ASSERT_EQUAL(OUString("LineBreak"), aPortionType); + xLineBreak = getProperty<uno::Reference<text::XTextContent>>(xTextPortion, "LineBreak"); + eClear = getProperty<sal_Int16>(xLineBreak, "Clear"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(SwLineBreakClear::ALL), eClear); +} + +CPPUNIT_TEST_FIXTURE(SwModelTestBase, testUserFieldTooltip) +{ + // Given a document with a user field: + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XDependentTextField> xField( + xFactory->createInstance("com.sun.star.text.TextField.User"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xMaster( + xFactory->createInstance("com.sun.star.text.FieldMaster.User"), uno::UNO_QUERY); + xMaster->setPropertyValue("Name", uno::Any(OUString("a_user_field"))); + xField->attachTextFieldMaster(xMaster); + xField->getTextFieldMaster()->setPropertyValue("Content", uno::Any(OUString("42"))); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + xText->insertTextContent(xText->createTextCursor(), xField, /*bAbsorb=*/false); + uno::Reference<beans::XPropertySet> xFieldProps(xField, uno::UNO_QUERY); + + // When setting a tooltip on the field: + OUString aExpected("first line\nsecond line"); + xFieldProps->setPropertyValue("Title", uno::Any(aExpected)); + + // Then make sure that the tooltip we read back matches the one previously specified: + // Without the accompanying fix in place, this test would have failed with: + // - the property is of unexpected type or void: Title + // i.e. reading of the tooltip was broken. + CPPUNIT_ASSERT_EQUAL(aExpected, getProperty<OUString>(xFieldProps, "Title")); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlInsert) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a content control around one or more text portions: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + // Set a custom property on the content control: + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + xContentControlProps->setPropertyValue("ShowingPlaceHolder", uno::Any(true)); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Then make sure that the text attribute is inserted: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwNodeOffset nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); + SwTextNode* pTextNode = pDoc->GetNodes()[nIndex]->GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + // Without the accompanying fix in place, this test would have failed, as the + // SwXContentControl::attach() implementation was missing. + CPPUNIT_ASSERT(pAttr); + // Also verify that the custom property was set: + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + CPPUNIT_ASSERT(pContentControl->GetShowingPlaceHolder()); +} + +CPPUNIT_TEST_FIXTURE(SwModelTestBase, testImageTooltip) +{ + // Given a document with an image and a hyperlink on it: + loadURL("private:factory/swriter", nullptr); + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextContent> xImage( + xFactory->createInstance("com.sun.star.text.TextGraphicObject"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xImage, /*bAbsorb=*/false); + uno::Reference<beans::XPropertySet> xImageProps(xImage, uno::UNO_QUERY); + xImageProps->setPropertyValue("HyperLinkURL", uno::Any(OUString("http://www.example.com"))); + + // When setting a tooltip on the image: + OUString aExpected("first line\nsecond line"); + xImageProps->setPropertyValue("Tooltip", uno::Any(aExpected)); + + // Then make sure that the tooltip we read back matches the one previously specified: + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + // i.e. reading/writing of the tooltip was broken. + CPPUNIT_ASSERT_EQUAL(aExpected, getProperty<OUString>(xImageProps, "Tooltip")); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlTextPortionEnum) +{ + // Given a document with a content control around one or more text portions: + SwDoc* pDoc = createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // When enumerating the text portions of the only paragraph in the document: + uno::Reference<css::text::XTextRange> xTextPortion = getRun(getParagraph(1), 1); + + // Then make sure that the text portion type is correct + the content can be read: + auto aPortionType = getProperty<OUString>(xTextPortion, "TextPortionType"); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: ContentControl + // - Actual : Text + // i.e. the content control text attribute was ignored. + CPPUNIT_ASSERT_EQUAL(OUString("ContentControl"), aPortionType); + xContentControl + = getProperty<uno::Reference<text::XTextContent>>(xTextPortion, "ContentControl"); + uno::Reference<text::XTextRange> xContentControlRange(xContentControl, uno::UNO_QUERY); + xText = xContentControlRange->getText(); + uno::Reference<container::XEnumerationAccess> xContentEnumAccess(xText, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xContentEnum = xContentEnumAccess->createEnumeration(); + uno::Reference<text::XTextRange> xContent(xContentEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("test"), xContent->getString()); + + // Also test the generated layout: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout/SwFieldPortion", "expand", ""); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: PortionType::ContentControl + // - Actual : PortionType::Text + // i.e. SwContentControl generated a plain text portion, not a dedicated content control + // portion. + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout/SwLinePortion", "type", + "PortionType::ContentControl"); + assertXPath(pXmlDoc, "//SwParaPortion/SwLineLayout/SwLinePortion", "portion", "test*"); + + // Also test the doc model, make sure that there is a dummy character at the start and end, so + // the user can explicitly decide if they want to expand the content control or not: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + OUString aText = pWrtShell->GetCursor()->GetNode().GetTextNode()->GetText(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: ^Atest^A + // - Actual : ^Atest + // i.e. there was no dummy character at the end. + CPPUNIT_ASSERT_EQUAL(OUString("\x0001test\x0001"), aText); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlCheckbox) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a checkbox content control: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + xContentControlProps->setPropertyValue("Checkbox", uno::Any(true)); + xContentControlProps->setPropertyValue("Checked", uno::Any(true)); + xContentControlProps->setPropertyValue("CheckedState", uno::Any(OUString(u"☒"))); + xContentControlProps->setPropertyValue("UncheckedState", uno::Any(OUString(u"â˜"))); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Then make sure that the specified properties are set: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + CPPUNIT_ASSERT(pContentControl->GetCheckbox()); + CPPUNIT_ASSERT(pContentControl->GetChecked()); + CPPUNIT_ASSERT_EQUAL(OUString(u"☒"), pContentControl->GetCheckedState()); + CPPUNIT_ASSERT_EQUAL(OUString(u"â˜"), pContentControl->GetUncheckedState()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlDropdown) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a dropdown content control: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + { + uno::Sequence<beans::PropertyValues> aListItems = { + { + comphelper::makePropertyValue("DisplayText", uno::Any(OUString("red"))), + comphelper::makePropertyValue("Value", uno::Any(OUString("R"))), + }, + { + comphelper::makePropertyValue("DisplayText", uno::Any(OUString("green"))), + comphelper::makePropertyValue("Value", uno::Any(OUString("G"))), + }, + { + comphelper::makePropertyValue("DisplayText", uno::Any(OUString("blue"))), + comphelper::makePropertyValue("Value", uno::Any(OUString("B"))), + }, + }; + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + xContentControlProps->setPropertyValue("ListItems", uno::Any(aListItems)); + } + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Then make sure that the specified properties are set: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + std::vector<SwContentControlListItem> aListItems = pContentControl->GetListItems(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aListItems.size()); + CPPUNIT_ASSERT_EQUAL(OUString("red"), aListItems[0].m_aDisplayText); + CPPUNIT_ASSERT_EQUAL(OUString("R"), aListItems[0].m_aValue); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testInsertFileInContentControlException) +{ + // Given a document with a content control: + createSwDoc(); + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Reject inserting a document inside the content control: + xCursor->goLeft(1, false); + OUString aURL(m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf119081.odt"); + uno::Reference<document::XDocumentInsertable> xInsertable(xCursor, uno::UNO_QUERY); + CPPUNIT_ASSERT_THROW(xInsertable->insertDocumentFromURL(aURL, {}), uno::RuntimeException); + + // Accept inserting a document outside the content control: + xCursor->goRight(1, false); + xInsertable->insertDocumentFromURL(aURL, {}); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlPicture) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a picture content control: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<beans::XPropertySet> xTextGraphic( + xMSF->createInstance("com.sun.star.text.TextGraphicObject"), uno::UNO_QUERY); + xTextGraphic->setPropertyValue("AnchorType", + uno::Any(text::TextContentAnchorType_AS_CHARACTER)); + uno::Reference<text::XTextContent> xTextContent(xTextGraphic, uno::UNO_QUERY); + xText->insertTextContent(xCursor, xTextContent, false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + xContentControlProps->setPropertyValue("Picture", uno::Any(true)); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Then make sure that the specified properties are set: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + CPPUNIT_ASSERT(pContentControl->GetPicture()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testContentControlDate) +{ + // Given an empty document: + SwDoc* pDoc = createSwDoc(); + + // When inserting a date content control: + uno::Reference<lang::XMultiServiceFactory> xMSF(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XText> xText = xTextDocument->getText(); + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + xText->insertString(xCursor, "test", /*bAbsorb=*/false); + xCursor->gotoStart(/*bExpand=*/false); + xCursor->gotoEnd(/*bExpand=*/true); + uno::Reference<text::XTextContent> xContentControl( + xMSF->createInstance("com.sun.star.text.ContentControl"), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xContentControlProps(xContentControl, uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + xContentControlProps->setPropertyValue("Date", uno::Any(true)); + xContentControlProps->setPropertyValue("DateFormat", uno::Any(OUString("M/d/yyyy"))); + xContentControlProps->setPropertyValue("DateLanguage", uno::Any(OUString("en-US"))); + xContentControlProps->setPropertyValue("CurrentDate", + uno::Any(OUString("2022-05-25T00:00:00Z"))); + xContentControlProps->setPropertyValue("PlaceholderDocPart", + uno::Any(OUString("DefaultPlaceholder_-1854013437"))); + xContentControlProps->setPropertyValue( + "DataBindingPrefixMappings", + uno::Any(OUString("xmlns:ns0='http://schemas.microsoft.com/vsto/samples' "))); + xContentControlProps->setPropertyValue( + "DataBindingXpath", + uno::Any(OUString("/ns0:employees[1]/ns0:employee[1]/ns0:hireDate[1]"))); + xContentControlProps->setPropertyValue( + "DataBindingStoreItemID", uno::Any(OUString("{241A8A02-7FFD-488D-8827-63FBE74E8BC9}"))); + xContentControlProps->setPropertyValue("Color", uno::Any(OUString("008000"))); + xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + + // Then make sure that the specified properties are set: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwTextNode* pTextNode = pWrtShell->GetCursor()->GetNode().GetTextNode(); + SwTextAttr* pAttr = pTextNode->GetTextAttrForCharAt(0, RES_TXTATR_CONTENTCONTROL); + auto pTextContentControl = static_txtattr_cast<SwTextContentControl*>(pAttr); + auto& rFormatContentControl + = static_cast<SwFormatContentControl&>(pTextContentControl->GetAttr()); + std::shared_ptr<SwContentControl> pContentControl = rFormatContentControl.GetContentControl(); + CPPUNIT_ASSERT(pContentControl->GetDate()); + CPPUNIT_ASSERT_EQUAL(OUString("M/d/yyyy"), pContentControl->GetDateFormat()); + CPPUNIT_ASSERT_EQUAL(OUString("en-US"), pContentControl->GetDateLanguage()); + CPPUNIT_ASSERT_EQUAL(OUString("2022-05-25T00:00:00Z"), pContentControl->GetCurrentDate()); + CPPUNIT_ASSERT_EQUAL(OUString("DefaultPlaceholder_-1854013437"), + pContentControl->GetPlaceholderDocPart()); + CPPUNIT_ASSERT_EQUAL(OUString("xmlns:ns0='http://schemas.microsoft.com/vsto/samples' "), + pContentControl->GetDataBindingPrefixMappings()); + CPPUNIT_ASSERT_EQUAL(OUString("/ns0:employees[1]/ns0:employee[1]/ns0:hireDate[1]"), + pContentControl->GetDataBindingXpath()); + CPPUNIT_ASSERT_EQUAL(OUString("{241A8A02-7FFD-488D-8827-63FBE74E8BC9}"), + pContentControl->GetDataBindingStoreItemID()); + CPPUNIT_ASSERT_EQUAL(OUString("008000"), pContentControl->GetColor()); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testListIdState) +{ + // Given a document with 3 paragraphs: an outer numbering on para 1 & 3, an inner numbering on + // para 2: + SwDoc* pDoc = createSwDoc(); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + { + SfxItemSetFixed<RES_PARATR_NUMRULE, RES_PARATR_NUMRULE> aSet(pWrtShell->GetAttrPool()); + SwNumRuleItem aItem("Numbering ABC"); + aSet.Put(aItem); + pWrtShell->SetAttrSet(aSet); + } + pWrtShell->SplitNode(); + { + SfxItemSetFixed<RES_PARATR_NUMRULE, RES_PARATR_NUMRULE> aSet(pWrtShell->GetAttrPool()); + SwNumRuleItem aItem("Numbering 123"); + aSet.Put(aItem); + pWrtShell->SetAttrSet(aSet); + } + pWrtShell->SplitNode(); + { + SfxItemSetFixed<RES_PARATR_NUMRULE, RES_PARATR_NUMRULE> aSet(pWrtShell->GetAttrPool()); + SwNumRuleItem aItem("Numbering ABC"); + aSet.Put(aItem); + pWrtShell->SetAttrSet(aSet); + } + + // When checking if xml:id="..." needs writing for the first paragraph during ODT export: + uno::Reference<beans::XPropertyState> xPara(getParagraph(1), uno::UNO_QUERY); + beans::PropertyState eState = xPara->getPropertyState("ListId"); + + // Then make sure that xml:id="..." gets written for para 1, as it'll be continued in para 3. + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 (DIRECT_VALUE) + // - Actual : 1 (DEFAULT_VALUE) + // i.e. para 1 didn't write an xml:id="..." but para 3 referred to it using continue-list="...", + // which is inconsistent. + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, eState); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testParagraphMarkerODFExport) +{ + // Given a document with a red numbering portion, from the paragraph marker's format: + load(DATA_DIRECTORY, "paragraph-marker.docx"); + + // When saving that as ODT + reload: + reload("writer8", nullptr); + + // Then make sure that it still has the correct color: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 00ff0000 (COL_LIGHTRED) + // - Actual : ffffffff (COL_AUTO) + // i.e. the custom "red" color was lost as RES_PARATR_LIST_AUTOFMT was not serialized to ODT. + CPPUNIT_ASSERT_EQUAL( + OUString("00ff0000"), + getXPath(pXmlDoc, "//Special[@nType='PortionType::Number']/SwFont", "color")); +} + +CPPUNIT_TEST_FIXTURE(SwCoreUnocoreTest, testParagraphMarkerFormattedRun) +{ + // Given a document with a bold run and non-bold paragraph marker: + load(DATA_DIRECTORY, "paragraph-marker-formatted-run.docx"); + + // When saving that as ODT + reload: + reload("writer8", nullptr); + + // Then make sure that the numbering portion is still non-bold, matching Word: + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: normal + // - Actual : bold + // i.e. the numbering portion was bold, while its weight should be normal. + CPPUNIT_ASSERT_EQUAL( + OUString("normal"), + getXPath(pXmlDoc, "//Special[@nType='PortionType::Number']/SwFont", "weight")); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx new file mode 100644 index 000000000..ae59144b9 --- /dev/null +++ b/sw/qa/core/uwriter.cxx @@ -0,0 +1,1933 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> +#include <test/bootstrapfixture.hxx> + +#include <com/sun/star/i18n/WordType.hpp> + +#include <comphelper/processfactory.hxx> +#include <i18nutil/transliteration.hxx> +#include <editeng/adjustitem.hxx> +#include <editeng/boxitem.hxx> +#include <editeng/brushitem.hxx> +#include <editeng/colritem.hxx> +#include <editeng/contouritem.hxx> +#include <editeng/crossedoutitem.hxx> +#include <editeng/fhgtitem.hxx> +#include <editeng/fontitem.hxx> +#include <editeng/justifyitem.hxx> +#include <editeng/lineitem.hxx> +#include <editeng/postitem.hxx> +#include <editeng/shdditem.hxx> +#include <editeng/udlnitem.hxx> +#include <editeng/wghtitem.hxx> +#include <svl/intitem.hxx> +#include <svx/algitem.hxx> +#include <svx/rotmodit.hxx> +#include <tools/urlobj.hxx> +#include <unotools/tempfile.hxx> +#include <unotools/transliterationwrapper.hxx> + +#include <editeng/langitem.hxx> +#include <editeng/charhiddenitem.hxx> + +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> + +#include <xmloff/odffields.hxx> + +#include <breakit.hxx> +#include <doc.hxx> +#include <IDocumentRedlineAccess.hxx> +#include <IDocumentFieldsAccess.hxx> +#include <IDocumentStatistics.hxx> +#include <cellfml.hxx> +#include <docsh.hxx> +#include <docstat.hxx> +#include <docufld.hxx> +#include <fmtanchr.hxx> +#include <ndtxt.hxx> +#include <shellres.hxx> +#include <swscanner.hxx> +#include <swdll.hxx> +#include <swtypes.hxx> +#include <fmtftn.hxx> +#include <fmtrfmrk.hxx> +#include <fmtinfmt.hxx> +#include <fchrfmt.hxx> +#include <fmtfld.hxx> +#include <redline.hxx> +#include <docary.hxx> +#include <modeltoviewhelper.hxx> +#include <IMark.hxx> +#include <ring.hxx> +#include <calbck.hxx> +#include <pagedesc.hxx> +#include <calc.hxx> + +#include <tblafmt.hxx> +#include <unotbl.hxx> +#include <IDocumentMarkAccess.hxx> +#include <itabenum.hxx> + +typedef tools::SvRef<SwDocShell> SwDocShellRef; + +using namespace ::com::sun::star; + +/* Implementation of Swdoc-Test class */ + +class SwDocTest : public test::BootstrapFixture +{ +public: + SwDocTest() + : m_pDoc(nullptr) + { + } + + virtual void setUp() override; + virtual void tearDown() override; + + void testTableAutoFormats(); + void testPageDescName(); + void testFileNameFields(); + void testDocStat(); + void testModelToViewHelperPassthrough(); + void testModelToViewHelperExpandFieldsExpandFootnote(); + void testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode(); + void testModelToViewHelperExpandFields(); + void testModelToViewHelperExpandFieldsReplaceMode(); + void testModelToViewHelperExpandFieldsHideInvisible(); + void testModelToViewHelperExpandFieldsHideRedlined(); + void testModelToViewHelperExpandFieldsHideInvisibleExpandFootnote(); + void testModelToViewHelperExpandFieldsHideInvisibleExpandFootnoteReplaceMode(); + void testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnote(); + void testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnoteReplaceMode(); + void testModelToViewHelperHideInvisibleHideRedlined(); + void testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnote(); + void testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnoteReplaceMode(); + void testModelToViewHelperExpandFieldsExpandFootnote2(); + void testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode2(); + void testSwScanner(); + void testUserPerceivedCharCount(); + void testMergePortionsDeleteNotSorted(); + void testGraphicAnchorDeletion(); + void testTransliterate(); + void testMarkMove(); + void testFormulas(); + void testIntrusiveRing(); + void testClientModify(); + void testBroadcastingModify(); + void testWriterMultiListener(); + void test64kPageDescs(); + void testTdf92308(); + void testTableCellComparison(); + + CPPUNIT_TEST_SUITE(SwDocTest); + + CPPUNIT_TEST(testTransliterate); + CPPUNIT_TEST(testTableAutoFormats); + CPPUNIT_TEST(testPageDescName); + CPPUNIT_TEST(testFileNameFields); + CPPUNIT_TEST(testDocStat); + CPPUNIT_TEST(testModelToViewHelperPassthrough); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsExpandFootnote); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode); + CPPUNIT_TEST(testModelToViewHelperExpandFields); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsReplaceMode); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideInvisible); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideRedlined); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideInvisibleExpandFootnote); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideInvisibleExpandFootnoteReplaceMode); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnote); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnoteReplaceMode); + CPPUNIT_TEST(testModelToViewHelperHideInvisibleHideRedlined); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnote); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnoteReplaceMode); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsExpandFootnote2); + CPPUNIT_TEST(testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode2); + CPPUNIT_TEST(testSwScanner); + CPPUNIT_TEST(testUserPerceivedCharCount); + CPPUNIT_TEST(testMergePortionsDeleteNotSorted); + CPPUNIT_TEST(testGraphicAnchorDeletion); + CPPUNIT_TEST(testMarkMove); + CPPUNIT_TEST(testFormulas); + CPPUNIT_TEST(testIntrusiveRing); + CPPUNIT_TEST(testClientModify); + CPPUNIT_TEST(testBroadcastingModify); + CPPUNIT_TEST(testWriterMultiListener); + CPPUNIT_TEST(test64kPageDescs); + CPPUNIT_TEST(testTdf92308); + CPPUNIT_TEST(testTableCellComparison); + CPPUNIT_TEST_SUITE_END(); + +private: + SwDoc *m_pDoc; + SwDocShellRef m_xDocShRef; +}; + +void SwDocTest::testPageDescName() +{ + ShellResource aShellResources; + + std::vector<OUString> aResults; + + //These names must be unique for each different combination, otherwise + //duplicate page description names may exist, which will causes lookup + //by name to be incorrect, and so the corresponding export to .odt + aResults.push_back(aShellResources.GetPageDescName(1, ShellResource::NORMAL_PAGE)); + aResults.push_back(aShellResources.GetPageDescName(1, ShellResource::FIRST_PAGE)); + aResults.push_back(aShellResources.GetPageDescName(1, ShellResource::FOLLOW_PAGE)); + + std::sort(aResults.begin(), aResults.end()); + aResults.erase(std::unique(aResults.begin(), aResults.end()), aResults.end()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("GetPageDescName results must be unique", static_cast<size_t>(3), aResults.size()); +} + +//See https://bugs.libreoffice.org/show_bug.cgi?id=32463 +void SwDocTest::testFileNameFields() +{ + //Here's a file name with some chars in it that will be %% encoded, when expanding + //SwFileNameFields we want to restore the original readable filename + utl::TempFile aTempFile(u"demo [name]"); + aTempFile.EnableKillingFile(); + + INetURLObject aTempFileURL(aTempFile.GetURL()); + OUString sFileURL = aTempFileURL.GetMainURL(INetURLObject::DecodeMechanism::NONE); + SfxMedium aDstMed(sFileURL, StreamMode::STD_READWRITE); + + auto pFilter = std::make_shared<SfxFilter>( + "Text", + OUString(), SfxFilterFlags::NONE, SotClipboardFormatId::NONE, OUString(), OUString(), + "TEXT", OUString() ); + aDstMed.SetFilter(pFilter); + + m_xDocShRef->DoSaveAs(aDstMed); + m_xDocShRef->DoSaveCompleted(&aDstMed); + + const INetURLObject &rUrlObj = m_xDocShRef->GetMedium()->GetURLObject(); + + SwFileNameFieldType aNameField(*m_pDoc); + + { + OUString sResult(aNameField.Expand(FF_NAME)); + OUString sExpected(rUrlObj.getName(INetURLObject::LAST_SEGMENT, + true,INetURLObject::DecodeMechanism::WithCharset)); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected Readable FileName", sExpected, sResult); + } + + { + OUString sResult(aNameField.Expand(FF_PATHNAME)); + OUString sExpected(rUrlObj.GetFull()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected Readable FileName", sExpected, sResult); + } + + { + OUString sResult(aNameField.Expand(FF_PATH)); + INetURLObject aTemp(rUrlObj); + aTemp.removeSegment(); + OUString sExpected(aTemp.PathToFileName()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected Readable FileName", sExpected, sResult); + } + + { + OUString sResult(aNameField.Expand(FF_NAME_NOEXT)); + OUString sExpected(rUrlObj.getName(INetURLObject::LAST_SEGMENT, + true,INetURLObject::DecodeMechanism::WithCharset)); + //Chop off .tmp + sExpected = sExpected.copy(0, sExpected.getLength() - 4); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected Readable FileName", sExpected, sResult); + } + + m_xDocShRef->DoInitNew(); +} + +//See http://lists.freedesktop.org/archives/libreoffice/2011-August/016666.html +//Remove unnecessary parameter to IDocumentStatistics::UpdateDocStat for +//motivation +void SwDocTest::testDocStat() +{ + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected initial 0 count", static_cast<sal_uLong>(0), m_pDoc->getIDocumentStatistics().GetDocStat().nChar); + + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + OUString sText("Hello World"); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sText); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should still be non-updated 0 count", static_cast<sal_uLong>(0), m_pDoc->getIDocumentStatistics().GetDocStat().nChar); + + SwDocStat aDocStat = m_pDoc->getIDocumentStatistics().GetUpdatedDocStat( false, true ); + sal_uLong nLen = static_cast<sal_uLong>(sText.getLength()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should now have updated count", nLen, aDocStat.nChar); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("And cache is updated too", nLen, m_pDoc->getIDocumentStatistics().GetDocStat().nChar); +} + +//For UI character counts we should follow UAX#29 and display the user +//perceived characters, not the number of codepoints, nor the number of code +//units http://unicode.org/reports/tr29/ +void SwDocTest::testUserPerceivedCharCount() +{ + SwBreakIt *pBreakIter = SwBreakIt::Get(); + + //Grapheme example, two different unicode code-points perceived by the user as a single + //glyph + static constexpr OUStringLiteral sALEF_QAMATS = u"\u05D0\u05B8"; + sal_Int32 nGraphemeCount = pBreakIter->getGraphemeCount(sALEF_QAMATS); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Grapheme Count should be 1", static_cast<sal_Int32>(1), nGraphemeCount); + + //Surrogate pair example, one single unicode code-point (U+1D11E) + //represented as two code units in UTF-16 + static constexpr OUStringLiteral sGCLEF = u"\U0001D11E"; + sal_Int32 nCount = pBreakIter->getGraphemeCount(sGCLEF); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Surrogate Pair should be counted as single character", static_cast<sal_Int32>(1), nCount); +} + +static SwTextNode* getModelToViewTestDocument(SwDoc *pDoc) +{ + SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + SwFormatFootnote aFootnote; + aFootnote.SetNumStr("foo"); + + pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + pDoc->getIDocumentContentOperations().InsertString(aPaM, "AAAAA BBBBB "); + SwTextNode* pTextNode = aPaM.GetNode().GetTextNode(); + sal_Int32 nPos = aPaM.GetPoint()->nContent.GetIndex(); + pTextNode->InsertItem(aFootnote, nPos, nPos); + pDoc->getIDocumentContentOperations().InsertString(aPaM, " CCCCC "); + nPos = aPaM.GetPoint()->nContent.GetIndex(); + pTextNode->InsertItem(aFootnote, nPos, nPos); + pDoc->getIDocumentContentOperations().InsertString(aPaM, " DDDDD"); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>((4*5) + 5 + 2), pTextNode->GetText().getLength()); + + //set start of selection to first B + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 6); + aPaM.SetMark(); + //set end of selection to last C + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 14); + //set character attribute hidden on range + SvxCharHiddenItem aHidden(true, RES_CHRATR_HIDDEN); + pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, aHidden ); + aPaM.DeleteMark(); + + //turn on red-lining and show changes + pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete|RedlineFlags::ShowInsert); + CPPUNIT_ASSERT_MESSAGE("redlining should be on", pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + CPPUNIT_ASSERT_MESSAGE("redlines should be visible", IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags())); + + //set start of selection to last A + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 4); + aPaM.SetMark(); + //set end of selection to second last B + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 9); + pDoc->getIDocumentContentOperations().DeleteAndJoin(aPaM); //redline-aware deletion api + aPaM.DeleteMark(); + + return pTextNode; +} + +static SwTextNode* getModelToViewTestDocument2(SwDoc *pDoc) +{ + getModelToViewTestDocument(pDoc); + + SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + pDoc->getIDocumentContentOperations().InsertString(aPaM, "AAAAA"); + IDocumentMarkAccess* pMarksAccess = pDoc->getIDocumentMarkAccess(); + sw::mark::IFieldmark *pFieldmark = + pMarksAccess->makeNoTextFieldBookmark(aPaM, "test", ODF_FORMDROPDOWN); + CPPUNIT_ASSERT(pFieldmark); + uno::Sequence< OUString > vListEntries { "BBBBB" }; + (*pFieldmark->GetParameters())[ODF_FORMDROPDOWN_LISTENTRY] <<= vListEntries; + (*pFieldmark->GetParameters())[ODF_FORMDROPDOWN_RESULT] <<= sal_Int32(0); + pDoc->getIDocumentContentOperations().InsertString(aPaM, "CCCCC"); + SwTextNode* pTextNode = aPaM.GetNode().GetTextNode(); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(11), + pTextNode->GetText().getLength()); + + return pTextNode; +} + +void SwDocTest::testModelToViewHelperPassthrough() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, ExpandMode::PassThrough); + OUString sViewText = aModelToViewHelper.getViewText(); + OUString sModelText = pTextNode->GetText(); + CPPUNIT_ASSERT_EQUAL(sModelText, sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsExpandFootnote() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::ExpandFootnote); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA BBBBB foo CCCCC foo DDDDD"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA BBBBB " + OUStringChar(CHAR_ZWSP) + " CCCCC " + OUStringChar(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(12), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(20), + aModelToViewHelper.getFootnotePositions()[1]); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFieldPositions().size()); +} + +void SwDocTest::testModelToViewHelperExpandFields() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, ExpandMode::ExpandFields); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA BBBBB CCCCC DDDDD"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsReplaceMode() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(OUString("AAAAA BBBBB CCCCC DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFieldPositions().size()); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideInvisible() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, ExpandMode::HideInvisible); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA CCCCC " + OUStringChar(CH_TXTATR_BREAKWORD) + " DDDDD"), + sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideRedlined() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, ExpandMode::HideDeletions); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAABB " + OUStringChar(CH_TXTATR_BREAKWORD) + " CCCCC " + OUStringChar(CH_TXTATR_BREAKWORD) + " DDDDD"), + sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideInvisibleExpandFootnote() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideInvisible | ExpandMode::ExpandFootnote); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(OUString("AAAAA CCCCC foo DDDDD"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideInvisibleExpandFootnoteReplaceMode() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideInvisible | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA CCCCC " + OUStringChar(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(12), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFieldPositions().size()); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnote() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideDeletions | ExpandMode::ExpandFootnote); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAABB foo CCCCC foo DDDDD"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideHideRedlinedExpandFootnoteReplaceMode() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideDeletions | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAABB " + OUStringChar(CHAR_ZWSP) + " CCCCC " + OUStringChar(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(7), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(15), + aModelToViewHelper.getFootnotePositions()[1]); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFieldPositions().size()); +} + +void SwDocTest::testModelToViewHelperHideInvisibleHideRedlined() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::HideInvisible | ExpandMode::HideDeletions); + OUString sViewText = aModelToViewHelper.getViewText(); + OUString aBuffer = "AAAACCCCC " + + OUStringChar(CH_TXTATR_BREAKWORD) + + " DDDDD"; + CPPUNIT_ASSERT_EQUAL(aBuffer, sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnote() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideInvisible | ExpandMode::HideDeletions | ExpandMode::ExpandFootnote); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(OUString("AAAACCCCC foo DDDDD"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsHideInvisibleHideRedlinedExpandFootnoteReplaceMode() +{ + SwTextNode* pTextNode = getModelToViewTestDocument(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::HideInvisible | ExpandMode::HideDeletions | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(sViewText, + OUString("AAAACCCCC " + OUStringChar(CHAR_ZWSP) + " DDDDD")); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(10), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFieldPositions().size()); +} + +void SwDocTest::testModelToViewHelperExpandFieldsExpandFootnote2() +{ + SwTextNode* pTextNode = getModelToViewTestDocument2(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::ExpandFootnote); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(OUString("AAAAABBBBBCCCCC"), sViewText); +} + +void SwDocTest::testModelToViewHelperExpandFieldsExpandFootnoteReplaceMode2() +{ + SwTextNode* pTextNode = getModelToViewTestDocument2(m_pDoc); + + ModelToViewHelper aModelToViewHelper(*pTextNode, nullptr, + ExpandMode::ExpandFields | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA" + OUStringChar(CHAR_ZWSP) + "CCCCC"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), + aModelToViewHelper.getFieldPositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), + aModelToViewHelper.getFieldPositions()[0]); +} + +void SwDocTest::testSwScanner() +{ + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + SwTextNode* pTextNode = aPaM.GetNode().GetTextNode(); + + CPPUNIT_ASSERT_MESSAGE("Has Text Node", pTextNode); + + //See https://bugs.libreoffice.org/show_bug.cgi?id=40449 + //See https://bugs.libreoffice.org/show_bug.cgi?id=39365 + //Use a temporary OUString as the arg, as that's the trouble behind + //fdo#40449 and fdo#39365 + { + SwScanner aScanner(*pTextNode, + "Hello World", + nullptr, ModelToViewHelper(), i18n::WordType::DICTIONARY_WORD, 0, + RTL_CONSTASCII_LENGTH("Hello World")); + + bool bFirstOk = aScanner.NextWord(); + CPPUNIT_ASSERT_MESSAGE("First Token", bFirstOk); + const OUString &rHello = aScanner.GetWord(); + CPPUNIT_ASSERT_EQUAL(OUString("Hello"), rHello); + + bool bSecondOk = aScanner.NextWord(); + CPPUNIT_ASSERT_MESSAGE("Second Token", bSecondOk); + const OUString &rWorld = aScanner.GetWord(); + CPPUNIT_ASSERT_EQUAL(OUString("World"), rWorld); + } + + //See https://www.libreoffice.org/bugzilla/show_bug.cgi?id=45271 + { + static constexpr OUStringLiteral IDEOGRAPHICFULLSTOP_D = u"\u3002D"; + + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, IDEOGRAPHICFULLSTOP_D); + + SvxLanguageItem aCJKLangItem( LANGUAGE_CHINESE_SIMPLIFIED, RES_CHRATR_CJK_LANGUAGE ); + SvxLanguageItem aWestLangItem( LANGUAGE_ENGLISH_US, RES_CHRATR_LANGUAGE ); + m_pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, aCJKLangItem ); + m_pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, aWestLangItem ); + + SwDocStat aDocStat; + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, IDEOGRAPHICFULLSTOP_D.getLength()); + + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(2), aDocStat.nChar); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(2), aDocStat.nCharExcludingSpaces); + } + { + static constexpr OUStringLiteral test = + u"\u3053\u306E\u65E5\u672C\u8A9E\u306F\u6B63\u3057" + "\u304F\u6570\u3048\u3089\u308C\u308B\u3067\u3057" + "\u3087\u3046\u304B\u3002And " + "let's th" + "row some" + " English" + " in to m" + "ake it i" + "nteresti" + "ng. \u305D\u3057\u3066" + "\u3001\u307E\u305F\u65E5\u672C\u8A9E\u3000\u3000" + "\u3067\u3082\u4ECA\u56DE\u306F\u7A7A\u767D\u3092" + "\u3000\u3000\u5165\u308C\u307E\u3057\u305F\u3002" + " So how" + " does th" + "is do? "; + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, test); + + SvxLanguageItem aCJKLangItem( LANGUAGE_JAPANESE, RES_CHRATR_CJK_LANGUAGE ); + SvxLanguageItem aWestLangItem( LANGUAGE_ENGLISH_US, RES_CHRATR_LANGUAGE ); + m_pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, aCJKLangItem ); + m_pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, aWestLangItem ); + + SwDocStat aDocStat; + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, test.getLength()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("words", static_cast<sal_uLong>(58), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Asian characters and Korean syllables", static_cast<sal_uLong>(43), aDocStat.nAsianWord); + CPPUNIT_ASSERT_EQUAL_MESSAGE("non-whitespace chars", static_cast<sal_uLong>(105), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL_MESSAGE("characters", static_cast<sal_uLong>(128), aDocStat.nChar); + } + + //See https://bz.apache.org/ooo/show_bug.cgi?id=89042 + //See https://bugs.libreoffice.org/show_bug.cgi?id=53399 + { + SwDocStat aDocStat; + + static constexpr OUStringLiteral aShouldBeThree = + u"Should " + "\u2018be thr" + "ee\u2019"; + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, aShouldBeThree); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, aShouldBeThree.getLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(3), aDocStat.nWord); + + static constexpr OUStringLiteral aShouldBeFive = + u"french " + // << nbsp + "\u00AB\u00A0savoi" + // nnbsp + "r\u202fcalcu" + // idspace >> + "ler\u3000\u00BB"; + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, aShouldBeFive); + pTextNode = aPaM.GetNode().GetTextNode(); + aDocStat.Reset(); + pTextNode->CountWords(aDocStat, 0, aShouldBeFive.getLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(5), aDocStat.nWord); + } + + //See https://bugs.libreoffice.org/show_bug.cgi?id=49629 + { + SwDocStat aDocStat; + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Apple"); + pTextNode = aPaM.GetNode().GetTextNode(); + sal_Int32 nPos = aPaM.GetPoint()->nContent.GetIndex(); + SwFormatFootnote aFootnote; + aFootnote.SetNumStr("banana"); + SwTextAttr* pTA = pTextNode->InsertItem(aFootnote, nPos, nPos); + CPPUNIT_ASSERT(pTA); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6), pTextNode->Len()); //Apple + 0x02 + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(1), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL_MESSAGE("footnote should be expanded", static_cast<sal_uLong>(11), aDocStat.nChar); + + const sal_Int32 nNextPos = aPaM.GetPoint()->nContent.GetIndex(); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(nPos+1), nNextPos); + SwFormatRefMark aRef("refmark"); + pTA = pTextNode->InsertItem(aRef, nNextPos, nNextPos); + CPPUNIT_ASSERT(pTA); + + aDocStat.Reset(); + pTextNode->SetWordCountDirty(true); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(1), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL_MESSAGE("refmark anchor should not be counted", static_cast<sal_uLong>(11), aDocStat.nChar); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Apple"); + + DateTime aDate(DateTime::SYSTEM); + SwPostItField aPostIt( + static_cast<SwPostItFieldType*>(m_pDoc->getIDocumentFieldsAccess().GetSysFieldType(SwFieldIds::Postit)), "An Author", + "Some Text", "Initials", "Name", aDate ); + m_pDoc->getIDocumentContentOperations().InsertPoolItem(aPaM, SwFormatField(aPostIt)); + + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Apple"); + pTextNode = aPaM.GetNode().GetTextNode(); + aDocStat.Reset(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(1), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL_MESSAGE("postit anchor should effectively not exist", static_cast<sal_uLong>(10), aDocStat.nChar); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(11), pTextNode->Len()); + + aDocStat.Reset(); + } + + //See https://bugs.libreoffice.org/show_bug.cgi?id=46757 + { + SwDocStat aDocStat; + + static constexpr OUStringLiteral aString = u"Lorem ipsum"; + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, aString); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(2), aDocStat.nWord); + + //turn on red-lining and show changes + m_pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete|RedlineFlags::ShowInsert); + CPPUNIT_ASSERT_MESSAGE("redlining should be on", m_pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + CPPUNIT_ASSERT_MESSAGE("redlines should be visible", IDocumentRedlineAccess::IsShowChanges(m_pDoc->getIDocumentRedlineAccess().GetRedlineFlags())); + + //delete everything except the first word + aPaM.SetMark(); //set start of selection to current pos + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 5); //set end of selection to fifth char of current node + m_pDoc->getIDocumentContentOperations().DeleteAndJoin(aPaM); //redline-aware deletion api + //"real underlying text should be the same" + CPPUNIT_ASSERT_EQUAL(pTextNode->GetText(), OUString(aString)); + + aDocStat.Reset(); + pTextNode->SetWordCountDirty(true); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); //but word-counting the text should only count the non-deleted text + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(1), aDocStat.nWord); + + pTextNode->SetWordCountDirty(true); + + //keep red-lining on but hide changes + m_pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On); + CPPUNIT_ASSERT_MESSAGE("redlining should be still on", m_pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + CPPUNIT_ASSERT_MESSAGE("redlines should be invisible", !IDocumentRedlineAccess::IsShowChanges(m_pDoc->getIDocumentRedlineAccess().GetRedlineFlags())); + + aDocStat.Reset(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); //but word-counting the text should only count the non-deleted text + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(1), aDocStat.nWord); + + OUString sLorem = pTextNode->GetText(); + CPPUNIT_ASSERT_EQUAL(OUString("Lorem"), sLorem); + + const SwRedlineTable& rTable = m_pDoc->getIDocumentRedlineAccess().GetRedlineTable(); + + SwNodes& rNds = m_pDoc->GetNodes(); + CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(1), rTable.size()); + + SwNodeIndex* pNodeIdx = rTable[0]->GetContentIdx(); + CPPUNIT_ASSERT(pNodeIdx); + + pTextNode = rNds[ pNodeIdx->GetIndex() + 1 ]->GetTextNode(); //first deleted txtnode + CPPUNIT_ASSERT(pTextNode); + + OUString sIpsum = pTextNode->GetText(); + CPPUNIT_ASSERT_EQUAL(OUString(" ipsum"), sIpsum); + + aDocStat.Reset(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); //word-counting the text should only count the non-deleted text, and this whole chunk should be ignored + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(0), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(0), aDocStat.nChar); + + // https://bugs.libreoffice.org/show_bug.cgi?id=68347 we do want to count + // redline *added* text though + m_pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete|RedlineFlags::ShowInsert); + aPaM.DeleteMark(); + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), 0); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "redline-new-text "); + aDocStat.Reset(); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->SetWordCountDirty(true); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(2), aDocStat.nWord); + //redline-new-text Lorem ipsum + //+++++++++++++++++ ------ + //select start of original text and part of deleted text + aDocStat.Reset(); + pTextNode->CountWords(aDocStat, 17, 25); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(5), aDocStat.nChar); + } + + //See https://bugs.libreoffice.org/show_bug.cgi?id=38983 + { + SwDocStat aDocStat; + + OUString sTemplate("ThisXis a test."); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', ' ')); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(4), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(12), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replaceAll("X", " = ")); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(5), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(17), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replaceAll("X", " _ ")); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(5), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(17), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replaceAll("X", " -- ")); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(5), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(14), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(18), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', '_')); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(3), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', '-')); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(3), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', 0x2012)); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(3), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', 0x2015)); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(3), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + //But default configuration should, msword-alike treat emdash + //and endash as word separators for word-counting + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', 0x2013)); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(4), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replace('X', 0x2014)); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(4), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(15), aDocStat.nChar); + aDocStat.Reset(); + + static constexpr OUStringLiteral sChunk = u" \u2013 "; + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, sTemplate.replaceAll("X", sChunk)); + pTextNode = aPaM.GetNode().GetTextNode(); + pTextNode->CountWords(aDocStat, 0, pTextNode->Len()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(4), aDocStat.nWord); + CPPUNIT_ASSERT_EQUAL(sal_uLong(13), aDocStat.nCharExcludingSpaces); + CPPUNIT_ASSERT_EQUAL(sal_uLong(17), aDocStat.nChar); + aDocStat.Reset(); + } +} + +void SwDocTest::testMergePortionsDeleteNotSorted() +{ + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, " AABBCC"); + + SwCharFormat *const pCharFormat(m_pDoc->MakeCharFormat("foo", nullptr)); + SwFormatCharFormat const charFormat(pCharFormat); + + SwFormatINetFormat const inetFormat("http://example.com", ""); + + IDocumentContentOperations & rIDCO(m_pDoc->getIDocumentContentOperations()); + aPaM.SetMark(); + aPaM.GetPoint()->nContent = 2; + aPaM.GetMark()->nContent = 4; + rIDCO.InsertPoolItem(aPaM, charFormat); + aPaM.GetPoint()->nContent = 2; + aPaM.GetMark()->nContent = 5; + rIDCO.InsertPoolItem(aPaM, inetFormat); + aPaM.GetPoint()->nContent = 6; + aPaM.GetMark()->nContent = 8; + rIDCO.InsertPoolItem(aPaM, charFormat); + aPaM.GetPoint()->nContent = 4; + aPaM.GetMark()->nContent = 6; + // this triggered an STL assert in SwpHints::MergePortions() + rIDCO.InsertPoolItem(aPaM, charFormat); +} + +//See https://bugs.libreoffice.org/show_bug.cgi?id=40599 +void SwDocTest::testGraphicAnchorDeletion() +{ + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected initial 0 count", static_cast<sal_uLong>(0), m_pDoc->getIDocumentStatistics().GetDocStat().nChar); + + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Paragraph 1"); + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "graphic anchor>><<graphic anchor"); + SwNodeIndex nPara2 = aPaM.GetPoint()->nNode; + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Paragraph 3"); + + aPaM.GetPoint()->nNode = nPara2; + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), RTL_CONSTASCII_LENGTH("graphic anchor>>")); + + //Insert a graphic at X of >>X<< in paragraph 2 + SfxItemSet aFlySet(m_pDoc->GetAttrPool(), svl::Items<RES_FRMATR_BEGIN, RES_FRMATR_END-1>); + SwFormatAnchor aAnchor(RndStdIds::FLY_AS_CHAR); + aAnchor.SetAnchor(aPaM.GetPoint()); + aFlySet.Put(aAnchor); + SwFlyFrameFormat *pFrame = m_pDoc->getIDocumentContentOperations().InsertGraphic(aPaM, OUString(), OUString(), nullptr, &aFlySet, nullptr, nullptr); + CPPUNIT_ASSERT_MESSAGE("Expected frame", pFrame != nullptr); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be 1 graphic", static_cast<size_t>(1), m_pDoc->GetFlyCount(FLYCNTTYPE_GRF)); + + //Delete >X< + aPaM.GetPoint()->nNode = nPara2; + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), + RTL_CONSTASCII_LENGTH("graphic anchor>><")+1); + aPaM.SetMark(); + aPaM.GetPoint()->nNode = nPara2; + aPaM.GetPoint()->nContent.Assign(aPaM.GetContentNode(), RTL_CONSTASCII_LENGTH("graphic anchor>")); + m_pDoc->getIDocumentContentOperations().DeleteRange(aPaM); + +#ifdef DEBUG_AS_HTML + { + SvFileStream aPasteDebug(OUString("cppunitDEBUG.html"), StreamMode::WRITE|StreamMode::TRUNC); + WriterRef xWrt; + GetHTMLWriter( String(), String(), xWrt ); + SwWriter aDbgWrt( aPasteDebug, *m_pDoc ); + aDbgWrt.Write( xWrt ); + } +#endif + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be 0 graphics", static_cast<size_t>(0), m_pDoc->GetFlyCount(FLYCNTTYPE_GRF)); + + //Now, if instead we swap RndStdIds::FLY_AS_CHAR (inline graphic) to RndStdIds::FLY_AT_CHAR (anchored to character) + //and repeat the above, graphic is *not* deleted, i.e. it belongs to the paragraph, not the + //range to which its anchored, which is annoying. +} + +void SwDocTest::testTableAutoFormats() +{ + SwGlobals::ensure(); + + //create new AutoFormatTable + SwTableAutoFormatTable aTableAFT; + + //check the style size - default is expected + CPPUNIT_ASSERT_EQUAL( size_t(1), aTableAFT.size() ); + + //create new style + SwTableAutoFormat aTableAF( "TestItemStyle" ); + + //create new AutoFormat + SwBoxAutoFormat aBoxAF; + + //SetFont + SvxFontItem aFont( RES_CHRATR_FONT ); + aFont.SetFamily( FontFamily::FAMILY_DECORATIVE ); + aFont.SetPitch( FontPitch::PITCH_VARIABLE ); + aFont.SetCharSet( RTL_TEXTENCODING_MS_1251 ); + aBoxAF.SetFont( aFont ); + //SetHeight + SvxFontHeightItem aHeight( 280, 120, RES_CHRATR_FONTSIZE ); + aBoxAF.SetHeight( aHeight ); + //SetWeight + SvxWeightItem aWeight( FontWeight::WEIGHT_BOLD, RES_CHRATR_WEIGHT ); + aBoxAF.SetWeight( aWeight ); + //SetPosture + SvxPostureItem aPosture( FontItalic::ITALIC_NORMAL, RES_CHRATR_POSTURE ); + aBoxAF.SetPosture( aPosture ); + //SetCJKFont + SvxFontItem aCJKFont( RES_CHRATR_FONT ); + aCJKFont.SetFamily( FontFamily::FAMILY_MODERN ); + aCJKFont.SetPitch( FontPitch::PITCH_FIXED ); + aCJKFont.SetCharSet( RTL_TEXTENCODING_MS_1251 ); + aBoxAF.SetCJKFont( aCJKFont ); + //SetCJKHeight + SvxFontHeightItem aCJKHeight( 230, 110, RES_CHRATR_FONTSIZE ); + aBoxAF.SetCJKHeight( aCJKHeight ); + //SetCJKWeight + SvxWeightItem aCJKWeight( FontWeight::WEIGHT_SEMIBOLD, RES_CHRATR_WEIGHT ); + aBoxAF.SetCJKWeight( aCJKWeight ); + //SetCJKPosture + SvxPostureItem aCJKPosture( FontItalic::ITALIC_OBLIQUE, RES_CHRATR_POSTURE ); + aBoxAF.SetCJKPosture( aCJKPosture ); + //SetCTLFont + SvxFontItem aCTLFont( RES_CHRATR_FONT ); + aCTLFont.SetFamily( FontFamily::FAMILY_ROMAN ); + aCTLFont.SetPitch( FontPitch::PITCH_FIXED ); + aCTLFont.SetCharSet( RTL_TEXTENCODING_MS_1251 ); + aBoxAF.SetCTLFont( aCTLFont ); + //SetCTLHeight + SvxFontHeightItem aCTLHeight( 215, 105, RES_CHRATR_FONTSIZE ); + aBoxAF.SetCTLHeight( aCTLHeight ); + //SetCTLWeight + SvxWeightItem aCTLWeight( FontWeight::WEIGHT_ULTRABOLD, RES_CHRATR_WEIGHT ); + aBoxAF.SetCTLWeight( aCTLWeight ); + //SetCTLPosture + SvxPostureItem aCTLPosture( FontItalic::ITALIC_OBLIQUE, RES_CHRATR_POSTURE ); + aBoxAF.SetCTLPosture( aCTLPosture ); + //SetUnderline + SvxUnderlineItem aUnderline( FontLineStyle::LINESTYLE_DOTTED, RES_CHRATR_UNDERLINE ); + aBoxAF.SetUnderline( aUnderline ); + //SetOverline + SvxOverlineItem aOverline( FontLineStyle::LINESTYLE_DASH, RES_CHRATR_OVERLINE ); + aBoxAF.SetOverline( aOverline ); + //SetCrossedOut + SvxCrossedOutItem aCrossedOut( FontStrikeout::STRIKEOUT_BOLD, RES_CHRATR_CROSSEDOUT ); + aBoxAF.SetCrossedOut( aCrossedOut ); + //SetContour + SvxContourItem aContour( true, RES_CHRATR_CONTOUR ); + aBoxAF.SetContour( aContour ); + //SetShadowed + SvxShadowedItem aShadowed( false, RES_CHRATR_SHADOWED ); + aBoxAF.SetShadowed( aShadowed ); + //SetColor + SvxColorItem aColor( Color(0xFF23FF), RES_CHRATR_COLOR ); + aBoxAF.SetColor( aColor ); + //SetAdjust + SvxAdjustItem aAdjust( SvxAdjust::Center, RES_PARATR_ADJUST ); + aBoxAF.SetAdjust( aAdjust ); + //SetTextOrientation + SvxFrameDirectionItem aTOrientation( SvxFrameDirection::Vertical_RL_TB, RES_FRAMEDIR ); + aBoxAF.SetTextOrientation( aTOrientation ); + //SetVerticalAlignment + SwFormatVertOrient aVAlignment( 3, css::text::VertOrientation::CENTER, css::text::RelOrientation::PAGE_LEFT ); + aBoxAF.SetVerticalAlignment( aVAlignment ); + //SetBox + SvxBoxItem aBox( RES_BOX ); + aBox.SetAllDistances( 5 ); + aBoxAF.SetBox( aBox ); + //SetBackground + SvxBrushItem aBackground( Color(0xFF11FF), RES_BACKGROUND ); + aBoxAF.SetBackground( aBackground ); + //Set m_aTLBR + SvxLineItem aTLBRLine(0); aTLBRLine.ScaleMetrics( 11,12 ); + aBoxAF.SetTLBR(aTLBRLine); + //Set m_aBLTR + SvxLineItem aBLTRLine(0); aBLTRLine.ScaleMetrics( 13,14 ); + aBoxAF.SetBLTR(aBLTRLine); + //Set m_aHorJustify + SvxHorJustifyItem aHJustify( SvxCellHorJustify::Center, 0 ); + aBoxAF.SetHorJustify(aHJustify); + //Set m_aVerJustify + SvxVerJustifyItem aVJustify( SvxCellVerJustify::Center , 0 ); + aBoxAF.SetVerJustify(aVJustify); + //Set m_aStacked + SfxBoolItem aStacked(0, true); + aBoxAF.SetStacked(aStacked); + //Set m_aMargin + SvxMarginItem aSvxMarginItem(sal_Int16(4), sal_Int16(2), sal_Int16(3), sal_Int16(3), TypedWhichId<SvxMarginItem>(0)); + aBoxAF.SetMargin(aSvxMarginItem); + //Set m_aLinebreak + SfxBoolItem aLBreak(0, true); + aBoxAF.SetLinebreak(aLBreak); + //Set m_aRotateAngle + SfxInt32Item aRAngle(sal_Int32(5)); + aBoxAF.SetRotateAngle(aRAngle); + //Set m_aRotateMode + SvxRotateModeItem aSvxRotateModeItem(SVX_ROTATE_MODE_CENTER, TypedWhichId<SvxRotateModeItem>(0)); + aBoxAF.SetRotateMode(aSvxRotateModeItem); + //Set m_sNumFormatString + OUString aNFString = "UnitTestFormat"; + aBoxAF.SetNumFormatString(aNFString); + //Set m_eSysLanguage + LanguageType aSLang( LANGUAGE_ENGLISH_INDIA ); + aBoxAF.SetSysLanguage(aSLang); + //Set m_eNumFormatLanguage + LanguageType aNFLang( LANGUAGE_GERMAN ); + aBoxAF.SetNumFormatLanguage(aNFLang); + //Set m_aKeepWithNextPara + SvxFormatKeepItem aKWNPara( true, 0 ); + aTableAF.SetKeepWithNextPara(aKWNPara); + //Set m_aRepeatHeading + sal_uInt16 aRHeading = 3; + aTableAF.m_aRepeatHeading = aRHeading; + //Set m_bLayoutSplit + bool aLSplit = false; + aTableAF.m_bLayoutSplit = aLSplit; + //Set m_bRowSplit + bool aRSplit = false; + aTableAF.m_bRowSplit = aRSplit; + //Set m_bCollapsingBorders + bool aCBorders = false; + aTableAF.m_bCollapsingBorders = aCBorders; + //Set m_aShadow + SvxShadowItem aShadow( 0, nullptr, 103, SvxShadowLocation::BottomLeft ); + aTableAF.SetShadow(aShadow); + //Set bInclFont + bool aIFont = false; + aTableAF.m_bInclFont = aIFont; + //Set bInclJustify + bool aIJustify = false; + aTableAF.m_bInclJustify = aIJustify; + //Set bInclFrame + bool aIFrame = false; + aTableAF.m_bInclFrame = aIFrame; + //Set bInclBackground + bool aIBackground = false; + aTableAF.m_bInclBackground = aIBackground; + //Set bInclValueFormat + bool aIVFormat = false; + aTableAF.m_bInclValueFormat = aIVFormat; + + //set the box format to AutoFormat + aTableAF.SetBoxFormat( aBoxAF, sal_uInt8(0) ); + //add AutoFormat to AutoFormatTable + aTableAFT.AddAutoFormat( aTableAF ); + + //check the style size + CPPUNIT_ASSERT_EQUAL( size_t(2), aTableAFT.size() ); + + //save the bInclFontstyles + aTableAFT.Save(); + + //check the style size after save + CPPUNIT_ASSERT_EQUAL( size_t(2), aTableAFT.size() ); + + //create new AutoFormatTable + SwTableAutoFormatTable aLoadTAFT; + + //check the style size + CPPUNIT_ASSERT_EQUAL( size_t(1), aLoadTAFT.size() ); + + //load the saved styles + aLoadTAFT.Load(); + + //check the style size after load + CPPUNIT_ASSERT_EQUAL( size_t(2), aLoadTAFT.size() ); + + //assert the values + SwTableAutoFormat* pLoadAF = aLoadTAFT.FindAutoFormat( u"TestItemStyle" ); + CPPUNIT_ASSERT( pLoadAF ); + //GetFont + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetFont() == aFont ) ); + //GetHeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetHeight() == aHeight ) ); + //GetWeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetWeight() == aWeight ) ); + //GetPosture + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetPosture() == aPosture ) ); + //GetCJKFont + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCJKFont() == aCJKFont ) ); + //GetCJKHeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCJKHeight() == aCJKHeight ) ); + //GetCJKWeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCJKWeight() == aCJKWeight ) ); + //GetCJKPosture + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCJKPosture() == aCJKPosture ) ); + //GetCTLFont + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCTLFont() == aCTLFont ) ); + //GetCTLHeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCTLHeight() == aCTLHeight ) ); + //GetCTLWeight + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCTLWeight() == aCTLWeight ) ); + //GetCTLPosture + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCTLPosture() == aCTLPosture ) ); + //GetUnderline + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetUnderline() == aUnderline ) ); + //GetOverline + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetOverline() == aOverline ) ); + //GetCrossedOut + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetCrossedOut() == aCrossedOut ) ); + //GetContour + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetContour() == aContour ) ); + //GetShadowed + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetShadowed() == aShadowed ) ); + //GetColor + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetColor() == aColor) ); + //GetAdjust + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetAdjust() == aAdjust ) ); + //GetTextOrientation + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetTextOrientation() == aTOrientation ) ); + //GetVerticalAlignment + CPPUNIT_ASSERT (bool( pLoadAF->GetBoxFormat(0).GetVerticalAlignment() == aVAlignment ) ); + //GetBox + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetBox() == aBox ) ); + //GetBackground + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetBackground() == aBackground ) ); + //Get m_aTLBR + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetTLBR() == aTLBRLine ) ); + //Get m_aBLTR + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetBLTR() == aBLTRLine ) ); + //Get m_aHorJustify + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetHorJustify() == aHJustify ) ); + //Get m_aVerJustify + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetVerJustify() == aVJustify ) ); + //Get m_aStacked + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetStacked() == aStacked ) ); + //Get m_aMargin + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetMargin() == aSvxMarginItem ) ); + //Get m_aLinebreak + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetLinebreak() == aLBreak ) ); + //Get m_aRotateAngle + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetRotateAngle() == aRAngle ) ); + //Get m_aRotateMode + //SvxRotateModeItem aRMode = aBoxAF.m_aRotateMode;GetRotateMode + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetRotateMode() == aSvxRotateModeItem ) ); + //Get m_sNumFormatString + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetNumFormatString() == aNFString ) ); + //Get m_eSysLanguage + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetSysLanguage() == aSLang ) ); + //Get m_eNumFormatLanguage + CPPUNIT_ASSERT( bool( pLoadAF->GetBoxFormat(0).GetNumFormatLanguage() == aNFLang ) ); + //Get m_aKeepWithNextPara + CPPUNIT_ASSERT( bool( pLoadAF->GetKeepWithNextPara() == aKWNPara ) ); + //Get m_aRepeatHeading + CPPUNIT_ASSERT( bool( pLoadAF->m_aRepeatHeading == aRHeading ) ); + //Get m_bLayoutSplit + CPPUNIT_ASSERT( bool( pLoadAF->m_bLayoutSplit == aLSplit ) ); + //Get m_bRowSplit + CPPUNIT_ASSERT( bool( pLoadAF->m_bRowSplit == aRSplit ) ); + //Get m_bCollapsingBorders + CPPUNIT_ASSERT( bool( pLoadAF->m_bCollapsingBorders == aCBorders ) ); + //Get m_aShadow + CPPUNIT_ASSERT( bool( pLoadAF->GetShadow() == aShadow ) ); + //Get bInclFont + CPPUNIT_ASSERT( bool( pLoadAF->m_bInclFont == aIFont ) ); + //Get bInclJustify + CPPUNIT_ASSERT( bool( pLoadAF->m_bInclJustify == aIJustify ) ); + //Get bInclFrame + CPPUNIT_ASSERT( bool( pLoadAF->m_bInclFrame == aIFrame ) ); + //Get bInclBackground + CPPUNIT_ASSERT( bool( pLoadAF->m_bInclBackground == aIBackground ) ); + //Get bInclValueFormat + CPPUNIT_ASSERT( bool( pLoadAF->m_bInclValueFormat == aIVFormat ) ); +} + +static OUString +translitTest(SwDoc & rDoc, const SwPaM & rPaM, TransliterationFlags const nType) +{ + utl::TransliterationWrapper aTrans( + ::comphelper::getProcessComponentContext(), nType); + rDoc.getIDocumentContentOperations().TransliterateText(rPaM, aTrans); + return rPaM.GetText(); +} + +void SwDocTest::testTransliterate() +{ + // just some simple test to see if it's totally broken + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "foobar"); + aPaM.SetMark(); + aPaM.GetPoint()->nContent = 0; + CPPUNIT_ASSERT_EQUAL(OUString("foobar"), aPaM.GetText()); + + CPPUNIT_ASSERT_EQUAL(OUString("FOOBAR"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::LOWERCASE_UPPERCASE)); + CPPUNIT_ASSERT_EQUAL(OUString("Foobar"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::TITLE_CASE)); + CPPUNIT_ASSERT_EQUAL(OUString("fOOBAR"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::TOGGLE_CASE)); + CPPUNIT_ASSERT_EQUAL(OUString("foobar"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::UPPERCASE_LOWERCASE)); + CPPUNIT_ASSERT_EQUAL(OUString("Foobar"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::SENTENCE_CASE)); + CPPUNIT_ASSERT_EQUAL(OUString("Foobar"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::HIRAGANA_KATAKANA)); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "one (two) three"); + aPaM.SetMark(); + aPaM.GetMark()->nContent = 0; + CPPUNIT_ASSERT_EQUAL(OUString("One (Two) Three"), + translitTest(*m_pDoc, aPaM, + TransliterationFlags::TITLE_CASE)); +} + +namespace +{ + class SwTableFormulaTest : public SwTableFormula + { + SwTableNode *m_pNode; + public: + SwTableFormulaTest(const OUString &rStr, SwTableNode *pNode) + : SwTableFormula(rStr) + , m_pNode(pNode) + { + m_eNmType = INTRNL_NAME; + } + virtual const SwNode* GetNodeOfFormula() const override + { + return m_pNode; + } + }; +} + +//tdf#66353 Expression is faulty +void SwDocTest::testFormulas() +{ + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPosition aPos(aIdx); + + const SwTable *pTable = m_pDoc->InsertTable( + SwInsertTableOptions(SwInsertTableFlags::HeadlineNoBorder, 0), aPos, 1, 3, 0); + SwTableNode* pTableNode = pTable->GetTableNode(); + SwTableFormulaTest aFormula("<\x12-1,0>+<Table1.A1>", pTableNode); + + aFormula.PtrToBoxNm(pTable); + + CPPUNIT_ASSERT_EQUAL(OUString("<?>+<Table1.?>"), aFormula.GetFormula()); + + // tdf#61228: Evaluating non-defined function should return an error + SwCalc aCalc(*m_pDoc); + SwSbxValue val = aCalc.Calculate("foobar()"); + CPPUNIT_ASSERT(aCalc.IsCalcError()); + CPPUNIT_ASSERT(val.IsVoidValue()); + CPPUNIT_ASSERT(val.IsDouble()); + CPPUNIT_ASSERT_EQUAL(DBL_MAX, val.GetDouble()); + // Evaluating non-defined variable should return 0 without an error + val = aCalc.Calculate("foobar"); + CPPUNIT_ASSERT(!aCalc.IsCalcError()); + CPPUNIT_ASSERT(val.IsVoidValue()); + CPPUNIT_ASSERT(val.IsLong()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), val.GetLong()); +} + +void SwDocTest::testMarkMove() +{ + IDocumentMarkAccess* pMarksAccess = m_pDoc->getIDocumentMarkAccess(); + + { + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Paragraph 1"); + aPaM.SetMark(); + aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex(); + pMarksAccess->makeMark(aPaM, "Para1", + IDocumentMarkAccess::MarkType::BOOKMARK, sw::mark::InsertMode::New); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Paragraph 2"); + aPaM.SetMark(); + aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex(); + pMarksAccess->makeMark(aPaM, "Para2", + IDocumentMarkAccess::MarkType::BOOKMARK, sw::mark::InsertMode::New); + + m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint()); + m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "Paragraph 3"); + aPaM.SetMark(); + aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex(); + pMarksAccess->makeMark(aPaM, "Para3", + IDocumentMarkAccess::MarkType::BOOKMARK, sw::mark::InsertMode::New); + } + + // join paragraph 2 and 3 and check + { + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -2); + SwTextNode& rParaNode2 = dynamic_cast<SwTextNode&>(aIdx.GetNode()); + rParaNode2.JoinNext(); + } + ::sw::mark::IMark* pBM1 = *pMarksAccess->findMark("Para1"); + ::sw::mark::IMark* pBM2 = *pMarksAccess->findMark("Para2"); + ::sw::mark::IMark* pBM3 = *pMarksAccess->findMark("Para3"); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(0) , pBM1->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), pBM1->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex(), + pBM1->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(0) , pBM2->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), pBM2->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkStart().nNode.GetIndex(), + pBM2->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), pBM3->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(22), pBM3->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM3->GetMarkStart().nNode.GetIndex(), + pBM3->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex()+1, + pBM2->GetMarkStart().nNode.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkStart().nNode.GetIndex(), + pBM3->GetMarkStart().nNode.GetIndex()); + + // cut some text + { + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPaM aPaM(aIdx, aIdx, SwNodeOffset(-1)); + aPaM.GetPoint()->nContent += 5; + aPaM.GetMark()->nContent += 6; + m_pDoc->getIDocumentContentOperations().DeleteAndJoin(aPaM); + } + pBM1 = *pMarksAccess->findMark("Para1"); + pBM2 = *pMarksAccess->findMark("Para2"); + pBM3 = *pMarksAccess->findMark("Para3"); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), pBM1->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(6), pBM1->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex(), + pBM1->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(6), pBM2->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(12), pBM2->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkStart().nNode.GetIndex(), + pBM2->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(12), pBM3->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(23), pBM3->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM3->GetMarkStart().nNode.GetIndex(), + pBM3->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex(), + pBM2->GetMarkStart().nNode.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkStart().nNode.GetIndex(), + pBM3->GetMarkStart().nNode.GetIndex()); + + // split the paragraph + { + SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1); + SwPosition aPos(aIdx); + aPos.nContent += 8; + m_pDoc->getIDocumentContentOperations().SplitNode(aPos, false); + } + pBM1 = *pMarksAccess->findMark("Para1"); + pBM2 = *pMarksAccess->findMark("Para2"); + pBM3 = *pMarksAccess->findMark("Para3"); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), pBM1->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(6), pBM1->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex(), + pBM1->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(6), pBM2->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pBM2->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkStart().nNode.GetIndex()+1, + pBM2->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pBM3->GetMarkStart().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(15), pBM3->GetMarkEnd().nContent.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM3->GetMarkStart().nNode.GetIndex(), + pBM3->GetMarkEnd().nNode.GetIndex()); + + CPPUNIT_ASSERT_EQUAL( + pBM1->GetMarkStart().nNode.GetIndex(), + pBM2->GetMarkStart().nNode.GetIndex()); + CPPUNIT_ASSERT_EQUAL( + pBM2->GetMarkEnd().nNode.GetIndex(), + pBM3->GetMarkEnd().nNode.GetIndex()); +} + +namespace +{ + struct TestRing : public sw::Ring<TestRing> + { + TestRing() : sw::Ring<TestRing>() {}; + TestRing* GetNext() + { return GetNextInRing(); } + TestRing* GetPrev() + { return GetPrevInRing(); } + bool lonely() const + { return unique(); } + }; +} + +void SwDocTest::testIntrusiveRing() +{ + TestRing aRing1, aRing2, aRing3, aRing4, aRing5; + std::vector<TestRing*> vRings + { + &aRing1, + &aRing2, + &aRing3, + &aRing4, + &aRing5 + }; + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aRing1.GetRingContainer().size()); + CPPUNIT_ASSERT(aRing1.lonely()); + CPPUNIT_ASSERT(aRing2.lonely()); + CPPUNIT_ASSERT(aRing3.lonely()); + aRing2.MoveTo(&aRing1); + aRing3.MoveTo(&aRing1); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aRing1.GetRingContainer().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aRing2.GetRingContainer().size()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aRing3.GetRingContainer().size()); + CPPUNIT_ASSERT(!aRing1.lonely()); + CPPUNIT_ASSERT(!aRing2.lonely()); + CPPUNIT_ASSERT(!aRing3.lonely()); + aRing5.MoveTo(&aRing4); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aRing4.GetRingContainer().size()); + aRing4.GetRingContainer().merge(aRing1.GetRingContainer()); + for(TestRing* pRing : vRings) + { + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(5), pRing->GetRingContainer().size()); + } + for(std::vector<TestRing*>::iterator ppRing = vRings.begin(); ppRing != vRings.end(); ++ppRing) + { + std::vector<TestRing*>::iterator ppNext = ppRing+1; + if(ppNext==vRings.end()) + ppNext = vRings.begin(); + CPPUNIT_ASSERT_EQUAL((*ppRing)->GetNext(), *ppNext); + CPPUNIT_ASSERT_EQUAL((*ppNext)->GetPrev(), *ppRing); + } + for(TestRing& r: aRing1.GetRingContainer()) + { + TestRing* pRing = &r; + CPPUNIT_ASSERT(pRing); + } + const TestRing* pConstRing = &aRing1; + for(const TestRing& r: pConstRing->GetRingContainer()) // this should fail without r being const + { + const TestRing* pRing = &r; + CPPUNIT_ASSERT(pRing); + } + TestRing foo, bar; + foo.MoveTo(&bar); + CPPUNIT_ASSERT_EQUAL(&foo, bar.GetNext()); + CPPUNIT_ASSERT_EQUAL(&foo, bar.GetPrev()); + CPPUNIT_ASSERT_EQUAL(&bar, foo.GetNext()); + CPPUNIT_ASSERT_EQUAL(&bar, foo.GetPrev()); + foo.MoveTo(&foo); + CPPUNIT_ASSERT_EQUAL(&bar, bar.GetNext()); + CPPUNIT_ASSERT_EQUAL(&bar, bar.GetPrev()); + CPPUNIT_ASSERT_EQUAL(&foo, foo.GetNext()); + CPPUNIT_ASSERT_EQUAL(&foo, foo.GetPrev()); +} + +namespace +{ + struct TestHint final : SfxHint {}; + struct TestModify : sw::BroadcastingModify + { + }; + struct TestClient : SwClient + { + int m_nModifyCount; + int m_nNotifyCount; + int m_nModifyChangedCount; + const SwModify* m_pLastChangedModify; + TestClient() : m_nModifyCount(0), m_nNotifyCount(0), m_nModifyChangedCount(0), m_pLastChangedModify(nullptr) {}; + virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) override + { + if(typeid(TestHint) == typeid(rHint)) + ++m_nNotifyCount; + else if(dynamic_cast<const sw::LegacyModifyHint*>(&rHint)) + ++m_nModifyCount; + else if(auto pModifyChangedHint = dynamic_cast<const sw::ModifyChangedHint*>(&rHint)) + { + ++m_nModifyChangedCount; + m_pLastChangedModify = pModifyChangedHint->m_pNew; + } + } + }; + struct OtherTestClient : SwClient + { + int m_nModifyCount; + OtherTestClient() : m_nModifyCount(0) {}; + virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) override + { + if(dynamic_cast<const sw::LegacyModifyHint*>(&rHint)) + ++m_nModifyCount; + } + }; + struct TestListener : SvtListener + { + int m_nNotifyCount; + TestListener() : m_nNotifyCount(0) {}; + virtual void Notify( const SfxHint& ) override + { + ++m_nNotifyCount; + } + }; +} +void SwDocTest::testClientModify() +{ + (void) OtherTestClient(); // avoid loplugin:unreffun + TestModify aMod; + TestClient aClient1, aClient2; + OtherTestClient aOtherClient1; + // test client registration + CPPUNIT_ASSERT(!aMod.HasWriterListeners()); + CPPUNIT_ASSERT(!aMod.HasOnlyOneListener()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aClient1.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aClient2.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aClient2.GetRegisteredIn()); + aMod.Add(&aClient1); + CPPUNIT_ASSERT(aMod.HasWriterListeners()); + CPPUNIT_ASSERT(aMod.HasOnlyOneListener()); + aMod.Add(&aClient2); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(&aMod),aClient1.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(&aMod), aClient2.GetRegisteredIn()); + CPPUNIT_ASSERT(aMod.HasWriterListeners()); + CPPUNIT_ASSERT(!aMod.HasOnlyOneListener()); + // test broadcast + aMod.CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); + CPPUNIT_ASSERT_EQUAL(1,aClient1.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient2.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(0,aClient1.m_nNotifyCount); + CPPUNIT_ASSERT_EQUAL(0,aClient2.m_nNotifyCount); + aMod.CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); + CPPUNIT_ASSERT_EQUAL(2,aClient1.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(2,aClient2.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(0,aClient1.m_nNotifyCount); + CPPUNIT_ASSERT_EQUAL(0,aClient2.m_nNotifyCount); + // test notify + { + TestHint aHint; + aMod.CallSwClientNotify(aHint); + CPPUNIT_ASSERT_EQUAL(2,aClient1.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(2,aClient2.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient1.m_nNotifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient2.m_nNotifyCount); + } + // test typed iteration + CPPUNIT_ASSERT(typeid(aClient1) != typeid(OtherTestClient)); + { + SwIterator<OtherTestClient,SwModify> aIter(aMod); + for(OtherTestClient* pClient = aIter.First(); pClient ; pClient = aIter.Next()) + CPPUNIT_ASSERT(false); + } + { + int nCount = 0; + SwIterator<TestClient,SwModify> aIter(aMod); + for(TestClient* pClient = aIter.First(); pClient ; pClient = aIter.Next()) + { + CPPUNIT_ASSERT_EQUAL(2,pClient->m_nModifyCount); + ++nCount; + } + CPPUNIT_ASSERT_EQUAL(2,nCount); + } + aMod.Add(&aOtherClient1); + CPPUNIT_ASSERT_EQUAL(0,aOtherClient1.m_nModifyCount); + { + int nCount = 0; + SwIterator<TestClient,SwModify> aIter(aMod); + for(TestClient* pClient = aIter.First(); pClient ; pClient = aIter.Next()) + { + CPPUNIT_ASSERT_EQUAL(2,pClient->m_nModifyCount); + ++nCount; + } + CPPUNIT_ASSERT_EQUAL(2,nCount); + } + CPPUNIT_ASSERT_EQUAL(0,aOtherClient1.m_nModifyCount); + aMod.Remove(&aOtherClient1); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(&aMod),aClient1.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(&aMod),aClient2.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aOtherClient1.GetRegisteredIn()); + // test client self-deregistration during iteration + { + int nCount = 0; + SwIterator<TestClient,SwModify> aIter(aMod); + for(TestClient* pClient = aIter.First(); pClient ; pClient = aIter.Next()) + { + aMod.Remove(pClient); + ++nCount; + } + CPPUNIT_ASSERT_EQUAL(2,nCount); + } + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aClient1.GetRegisteredIn()); + CPPUNIT_ASSERT_EQUAL(static_cast<SwModify*>(nullptr),aClient2.GetRegisteredIn()); + { + SwIterator<TestClient,SwModify> aIter(aMod); + for(TestClient* pClient = aIter.First(); pClient ; pClient = aIter.Next()) + { + CPPUNIT_ASSERT(false); + } + } + aMod.CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); + CPPUNIT_ASSERT_EQUAL(2,aClient1.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(2,aClient2.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient1.m_nNotifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient2.m_nNotifyCount); +} +void SwDocTest::testBroadcastingModify() +{ + sw::BroadcastingModify aMod; + TestClient aClient; + TestListener aListener; + + aMod.Add(&aClient); + aListener.StartListening(aMod.GetNotifier()); + + aMod.CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); + CPPUNIT_ASSERT_EQUAL(1,aClient.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(1,aClient.m_nModifyCount); + CPPUNIT_ASSERT_EQUAL(1,aListener.m_nNotifyCount); +} +void SwDocTest::testWriterMultiListener() +{ + TestModify aMod; + TestClient aClient; + sw::WriterMultiListener aMulti(aClient); + CPPUNIT_ASSERT(!aMulti.IsListeningTo(&aMod)); + aMulti.StartListening(&aMod); + CPPUNIT_ASSERT(aMulti.IsListeningTo(&aMod)); + aMulti.EndListeningAll(); + CPPUNIT_ASSERT(!aMulti.IsListeningTo(&aMod)); + aMulti.StartListening(&aMod); + aMulti.EndListening(&aMod); + CPPUNIT_ASSERT(!aMulti.IsListeningTo(&aMod)); + int nPreDeathChangedCount; + { + TestModify aTempMod; + aMod.Add(&aTempMod); + aMulti.StartListening(&aTempMod); + nPreDeathChangedCount = aClient.m_nModifyChangedCount; + } + CPPUNIT_ASSERT(aMulti.IsListeningTo(&aMod)); + CPPUNIT_ASSERT_EQUAL(nPreDeathChangedCount+1, aClient.m_nModifyChangedCount); + CPPUNIT_ASSERT_EQUAL(static_cast<const SwModify*>(&aMod),aClient.m_pLastChangedModify); +} + +void SwDocTest::test64kPageDescs() +{ + size_t nPageDescCount = 65536; // USHRT_MAX + 1 + + for (size_t i = 0; i < nPageDescCount; ++i) + { + OUString aName = "Page" + OUString::number(i); + m_pDoc->MakePageDesc( aName ); + } + + size_t nCount = m_pDoc->GetPageDescCnt(); + // +1 because Writer always creates a dummy page desc + // in a new SwDoc + CPPUNIT_ASSERT_EQUAL( nPageDescCount + 1, nCount ); + + const SwPageDesc &rDesc = m_pDoc->GetPageDesc( nPageDescCount ); + SwPageDesc &rZeroDesc = m_pDoc->GetPageDesc( 0 ); + CPPUNIT_ASSERT_EQUAL( OUString("Page65535"), rDesc.GetName() ); + + SwPageDesc aDesc( rDesc ); + static const OUStringLiteral aChanged(u"Changed01"); + aDesc.SetName( aChanged ); + m_pDoc->ChgPageDesc( nPageDescCount, aDesc ); + + size_t nPos; + SwPageDesc *pDesc = m_pDoc->FindPageDesc( aChanged, &nPos ); + CPPUNIT_ASSERT( pDesc != nullptr ); + CPPUNIT_ASSERT_EQUAL( nPageDescCount, nPos ); + + // check if we didn't mess up PageDesc at pos 0 + // (happens with 16bit int overflow) + OUString aZeroName = rZeroDesc.GetName(); + rZeroDesc = m_pDoc->GetPageDesc( 0 ); + CPPUNIT_ASSERT_EQUAL( aZeroName, rZeroDesc.GetName() ); + + m_pDoc->DelPageDesc( aChanged, /*bBroadcast*/true ); + pDesc = m_pDoc->FindPageDesc( aChanged, &nPos ); + // not there anymore + CPPUNIT_ASSERT( !pDesc ); + CPPUNIT_ASSERT_EQUAL( std::numeric_limits<size_t>::max(), nPos); + + // check if PageDesc at pos 0 is still there + pDesc = m_pDoc->FindPageDesc( aZeroName, &nPos ); + CPPUNIT_ASSERT( pDesc != nullptr ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), nPos ); +} + +void SwDocTest::testTdf92308() +{ + CPPUNIT_ASSERT_EQUAL(false, m_pDoc->HasInvisibleContent()); +} + +void SwDocTest::testTableCellComparison() +{ + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellsByColFirst("A1", "Z1") ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByColFirst("Z1", "A1") ); + CPPUNIT_ASSERT_EQUAL( 0, sw_CompareCellsByColFirst("A1", "A1") ); + + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByColFirst("A2", "A1") ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByColFirst("Z3", "A2") ); + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellsByColFirst("A3", "Z1") ); + + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellsByRowFirst("A1", "Z1") ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByRowFirst("Z1", "A1") ); + CPPUNIT_ASSERT_EQUAL( 0, sw_CompareCellsByRowFirst("A1", "A1") ); + + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByRowFirst("A2", "A1") ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByRowFirst("Z3", "A2") ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellsByRowFirst("A3", "Z1") ); + + CPPUNIT_ASSERT_EQUAL( 0, sw_CompareCellRanges("A1", "A1", "A1", "A1", true) ); + CPPUNIT_ASSERT_EQUAL( 0, sw_CompareCellRanges("A1", "Z1", "A1", "Z1", true) ); + CPPUNIT_ASSERT_EQUAL( 0, sw_CompareCellRanges("A1", "Z1", "A1", "Z1", false) ); + + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellRanges("A1", "Z1", "B1", "Z1", true) ); + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellRanges("A1", "Z1", "A2", "Z2", false) ); + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellRanges("A1", "Z1", "A2", "Z2", true) ); + CPPUNIT_ASSERT_EQUAL( -1, sw_CompareCellRanges("A1", "Z1", "A6", "Z2", true) ); + + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellRanges("B1", "Z1", "A1", "Z1", true) ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellRanges("A2", "Z2", "A1", "Z1", false) ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellRanges("A2", "Z2", "A1", "Z1", true) ); + CPPUNIT_ASSERT_EQUAL( +1, sw_CompareCellRanges("A6", "Z2", "A1", "Z1", true) ); + + OUString rCell1("A1"); + OUString rCell2("C5"); + + sw_NormalizeRange(rCell1, rCell2); + CPPUNIT_ASSERT_EQUAL( OUString("A1"), rCell1 ); + CPPUNIT_ASSERT_EQUAL( OUString("C5"), rCell2 ); + + sw_NormalizeRange(rCell2, rCell1); + CPPUNIT_ASSERT_EQUAL( OUString("C5"), rCell1 ); + CPPUNIT_ASSERT_EQUAL( OUString("A1"), rCell2 ); + + rCell1 = OUString("A5"); + rCell2 = OUString("C1"); + + sw_NormalizeRange(rCell1, rCell2); + CPPUNIT_ASSERT_EQUAL( OUString("A1"), rCell1 ); + CPPUNIT_ASSERT_EQUAL( OUString("C5"), rCell2 ); + + sw_NormalizeRange(rCell2, rCell1); + CPPUNIT_ASSERT_EQUAL( OUString("C5"), rCell1 ); + CPPUNIT_ASSERT_EQUAL( OUString("A1"), rCell2 ); + + CPPUNIT_ASSERT_EQUAL( OUString(), sw_GetCellName(-1, -1) ); +} + +void SwDocTest::setUp() +{ + BootstrapFixture::setUp(); + + SwGlobals::ensure(); + m_pDoc = new SwDoc; + m_xDocShRef = new SwDocShell(*m_pDoc, SfxObjectCreateMode::EMBEDDED); + m_xDocShRef->DoInitNew(); +} + +void SwDocTest::tearDown() +{ + m_pDoc = nullptr; // deleted by DoClose() + m_xDocShRef->DoClose(); + m_xDocShRef.clear(); + + BootstrapFixture::tearDown(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SwDocTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/core/view/data/update-ole-object-previews.odt b/sw/qa/core/view/data/update-ole-object-previews.odt Binary files differnew file mode 100644 index 000000000..e6004afcb --- /dev/null +++ b/sw/qa/core/view/data/update-ole-object-previews.odt diff --git a/sw/qa/core/view/view.cxx b/sw/qa/core/view/view.cxx new file mode 100644 index 000000000..3ff399a0f --- /dev/null +++ b/sw/qa/core/view/view.cxx @@ -0,0 +1,70 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <svtools/embedhlp.hxx> +#include <vcl/graph.hxx> + +#include <doc.hxx> +#include <docsh.hxx> +#include <fmtcntnt.hxx> +#include <frameformats.hxx> +#include <frmfmt.hxx> +#include <ndarr.hxx> +#include <ndindex.hxx> +#include <ndole.hxx> +#include <node.hxx> +#include <nodeoffset.hxx> +#include <wrtsh.hxx> + +constexpr OUStringLiteral DATA_DIRECTORY = u"/sw/qa/core/view/data/"; + +namespace +{ +/// Covers sw/source/core/view/ fixes. +class Test : public SwModelTestBase +{ +}; +} + +CPPUNIT_TEST_FIXTURE(Test, testUpdateOleObjectPreviews) +{ + // Given a document with two embedded objects, both with broken native data: + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "update-ole-object-previews.odt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + + // When updating the previews of those embedded objects (right after document load, before + // painting the OLE objects): + pWrtShell->UpdateOleObjectPreviews(); + + // Then make sure that the working preview of those objects are not lost: + const SwFrameFormats* pFormats = pDoc->GetSpzFrameFormats(); + CPPUNIT_ASSERT(pFormats); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), pFormats->size()); + for (size_t i = 0; i < pFormats->size(); ++i) + { + SwFrameFormat* pFormat = (*pFormats)[i]; + + const SwNodeIndex* pNodeIndex = pFormat->GetContent().GetContentIdx(); + CPPUNIT_ASSERT(pNodeIndex); + SwNode* pNode = pDoc->GetNodes()[pNodeIndex->GetIndex() + 1]; + SwOLENode* pOleNode = pNode->GetOLENode(); + CPPUNIT_ASSERT(pOleNode); + SwOLEObj& rOleObj = pOleNode->GetOLEObj(); + svt::EmbeddedObjectRef& rObject = rOleObj.GetObject(); + // Without the accompanying fix in place, this test would have failed, the update broke the + // preview of the second embedded object. + CPPUNIT_ASSERT(!rObject.GetGraphic()->IsNone()); + } +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |