formula/inc/core_resource.hrc                       |    8 
 formula/source/core/api/FormulaCompiler.cxx         |   26 
 formula/source/core/api/token.cxx                   |   25 
 formula/source/ui/dlg/parawin.cxx                   |    9 
 include/formula/FormulaCompiler.hxx                 |    7 
 include/formula/compiler.hxx                        |    2 
 include/formula/opcode.hxx                          |    4 
 include/formula/tokenarray.hxx                      |    3 
 sc/README.md                                        |    2 
 sc/inc/compiler.hxx                                 |    3 
 sc/inc/helpids.h                                    |    1 
 sc/inc/scfuncs.hrc                                  |   12 
 sc/qa/extras/scfunctionlistobj.cxx                  |    2 
 sc/qa/unit/data/functions/spreadsheet/fods/let.fods | 4308 ++++++++++++++++++++
 sc/qa/unit/data/xlsx/tdf137543.xlsx                 |binary
 sc/qa/unit/subsequent_export_test2.cxx              |   14 
 sc/qa/unit/ucalc.cxx                                |    1 
 sc/source/core/data/funcdesc.cxx                    |    5 
 sc/source/core/inc/interpre.hxx                     |    8 
 sc/source/core/tool/compiler.cxx                    |   40 
 sc/source/core/tool/interpr1.cxx                    |  147 
 sc/source/core/tool/interpr4.cxx                    |    1 
 sc/source/core/tool/parclass.cxx                    |    3 
 sc/source/core/tool/token.cxx                       |   16 
 sc/source/filter/excel/xlformula.cxx                |    3 
 sc/source/filter/oox/formulabase.cxx                |    1 
 26 files changed, 4641 insertions(+), 10 deletions(-)

New commits:
commit 521a56d8d1e12b7471fda6b62b21d51776c9fbaf
Author:     Balazs Varga <balazs.varga.ext...@allotropia.de>
AuthorDate: Thu May 30 18:43:09 2024 +0200
Commit:     Balazs Varga <balazs.varga.ext...@allotropia.de>
CommitDate: Thu Jun 6 09:09:47 2024 +0200

    tdf#137543 - Add new LET function to Calc
    
    Add new LET function to Calc which assigns names to calculation results.
    
    TODO: oasis proposal
    
    Change-Id: Ia0d56a30751a44a72e364a28b64fd8f617e997dc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168349
    Tested-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de>

diff --git a/formula/inc/core_resource.hrc b/formula/inc/core_resource.hrc
index 081f71b56772..45e0aa62507d 100644
--- a/formula/inc/core_resource.hrc
+++ b/formula/inc/core_resource.hrc
@@ -282,6 +282,8 @@ const std::pair<const char *, int> 
RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
     { "COM.MICROSOFT.SORT" , SC_OPCODE_SORT },
     { "COM.MICROSOFT.SORTBY" , SC_OPCODE_SORTBY },
     { "COM.MICROSOFT.UNIQUE" , SC_OPCODE_UNIQUE },
+    { "COM.MICROSOFT.LET" , SC_OPCODE_LET },
+    { "_xlpm." , SC_OPCODE_STRINGNAME },
     { "ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for 
range list (union)
     { "OFFSET" , SC_OPCODE_OFFSET },
     { "INDEX" , SC_OPCODE_INDEX },
@@ -737,6 +739,8 @@ const std::pair<const char *, int> 
RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
     { "_xlfn._xlws.SORT" , SC_OPCODE_SORT },
     { "_xlfn.SORTBY" , SC_OPCODE_SORTBY },
     { "_xlfn.UNIQUE" , SC_OPCODE_UNIQUE },
+    { "_xlfn.LET" , SC_OPCODE_LET },
+    { "_xlpm." , SC_OPCODE_STRINGNAME },
     { "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy 
for range list (union)
     { "OFFSET" , SC_OPCODE_OFFSET },
     { "INDEX" , SC_OPCODE_INDEX },
@@ -1195,6 +1199,7 @@ const std::pair<const char *, int> 
RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
     { "SORT" , SC_OPCODE_SORT },
     { "SORTBY" , SC_OPCODE_SORTBY },
     { "UNIQUE" , SC_OPCODE_UNIQUE },
+    { "LET" , SC_OPCODE_LET },
     { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },    // legacy for range list 
(union)
     { "OFFSET" , SC_OPCODE_OFFSET },
     { "INDEX" , SC_OPCODE_INDEX },
@@ -1654,6 +1659,7 @@ const std::pair<const char *, int> 
RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
     { "SORT" , SC_OPCODE_SORT },
     { "SORTBY" , SC_OPCODE_SORTBY },
     { "UNIQUE" , SC_OPCODE_UNIQUE },
+    { "LET" , SC_OPCODE_LET },
     { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },    // legacy for range list 
(union)
     { "OFFSET" , SC_OPCODE_OFFSET },
     { "INDEX" , SC_OPCODE_INDEX },  // ?? first character = I ??
@@ -2111,6 +2117,7 @@ const std::pair<const char *, int> 
RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
     { "SORT" , SC_OPCODE_SORT },
     { "SORTBY" , SC_OPCODE_SORTBY },
     { "UNIQUE" , SC_OPCODE_UNIQUE },
+    { "LET" , SC_OPCODE_LET },
     { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },
     { "OFFSET" , SC_OPCODE_OFFSET },
     { "INDEX" , SC_OPCODE_INDEX },
@@ -2549,6 +2556,7 @@ const std::pair<TranslateId, int> 
RID_STRLIST_FUNCTION_NAMES[] =
     { NC_("RID_STRLIST_FUNCTION_NAMES", "SORT") , SC_OPCODE_SORT },
     { NC_("RID_STRLIST_FUNCTION_NAMES", "SORTBY") , SC_OPCODE_SORTBY },
     { NC_("RID_STRLIST_FUNCTION_NAMES", "UNIQUE") , SC_OPCODE_UNIQUE },
+    { NC_("RID_STRLIST_FUNCTION_NAMES", "LET") , SC_OPCODE_LET },
     { NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , SC_OPCODE_MULTI_AREA 
}, // legacy for range list (union)
     { NC_("RID_STRLIST_FUNCTION_NAMES", "OFFSET") , SC_OPCODE_OFFSET },
     { NC_("RID_STRLIST_FUNCTION_NAMES", "INDEX") , SC_OPCODE_INDEX }, // ?? 
first character = I ??
diff --git a/formula/source/core/api/FormulaCompiler.cxx 
b/formula/source/core/api/FormulaCompiler.cxx
index 71ca0e8f8bd7..453c73094f54 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -626,6 +626,7 @@ uno::Sequence< sheet::FormulaOpCodeMapEntry > 
FormulaCompiler::OpCodeMap::create
                 SC_OPCODE_IF_ERROR,
                 SC_OPCODE_IF_NA,
                 SC_OPCODE_CHOOSE,
+                SC_OPCODE_LET,
                 SC_OPCODE_AND,
                 SC_OPCODE_OR
             };
@@ -1221,6 +1222,7 @@ bool FormulaCompiler::IsOpCodeJumpCommand( OpCode eOp )
         case ocIfError:
         case ocIfNA:
         case ocChoose:
+        case ocLet:
             return true;
         default:
             ;
@@ -1269,6 +1271,7 @@ bool FormulaCompiler::IsMatrixFunction( OpCode eOpCode )
         case ocSortBy :
         case ocRandArray :
         case ocUnique :
+        case ocLet :
             return true;
         default:
         {
@@ -1565,6 +1568,11 @@ bool FormulaCompiler::GetToken()
             case ocAggregate:
                 glSubTotal = true;
                 break;
+            case ocStringName:
+                if( HandleStringName())
+                    return true;
+                else
+                    return false;
             case ocName:
                 if( HandleRange())
                 {
@@ -1946,6 +1954,9 @@ void FormulaCompiler::Factor()
                 case ocChoose:
                     pFacToken->GetJump()[ 0 ] = FORMULA_MAXJUMPCOUNT + 1;
                     break;
+                case ocLet:
+                    pFacToken->GetJump()[0] = SAL_MAX_UINT8 + 1;
+                    break;
                 case ocIfError:
                 case ocIfNA:
                     pFacToken->GetJump()[ 0 ] = 2;  // if, behind
@@ -1978,6 +1989,9 @@ void FormulaCompiler::Factor()
                 case ocChoose:
                     nJumpMax = FORMULA_MAXJUMPCOUNT;
                     break;
+                case ocLet:
+                    nJumpMax = SAL_MAX_UINT8;
+                    break;
                 case ocIfError:
                 case ocIfNA:
                     nJumpMax = 2;
@@ -1993,7 +2007,7 @@ void FormulaCompiler::Factor()
                     assert(!"FormulaCompiler::Factor: someone forgot to add a 
jump max case");
             }
             short nJumpCount = 0;
-            while ( (nJumpCount < (FORMULA_MAXJUMPCOUNT - 1)) && (eOp == ocSep)
+            while ( (nJumpCount < (SAL_MAX_UINT8 - 1)) && (eOp == ocSep)
                     && (pArr->GetCodeError() == FormulaError::NONE || 
!mbStopOnError))
             {
                 if ( ++nJumpCount <= nJumpMax )
@@ -2022,6 +2036,9 @@ void FormulaCompiler::Factor()
                     case ocChoose:
                         bLimitOk = (nJumpCount < FORMULA_MAXJUMPCOUNT);
                         break;
+                    case ocLet:
+                        bLimitOk = (nJumpCount < SAL_MAX_UINT8);
+                        break;
                     case ocIfError:
                     case ocIfNA:
                         bLimitOk = (nJumpCount <= 2);
@@ -2598,7 +2615,7 @@ const FormulaToken* 
FormulaCompiler::CreateStringFromToken( OUStringBuffer& rBuf
             break;
 
             case svString:
-                if( eOp == ocBad || eOp == ocStringXML )
+                if( eOp == ocBad || eOp == ocStringXML || eOp == ocStringName )
                     rBuffer.append( t->GetString().getString());
                 else
                     AppendString( rBuffer, t->GetString().getString() );
@@ -2920,6 +2937,11 @@ bool FormulaCompiler::HandleExternalReference( const 
FormulaToken& /*_aToken*/)
     return true;
 }
 
+bool FormulaCompiler::HandleStringName()
+{
+    return true;
+}
+
 bool FormulaCompiler::HandleRange()
 {
     return true;
diff --git a/formula/source/core/api/token.cxx 
b/formula/source/core/api/token.cxx
index a7fc6a06868d..d722d767e065 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -435,6 +435,8 @@ bool FormulaTokenArray::AddFormulaToken(
                     AddBad( aStrVal );
                 else if ( eOpCode == ocStringXML )
                     AddStringXML( aStrVal );
+                else if ( eOpCode == ocStringName )
+                    AddStringName( aStrVal );
                 else if ( eOpCode == ocExternal || eOpCode == ocMacro )
                     Add( new formula::FormulaExternalToken( eOpCode, aStrVal ) 
);
                 else if ( eOpCode == ocWhitespace )
@@ -914,6 +916,10 @@ FormulaToken* FormulaTokenArray::AddStringXML( const 
OUString& rStr )
     return Add( new FormulaStringOpToken( ocStringXML, svl::SharedString( rStr 
) ) );   // string not interned
 }
 
+FormulaToken* FormulaTokenArray::AddStringName( const OUString& rStr )
+{
+    return Add( new FormulaStringOpToken( ocStringName, svl::SharedString( 
rStr ) ) );   // string not interned
+}
 
 void FormulaTokenArray::AddRecalcMode( ScRecalcMode nBits )
 {
@@ -1576,12 +1582,15 @@ FormulaToken* FormulaTokenArray::AddOpCode( OpCode eOp )
         case ocIfError:
         case ocIfNA:
         case ocChoose:
+        case ocLet:
             {
-                short nJump[FORMULA_MAXJUMPCOUNT + 1];
+                short nJump[SAL_MAX_UINT8 + 1];
                 if ( eOp == ocIf )
                     nJump[ 0 ] = 3;
                 else if ( eOp == ocChoose )
                     nJump[ 0 ] = FORMULA_MAXJUMPCOUNT + 1;
+                else if ( eOp == ocLet )
+                    nJump[0] = SAL_MAX_UINT8 + 1;
                 else
                     nJump[ 0 ] = 2;
                 pRet = new FormulaJumpToken( eOp, nJump );
@@ -1660,6 +1669,20 @@ FormulaToken* 
FormulaTokenArrayPlainIterator::GetNextName()
     return nullptr;
 }
 
+FormulaToken* FormulaTokenArrayPlainIterator::GetNextStringName()
+{
+    if (mpFTA->GetArray())
+    {
+        while (mnIndex < mpFTA->GetLen())
+        {
+            FormulaToken* t = mpFTA->GetArray()[mnIndex++];
+            if (t->GetType() == svString && t->GetOpCode() == ocStringName)
+                return t;
+        }
+    }
+    return nullptr;
+}
+
 const FormulaToken* FormulaTokenIterator::Next()
 {
     const FormulaToken* t = GetNonEndOfPathToken( ++maStack.back().nPC );
diff --git a/formula/source/ui/dlg/parawin.cxx 
b/formula/source/ui/dlg/parawin.cxx
index 979125866bb9..3c6d333a10f0 100644
--- a/formula/source/ui/dlg/parawin.cxx
+++ b/formula/source/ui/dlg/parawin.cxx
@@ -27,6 +27,7 @@
 #include <strings.hrc>
 #include <bitmaps.hlst>
 #include <core_resource.hxx>
+#include <rtl/math.hxx>
 
 namespace formula
 {
@@ -150,7 +151,10 @@ void ParaWin::UpdateArgDesc( sal_uInt16 nArg )
         aArgName  = pFuncDesc->getParameterName(nRealArg);
         sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
         if ( nArg >= nVarArgsStart )
-            aArgName += OUString::number( (nArg-nVarArgsStart)/2 + 1 );
+        {
+            sal_Int16 nShifted = 
pFuncDesc->getFunctionName().equalsIgnoreAsciiCase(u"LET") ? nPos / 2 : 0;
+            aArgName += OUString::number( (nArg-nVarArgsStart)/2 + 1 + 
nShifted );
+        }
         aArgName += " " + ((nArg > (nFix+1) || 
pFuncDesc->isParameterOptional(nRealArg)) ? m_sOptional : m_sRequired) ;
     }
 
@@ -209,8 +213,9 @@ void ParaWin::UpdateArgInput( sal_uInt16 nOffset, 
sal_uInt16 i )
         sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
         if ( nArg >= nVarArgsStart )
         {
+            sal_Int16 nShifted = 
pFuncDesc->getFunctionName().equalsIgnoreAsciiCase(u"LET") ? nPos / 2 : 0;
             OUString aArgName = pFuncDesc->getParameterName(nRealArg) +
-                OUString::number( (nArg-nVarArgsStart)/2 + 1 );
+                OUString::number( (nArg-nVarArgsStart)/2 + 1 + nShifted);
             SetArgName( i, aArgName );
         }
         else
diff --git a/include/formula/FormulaCompiler.hxx 
b/include/formula/FormulaCompiler.hxx
index 08710f561b5a..d70dcb4c09d8 100644
--- a/include/formula/FormulaCompiler.hxx
+++ b/include/formula/FormulaCompiler.hxx
@@ -344,6 +344,7 @@ protected:
     virtual void SetError(FormulaError nError);
     virtual FormulaTokenRef ExtendRangeReference( FormulaToken & rTok1, 
FormulaToken & rTok2 );
     virtual bool HandleExternalReference(const FormulaToken& _aToken);
+    virtual bool HandleStringName();
     virtual bool HandleRange();
     virtual bool HandleColRowName();
     virtual bool HandleDbData();
@@ -419,6 +420,12 @@ protected:
     bool mbComputeII;  // whether to attempt computing implicit intersection 
ranges while building the RPN array.
     bool mbMatrixFlag; // whether the formula is a matrix formula (needed for 
II computation)
 
+    struct LambdaFunc
+    {
+        bool bInLambdaFunction = false;
+        short nBracketPos = 0;
+    } mLambda;
+
 public:
     enum InitSymbols
     {
diff --git a/include/formula/compiler.hxx b/include/formula/compiler.hxx
index 181576000c4d..c9e2e5375b01 100644
--- a/include/formula/compiler.hxx
+++ b/include/formula/compiler.hxx
@@ -61,6 +61,8 @@
 #define SC_OPCODE_TABLE_REF_ITEM_THIS_ROW 35
 #define SC_OPCODE_STOP_DIV           36
 #define SC_OPCODE_SKIP               37     /* used to skip raw tokens during 
string compilation */
+#define SC_OPCODE_STRINGNAME         38     /* special OpCode for lambda 
function names */
+#define SC_OPCODE_LET                39
 
 /*** error constants #... ***/
 #define SC_OPCODE_START_ERRORS       40
diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx
index 89f6f95f57dd..8681e95639eb 100644
--- a/include/formula/opcode.hxx
+++ b/include/formula/opcode.hxx
@@ -38,6 +38,7 @@ enum OpCode : sal_uInt16
         ocIfError           = SC_OPCODE_IF_ERROR,
         ocIfNA              = SC_OPCODE_IF_NA,
         ocChoose            = SC_OPCODE_CHOOSE,
+        ocLet               = SC_OPCODE_LET,
     // Parentheses and separators
         ocOpen              = SC_OPCODE_OPEN,
         ocClose             = SC_OPCODE_CLOSE,
@@ -61,6 +62,7 @@ enum OpCode : sal_uInt16
         ocTableRefItemTotals  = SC_OPCODE_TABLE_REF_ITEM_TOTALS,
         ocTableRefItemThisRow = SC_OPCODE_TABLE_REF_ITEM_THIS_ROW,
         ocSkip              = SC_OPCODE_SKIP,
+        ocStringName        = SC_OPCODE_STRINGNAME,
     // Access commands
         ocDBArea            = SC_OPCODE_DB_AREA,
         ocTableRef          = SC_OPCODE_TABLE_REF,
@@ -553,6 +555,7 @@ inline std::string OpCodeEnumToString(OpCode eCode)
     case ocMissing: return "Missing";
     case ocBad: return "Bad";
     case ocStringXML: return "StringXML";
+    case ocStringName: return "StringName";
     case ocSpaces: return "Spaces";
     case ocWhitespace: return "Whitespace";
     case ocMatRef: return "MatRef";
@@ -996,6 +999,7 @@ inline std::string OpCodeEnumToString(OpCode eCode)
     case ocSort: return "Sort";
     case ocSortBy: return "SortBy";
     case ocUnique: return "Unique";
+    case ocLet: return "Let";
     case ocTTT: return "TTT";
     case ocDebugVar: return "DebugVar";
     case ocDataToken1: return "DataToken1";
diff --git a/include/formula/tokenarray.hxx b/include/formula/tokenarray.hxx
index fbf2c186768a..4e59ca8e4f02 100644
--- a/include/formula/tokenarray.hxx
+++ b/include/formula/tokenarray.hxx
@@ -487,6 +487,7 @@ public:
     FormulaToken* AddExternal( const OUString& rStr, OpCode eOp = ocExternal );
     FormulaToken* AddBad( const OUString& rStr );          /// ocBad with 
OUString
     FormulaToken* AddStringXML( const OUString& rStr );    /// ocStringXML 
with OUString, temporary during import
+    FormulaToken* AddStringName( const OUString& rStr );   /// ocStringName 
with OUString - Lambda functions
 
     virtual FormulaToken* MergeArray( );
 
@@ -578,6 +579,7 @@ public:
 
 private:
     SAL_DLLPRIVATE const FormulaToken* GetNonEndOfPathToken( short nIdx ) 
const;
+    SAL_DLLPRIVATE const FormulaToken* GetNonEndOfPathToken2( short nIdx ) 
const;
 };
 
 // For use in SAL_INFO, SAL_WARN etc
@@ -639,6 +641,7 @@ public:
     FormulaToken* Next();
     FormulaToken* NextNoSpaces();
     FormulaToken* GetNextName();
+    FormulaToken* GetNextStringName();
     FormulaToken* GetNextReference();
     FormulaToken* GetNextReferenceRPN();
     FormulaToken* GetNextReferenceOrName();
diff --git a/sc/README.md b/sc/README.md
index a66cb5491ff9..84457499162f 100644
--- a/sc/README.md
+++ b/sc/README.md
@@ -70,6 +70,8 @@ 
https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocume
 * Information Functions
   * COUNTIF
   * COUNTIFS
+* Lambda Functions
+  * LET
 * Lookup Functions
   * HLOOKUP
   * LOOKUP
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index af379104bca7..e95e5ee78e31 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -155,6 +155,7 @@ public:
     // since the reference count is cleared!
     void SetOpCode( OpCode eCode );
     void SetString( rtl_uString* pData, rtl_uString* pDataIgnoreCase );
+    void SetStringName( rtl_uString* pData, rtl_uString* pDataIgnoreCase );
     void SetSingleReference( const ScSingleRefData& rRef );
     void SetDoubleReference( const ScComplexRefData& rRef );
     void SetDouble( double fVal );
@@ -358,6 +359,7 @@ private:
     bool ParsePredetectedErrRefReference( const OUString& rName, const 
OUString* pErrRef );
     bool ParseMacro( const OUString& );
     bool ParseNamedRange( const OUString&, bool onlyCheck = false );
+    bool ParseLambdaFuncName( const OUString&, bool bLambdaFunction = false );
     bool ParseExternalNamedRange( const OUString& rSymbol, bool& 
rbInvalidExternalNameRange );
     bool ParseDBRange( const OUString& );
     bool ParseColRowName( const OUString& );
@@ -516,6 +518,7 @@ private:
     virtual void fillAddInToken(::std::vector< 
css::sheet::FormulaOpCodeMapEntry >& _rVec,bool _bIsEnglish) const override;
 
     virtual bool HandleExternalReference(const formula::FormulaToken& _aToken) 
override;
+    virtual bool HandleStringName() override;
     virtual bool HandleRange() override;
     virtual bool HandleColRowName() override;
     virtual bool HandleDbData() override;
diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index e02235b8ac8b..7e0289108c8d 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -601,5 +601,6 @@ inline constexpr OUString HID_FUNC_FILTER_MS = 
u"SC_HID_FUNC_FILTER_MS"_ustr;
 inline constexpr OUString HID_FUNC_SORT_MS = u"SC_HID_FUNC_SORT_MS"_ustr;
 inline constexpr OUString HID_FUNC_SORTBY_MS = u"SC_HID_FUNC_SORTBY_MS"_ustr;
 inline constexpr OUString HID_FUNC_UNIQUE_MS = u"SC_HID_FUNC_UNIQUE_MS"_ustr;
+inline constexpr OUString HID_FUNC_LET_MS = u"SC_HID_FUNC_LET_MS"_ustr;
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/scfuncs.hrc b/sc/inc/scfuncs.hrc
index 7a129a046a11..9ce5e234c288 100644
--- a/sc/inc/scfuncs.hrc
+++ b/sc/inc/scfuncs.hrc
@@ -4263,4 +4263,16 @@ const TranslateId SC_OPCODE_UNIQUE_ARY[] =
     NC_("SC_OPCODE_UNIQUE", "Logical value that defines what values are 
considered unique: TRUE - returns values that occur only once. FALSE or omitted 
(default) - returns all distinct (different) values in the range or array.")
 };
 
+// -=*# Resource for function LET #*=-
+const TranslateId SC_OPCODE_LET_ARY[] =
+{
+    NC_("SC_OPCODE_LET", "The LET function assigns names to calculation 
results. This allows storing intermediate calculations, values, or defining 
names inside a formula. These names only apply within the scope of the LET 
function."),
+    NC_("SC_OPCODE_LET", "Name 1"),
+    NC_("SC_OPCODE_LET", "The first name to assign. Must start with a letter. 
Cannot be the output of a formula or conflict with range syntax."),
+    NC_("SC_OPCODE_LET", "Name value "),
+    NC_("SC_OPCODE_LET", "Name value 1, Name value 2,... The value or 
calculation to assign to Name."),
+    NC_("SC_OPCODE_LET", "Calculation or Name "),
+    NC_("SC_OPCODE_LET", "A calculation that uses all names within the LET 
function. This must be the last argument in the LET function. Or a second Name 
to assign to a second Name value. If a second Name is specified, Name value 2 
and Calculation or Name 3 become required.")
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/extras/scfunctionlistobj.cxx 
b/sc/qa/extras/scfunctionlistobj.cxx
index 87060183685d..431e63bd7ef2 100644
--- a/sc/qa/extras/scfunctionlistobj.cxx
+++ b/sc/qa/extras/scfunctionlistobj.cxx
@@ -77,7 +77,7 @@ public:
 ScFunctionListObj::ScFunctionListObj()
     : UnoApiTest(u"/sc/qa/extras/testdocuments"_ustr)
     , XElementAccess(cppu::UnoType<uno::Sequence<beans::PropertyValue>>::get())
-    , XIndexAccess(403)
+    , XIndexAccess(404)
     , XNameAccess("IF")
     , XServiceInfo("stardiv.StarCalc.ScFunctionListObj", 
"com.sun.star.sheet.FunctionDescriptions")
 {
diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/let.fods 
b/sc/qa/unit/data/functions/spreadsheet/fods/let.fods
new file mode 100644
index 000000000000..97ad8c2dbcdb
--- /dev/null
+++ b/sc/qa/unit/data/functions/spreadsheet/fods/let.fods
@@ -0,0 +1,4308 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
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: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/200
 4/writer" xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
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:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
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:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" 
office:version="1.3" 
office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
+ 
<office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT7H19M5S</meta:editing-duration><meta:editing-cycles>109</meta:editing-cycles><meta:generator>LibreOfficeDev/24.8.0.0.alpha1$Windows_X86_64
 
LibreOffice_project/9daa119fe104c852a42f00e9c8349687ccd104d2</meta:generator><dc:date>2024-06-02T09:11:26.793000000</dc:date><meta:document-statistic
 meta:table-count="2" meta:cell-count="232" 
meta:object-count="0"/></office:meta>
+ <office:settings>
+  <config:config-item-set config:name="ooo:view-settings">
+   <config:config-item config:name="VisibleAreaTop" 
config:type="int">0</config:config-item>
+   <config:config-item config:name="VisibleAreaLeft" 
config:type="int">0</config:config-item>
+   <config:config-item config:name="VisibleAreaWidth" 
config:type="int">50916</config:config-item>
+   <config:config-item config:name="VisibleAreaHeight" 
config:type="int">21544</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">view1</config:config-item>
+     <config:config-item-map-named config:name="Tables">
+      <config:config-item-map-entry config:name="Sheet1">
+       <config:config-item config:name="CursorPositionX" 
config:type="int">2</config:config-item>
+       <config:config-item config:name="CursorPositionY" 
config:type="int">3</config:config-item>
+       <config:config-item config:name="ActiveSplitRange" 
config:type="short">2</config:config-item>
+       <config:config-item config:name="PositionLeft" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionRight" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionTop" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionBottom" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
+       <config:config-item config:name="ZoomValue" 
config:type="int">75</config:config-item>
+       <config:config-item config:name="PageViewZoomValue" 
config:type="int">60</config:config-item>
+       <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
+       <config:config-item config:name="AnchoredTextOverflowLegacy" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="LegacySingleLineFontwork" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="ConnectorUseSnapRect" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="IgnoreBreakAfterMultilineField" 
config:type="boolean">false</config:config-item>
+      </config:config-item-map-entry>
+      <config:config-item-map-entry config:name="Sheet2">
+       <config:config-item config:name="CursorPositionX" 
config:type="int">9</config:config-item>
+       <config:config-item config:name="CursorPositionY" 
config:type="int">38</config:config-item>
+       <config:config-item config:name="ActiveSplitRange" 
config:type="short">2</config:config-item>
+       <config:config-item config:name="PositionLeft" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionRight" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionTop" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="PositionBottom" 
config:type="int">0</config:config-item>
+       <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
+       <config:config-item config:name="ZoomValue" 
config:type="int">75</config:config-item>
+       <config:config-item config:name="PageViewZoomValue" 
config:type="int">60</config:config-item>
+       <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
+       <config:config-item config:name="AnchoredTextOverflowLegacy" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="LegacySingleLineFontwork" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="ConnectorUseSnapRect" 
config:type="boolean">false</config:config-item>
+       <config:config-item config:name="IgnoreBreakAfterMultilineField" 
config:type="boolean">false</config:config-item>
+      </config:config-item-map-entry>
+     </config:config-item-map-named>
+     <config:config-item config:name="ActiveTable" 
config:type="string">Sheet1</config:config-item>
+     <config:config-item config:name="HorizontalScrollbarWidth" 
config:type="int">1851</config:config-item>
+     <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
+     <config:config-item config:name="ZoomValue" 
config:type="int">75</config:config-item>
+     <config:config-item config:name="PageViewZoomValue" 
config:type="int">60</config:config-item>
+     <config:config-item config:name="ShowPageBreakPreview" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="ShowZeroValues" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="ShowNotes" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="ShowNoteAuthor" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="ShowFormulasMarks" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="GridColor" 
config:type="int">12632256</config:config-item>
+     <config:config-item config:name="FormulaBarHeight" 
config:type="short">1</config:config-item>
+     <config:config-item config:name="HasColumnRowHeaders" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="HasSheetTabs" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="IsOutlineSymbolsSet" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="IsValueHighlightingEnabled" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="IsSnapToRaster" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="RasterIsVisible" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="RasterResolutionX" 
config:type="int">1270</config:config-item>
+     <config:config-item config:name="RasterResolutionY" 
config:type="int">1270</config:config-item>
+     <config:config-item config:name="RasterSubdivisionX" 
config:type="int">1</config:config-item>
+     <config:config-item config:name="RasterSubdivisionY" 
config:type="int">1</config:config-item>
+     <config:config-item config:name="IsRasterAxisSynchronized" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="AnchoredTextOverflowLegacy" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="LegacySingleLineFontwork" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="ConnectorUseSnapRect" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="IgnoreBreakAfterMultilineField" 
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="AllowPrintJobCancel" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ApplyUserData" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AutoCalculate" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="CharacterCompressionType" 
config:type="short">0</config:config-item>
+   <config:config-item config:name="EmbedAsianScriptFonts" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="EmbedComplexScriptFonts" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="EmbedFonts" 
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="EmbedOnlyUsedFonts" 
config:type="boolean">false</config:config-item>
+   <config:config-item-map-indexed config:name="ForbiddenCharacters">
+    <config:config-item-map-entry>
+     <config:config-item config:name="Language" 
config:type="string">en</config:config-item>
+     <config:config-item config:name="Country" 
config:type="string">US</config:config-item>
+     <config:config-item config:name="Variant" config:type="string"/>
+     <config:config-item config:name="BeginLine" config:type="string"/>
+     <config:config-item config:name="EndLine" config:type="string"/>
+    </config:config-item-map-entry>
+   </config:config-item-map-indexed>
+   <config:config-item config:name="GridColor" 
config:type="int">12632256</config:config-item>
+   <config:config-item config:name="HasColumnRowHeaders" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="HasSheetTabs" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ImagePreferredDPI" 
config:type="int">0</config:config-item>
+   <config:config-item config:name="IsDocumentShared" 
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="IsOutlineSymbolsSet" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="IsRasterAxisSynchronized" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="IsSnapToRaster" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="LinkUpdateMode" 
config:type="short">3</config:config-item>
+   <config:config-item config:name="LoadReadonly" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterName" 
config:type="string">Microsoft Print to PDF</config:config-item>
+   <config:config-item config:name="PrinterPaperFromSetup" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterSetup" 
config:type="base64Binary">ZBb+/01pY3Jvc29mdCBQcmludCB0byBQREYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATWljcm9zb2Z0IFByaW50IFRvIFBERgAAAAAAAAAAAAAWAAEANhUAAAAAAAAEAAhSAAAEdAAAM1ROVwAAAAAKAE0AaQBjAHIAbwBzAG8AZgB0ACAAUAByAGkAbgB0ACAAdABvACAAUABEAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAMG3ABQFAMvAQABAAkAmgs0CGQAAQAPAFgCAgABAFgCAwABAEEANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAABAAAA/////0dJUzQAAAAAAAAAAAAAAABESU5VIgDIACQDLBE/XXt+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAFNNVEoAAAAAEAC4AHsAMAA4ADQARgAwADEARgBBAC0ARQA2ADMANAAtADQARAA3ADcALQA4ADMARQBFAC0AMAA3ADQAOAAxADcAQwAwADMANQA4ADEAfQAAAFJFU0RMTABVbmlyZXNETEwAUGFwZXJTaXplAEE0AE9yaWVudGF0aW9uAFBPUlRSQUlUAFJlc29sdXRpb24AUmVzT3B0aW9uMQBDb2xvck1vZGUAQ29sb3IAAAAAAAAAAAAAAAAAAAAAAAAsEQAAVjRETQEAAAAAAAAAnApwIhwAAADsAAAAAwAAAPoBTwg05ndNg+4HSBfANYHQAAAATAAAAAMAAAAACAAAAAAAAAAAAAADAAAAAAgAACoAAAAACAAAAwAAAEAAAABWAAAAABAAAEQAbwBjAHUAbQBlAG4AdABVAHMAZQByAFAAYQBzAHMAdwBvAHIAZAAAAEQAbwBjAHUAbQBlAG4AdABPAHcAbgBlAHIAUABhAHMAcwB3AG8AcgBkAAAARABvAGMAdQBtAGUAbgB0AEMAcgB5AHAAdABTA
 
GUAYwB1AHIAaQB0AHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgBDT01QQVRfRFVQTEVYX01PREUTAER1cGxleE1vZGU6OlVua25vd24MAFBSSU5URVJfTkFNRRYATWljcm9zb2Z0IFByaW50IHRvIFBERgsARFJJVkVSX05BTUUWAE1pY3Jvc29mdCBQcmludCBUbyBQREY=</config:config-item>
+   <config:config-item config:name="RasterIsVisible" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="RasterResolutionX" 
config:type="int">1270</config:config-item>
+   <config:config-item config:name="RasterResolutionY" 
config:type="int">1270</config:config-item>
+   <config:config-item config:name="RasterSubdivisionX" 
config:type="int">1</config:config-item>
+   <config:config-item config:name="RasterSubdivisionY" 
config:type="int">1</config:config-item>
+   <config:config-item config:name="SaveThumbnail" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="SaveVersionOnClose" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ShowFormulasMarks" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ShowNoteAuthor" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ShowNotes" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ShowPageBreaks" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ShowZeroValues" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="SyntaxStringRef" 
config:type="short">7</config:config-item>
+   <config:config-item config:name="UpdateFromTemplate" 
config:type="boolean">true</config:config-item>
+   <config:config-item-map-named config:name="ScriptConfiguration">
+    <config:config-item-map-entry config:name="Sheet1">
+     <config:config-item config:name="CodeName" 
config:type="string">Sheet1</config:config-item>
+    </config:config-item-map-entry>
+    <config:config-item-map-entry config:name="Sheet2">
+     <config:config-item config:name="CodeName" 
config:type="string">Sheet2</config:config-item>
+    </config:config-item-map-entry>
+   </config:config-item-map-named>
+  </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";>
+    <ooo:library-embedded ooo:name="Standard"/>
+   </ooo:libraries>
+  </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+  <style:font-face style:name="Calibri" svg:font-family="Calibri" 
style:font-family-generic="swiss"/>
+  <style:font-face style:name="FreeSans" svg:font-family="FreeSans" 
style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Sans" 
svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" 
style:font-pitch="variable"/>
+  <style:font-face style:name="Lucida Sans" svg:font-family="&apos;Lucida 
Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="Microsoft YaHei" 
svg:font-family="&apos;Microsoft YaHei&apos;" 
style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="WenQuanYi Micro Hei" 
svg:font-family="&apos;WenQuanYi Micro Hei&apos;" 
style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+  <style:default-style style:family="table-cell">
+   <style:paragraph-properties style:tab-stop-distance="1.27cm"/>
+   <style:text-properties style:font-name="Liberation Sans" 
fo:font-size="10pt" fo:language="en" fo:country="US" 
style:font-name-asian="WenQuanYi Micro Hei" style:font-size-asian="10pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="FreeSans" style:font-size-complex="10pt" 
style:language-complex="hi" style:country-complex="IN"/>
+  </style:default-style>
+  <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" style:writing-mode="page"/>
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:punctuation-wrap="simple" style:line-break="strict" 
loext:tab-stop-distance="0cm" style:writing-mode="page" 
style:font-independent-line-spacing="false">
+    <style:tab-stops/>
+   </style:paragraph-properties>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" fo:font-family="&apos;Liberation Serif&apos;" 
style:font-family-generic="roman" style:font-pitch="variable" 
fo:font-size="12pt" fo:language="en" fo:country="US" 
style:letter-kerning="true" style:font-family-asian="&apos;Segoe UI&apos;" 
style:font-family-generic-asian="system" style:font-pitch-asian="variable" 
style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" 
style:font-family-complex="Tahoma" style:font-family-generic-complex="system" 
style:font-pitch-complex="variable" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
+  </style:default-style>
+  <style:style style:name="Default" style:family="graphic"/>
+  <style:style style:name="Note" style:family="graphic" 
style:parent-style-name="Default">
+   <style:graphic-properties draw:stroke="solid" 
draw:marker-start="Arrowheads_20_1" draw:marker-start-width="0.2cm" 
draw:marker-start-center="false" draw:fill="solid" draw:fill-color="#ffffc0" 
draw:auto-grow-height="true" draw:auto-grow-width="false" 
fo:padding-top="0.1cm" fo:padding-bottom="0.1cm" fo:padding-left="0.1cm" 
fo:padding-right="0.1cm" draw:shadow="visible" draw:shadow-offset-x="0.1cm" 
draw:shadow-offset-y="0.1cm"/>
+   <style:text-properties style:font-name="Liberation Sans" 
fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" 
style:font-pitch="variable" fo:font-size="10pt" 
style:font-name-asian="WenQuanYi Micro Hei" 
style:font-family-asian="&apos;WenQuanYi Micro Hei&apos;" 
style:font-family-generic-asian="system" style:font-pitch-asian="variable" 
style:font-size-asian="10pt" style:font-name-complex="FreeSans" 
style:font-family-complex="FreeSans" style:font-family-generic-complex="system" 
style:font-pitch-complex="variable" style:font-size-complex="10pt"/>
+  </style:style>
+  <number:number-style style:name="N0">
+   <number:number number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:currency-style style:name="N149P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N149">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N149P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N151P0" style:volatile="true">
+   <number:text>\</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:number-style>
+  <number:number-style style:name="N151">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>\-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N151P0"/>
+  </number:number-style>
+  <number:percentage-style style:name="N152">
+   <number:number number:decimal-places="1" number:min-decimal-places="1" 
number:min-integer-digits="1"/>
+   <number:text>%</number:text>
+  </number:percentage-style>
+  <number:number-style style:name="N156P0" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N156P1" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N156P2" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>- </number:text>
+  </number:number-style>
+  <number:text-style style:name="N156">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N156P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N156P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N156P2"/>
+  </number:text-style>
+  <number:currency-style style:name="N158P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N158">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N158P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N159">
+   <number:number number:decimal-places="3" number:min-decimal-places="3" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N163P0" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N163P1" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>(</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N163P2" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N163">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N163P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N163P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N163P2"/>
+  </number:text-style>
+  <number:date-style style:name="N164">
+   <number:day number:style="long"/>
+   <number:text>.</number:text>
+   <number:month number:style="long"/>
+   <number:text>.</number:text>
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:number-style style:name="N165">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N166P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N166">
+   <number:text>(</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N166P0"/>
+  </number:number-style>
+  <number:currency-style style:name="N168P0" style:volatile="true">
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N168">
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> -</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N168P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N170P0" style:volatile="true">
+   <number:text>$</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N170">
+   <number:text>($</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N170P0"/>
+  </number:number-style>
+  <number:number-style style:name="N171">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N174P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N174P1" style:volatile="true">
+   <number:text> (</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N174P2" style:volatile="true">
+   <number:text> - </number:text>
+  </number:number-style>
+  <number:text-style style:name="N174">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N174P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N174P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N174P2"/>
+  </number:text-style>
+  <number:date-style style:name="N175">
+   <number:text>⌀ </number:text>
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:number-style style:name="N179P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> € </number:text>
+  </number:number-style>
+  <number:number-style style:name="N179P1" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> € </number:text>
+  </number:number-style>
+  <number:number-style style:name="N179P2" style:volatile="true">
+   <number:text> - € </number:text>
+  </number:number-style>
+  <number:text-style style:name="N179">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N179P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N179P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N179P2"/>
+  </number:text-style>
+  <number:number-style style:name="N180">
+   <number:number number:decimal-places="17" number:min-decimal-places="17" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N181">
+   <number:scientific-number number:decimal-places="14" 
number:min-decimal-places="14" number:min-integer-digits="1" 
number:min-exponent-digits="3" number:exponent-interval="1" 
number:forced-exponent-sign="true"/>
+  </number:number-style>
+  <number:currency-style style:name="N182P0" style:volatile="true">
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N182">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>-</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N182P0"/>
+  </number:currency-style>
+  <number:date-style style:name="N183">
+   <number:month number:style="long"/>
+   <number:text>-</number:text>
+   <number:day number:style="long"/>
+   <number:text>-</number:text>
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:currency-style style:name="N185P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N185">
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N185P0"/>
+  </number:currency-style>
+  <number:date-style style:name="N186">
+   <number:day number:style="long"/>
+   <number:text>-</number:text>
+   <number:month number:style="long"/>
+  </number:date-style>
+  <number:number-style style:name="N187">
+   <number:number number:decimal-places="9" number:min-decimal-places="9" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N188">
+   <number:number number:decimal-places="15" number:min-decimal-places="15" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N192P0" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N192P1" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N192P2" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N192">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N192P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N192P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N192P2"/>
+  </number:text-style>
+  <number:currency-style style:name="N194P0" style:volatile="true">
+   <number:currency-symbol>€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:currency-style>
+  <number:currency-style style:name="N194">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>(</number:text>
+   <number:currency-symbol>€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N194P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N195">
+   <number:number number:decimal-places="1" number:min-decimal-places="1" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N196">
+   <number:number number:decimal-places="5" number:min-decimal-places="5" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N197">
+   <number:text>$</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:number-style>
+  <number:number-style style:name="N198P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N198">
+   <number:text>(</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N198P0"/>
+  </number:number-style>
+  <number:currency-style style:name="N200P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N200">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N200P0"/>
+  </number:currency-style>
+  <number:currency-style style:name="N202P0" style:volatile="true">
+   <number:currency-symbol number:language="es" 
number:country="MX">$</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N202">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="es" 
number:country="MX">$</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N202P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N206P0" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N206P1" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N206P2" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>- </number:text>
+  </number:number-style>
+  <number:text-style style:name="N206">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N206P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N206P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N206P2"/>
+  </number:text-style>
+  <number:currency-style style:name="N208P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="0" 
number:decimal-replacement="--" number:min-integer-digits="1" 
number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N208">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="0" 
number:decimal-replacement="--" number:min-integer-digits="1" 
number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N208P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N210P0" style:volatile="true">
+   <number:text>Yes</number:text>
+  </number:number-style>
+  <number:number-style style:name="N210P1" style:volatile="true">
+   <number:text>Yes</number:text>
+  </number:number-style>
+  <number:number-style style:name="N210">
+   <number:text>No</number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N210P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N210P1"/>
+  </number:number-style>
+  <number:number-style style:name="N211">
+   <number:number number:decimal-places="12" number:min-decimal-places="12" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N212">
+   <number:number number:decimal-places="6" number:min-decimal-places="6" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:currency-style style:name="N214P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol>EUR</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N214">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol>EUR</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N214P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N216P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+  </number:number-style>
+  <number:number-style style:name="N216">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N216P0"/>
+  </number:number-style>
+  <number:number-style style:name="N218P0" style:volatile="true">
+   <number:text>\</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:number-style>
+  <number:number-style style:name="N218">
+   <number:text>\-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N218P0"/>
+  </number:number-style>
+  <number:number-style style:name="N222P0" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N222P1" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N222P2" style:volatile="true">
+   <number:text> \</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N222">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N222P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N222P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N222P2"/>
+  </number:text-style>
+  <number:number-style style:name="N223">
+   <number:number number:decimal-places="18" number:min-decimal-places="18" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N224">
+   <number:number number:decimal-places="4" number:min-decimal-places="4" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N225">
+   <number:scientific-number number:decimal-places="1" 
number:min-decimal-places="1" number:min-integer-digits="3" 
number:min-exponent-digits="1" number:exponent-interval="3" 
number:forced-exponent-sign="true"/>
+  </number:number-style>
+  <number:number-style style:name="N227P0" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N227P1" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>(</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N227P2" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>- </number:text>
+  </number:number-style>
+  <number:text-style style:name="N227">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N227P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N227P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N227P2"/>
+  </number:text-style>
+  <number:currency-style style:name="N228P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N228">
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N228P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N229">
+   <number:scientific-number number:decimal-places="1" 
number:min-decimal-places="1" number:min-integer-digits="1" 
number:min-exponent-digits="1" number:exponent-interval="1" 
number:forced-exponent-sign="true"/>
+  </number:number-style>
+  <number:number-style style:name="N230">
+   <number:scientific-number number:decimal-places="1" 
number:min-decimal-places="1" number:min-integer-digits="1" 
number:min-exponent-digits="1" number:exponent-interval="3" 
number:forced-exponent-sign="true"/>
+  </number:number-style>
+  <number:currency-style style:name="N232P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol>EUR</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N232">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol>EUR</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N232P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N233P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+  </number:number-style>
+  <number:number-style style:name="N233">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N233P0"/>
+  </number:number-style>
+  <number:date-style style:name="N234">
+   <number:month number:style="long"/>
+   <number:text>-</number:text>
+   <number:day/>
+   <number:text>-</number:text>
+   <number:year/>
+  </number:date-style>
+  <number:number-style style:name="N238P0" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N238P1" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>(</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N238P2" style:volatile="true">
+   <number:text> $</number:text>
+   <number:fill-character> </number:fill-character>
+   <number:text>- </number:text>
+  </number:number-style>
+  <number:text-style style:name="N238">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N238P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N238P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N238P2"/>
+  </number:text-style>
+  <number:number-style style:name="N242P0" style:volatile="true">
+   <number:text> $</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N242P1" style:volatile="true">
+   <number:text> $(</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N242P2" style:volatile="true">
+   <number:text> $- </number:text>
+  </number:number-style>
+  <number:text-style style:name="N242">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N242P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N242P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N242P2"/>
+  </number:text-style>
+  <number:date-style style:name="N243">
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:number-style style:name="N244">
+   <number:number number:decimal-places="20" number:min-decimal-places="20" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:currency-style style:name="N246P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N246">
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N246P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N248P0" style:volatile="true">
+   <number:text>On</number:text>
+  </number:number-style>
+  <number:number-style style:name="N248P1" style:volatile="true">
+   <number:text>On</number:text>
+  </number:number-style>
+  <number:number-style style:name="N248">
+   <number:text>Off</number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N248P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N248P1"/>
+  </number:number-style>
+  <number:number-style style:name="N250P0" style:volatile="true">
+   <number:text>$</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N250">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>($</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N250P0"/>
+  </number:number-style>
+  <number:number-style style:name="N252P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+  </number:number-style>
+  <number:number-style style:name="N252">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> €</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N252P0"/>
+  </number:number-style>
+  <number:number-style style:name="N253">
+   <number:number number:decimal-places="14" number:min-decimal-places="14" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N254P0" style:volatile="true">
+   <number:text>$</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N254">
+   <number:text>($</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N254P0"/>
+  </number:number-style>
+  <number:number-style style:name="N255P0" style:volatile="true">
+   <number:text>$</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N255">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>($</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N255P0"/>
+  </number:number-style>
+  <number:number-style style:name="N256">
+   <number:number number:decimal-places="8" number:min-decimal-places="8" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N258P0" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N258P1" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>(</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N258P2" style:volatile="true">
+   <number:fill-character> </number:fill-character>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N258">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N258P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N258P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N258P2"/>
+  </number:text-style>
+  <number:currency-style style:name="N259P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N259">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="cs" 
number:country="CZ">Kč</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N259P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N260">
+   <number:number number:decimal-places="11" number:min-decimal-places="11" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N262P0" style:volatile="true">
+   <number:text>True</number:text>
+  </number:number-style>
+  <number:number-style style:name="N262P1" style:volatile="true">
+   <number:text>True</number:text>
+  </number:number-style>
+  <number:number-style style:name="N262">
+   <number:text>False</number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N262P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N262P1"/>
+  </number:number-style>
+  <number:number-style style:name="N266P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> € </number:text>
+  </number:number-style>
+  <number:number-style style:name="N266P1" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> € </number:text>
+  </number:number-style>
+  <number:number-style style:name="N266P2" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> € </number:text>
+  </number:number-style>
+  <number:text-style style:name="N266">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N266P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N266P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N266P2"/>
+  </number:text-style>
+  <number:number-style style:name="N267">
+   <number:number number:decimal-places="7" number:min-decimal-places="7" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N271P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>    </number:text>
+  </number:number-style>
+  <number:number-style style:name="N271P1" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>    </number:text>
+  </number:number-style>
+  <number:number-style style:name="N271P2" style:volatile="true">
+   <number:text> -    </number:text>
+  </number:number-style>
+  <number:text-style style:name="N271">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N271P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N271P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N271P2"/>
+  </number:text-style>
+  <number:date-style style:name="N272">
+   <number:month number:style="long"/>
+   <number:text>/</number:text>
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:currency-style style:name="N273P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N273">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N273P0"/>
+  </number:currency-style>
+  <number:currency-style style:name="N275P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="0" 
number:decimal-replacement="--" number:min-integer-digits="1" 
number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N275">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:number number:decimal-places="2" number:min-decimal-places="0" 
number:decimal-replacement="--" number:min-integer-digits="1" 
number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N275P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N279P0" style:volatile="true">
+   <number:text> $</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N279P1" style:volatile="true">
+   <number:text> $(</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N279P2" style:volatile="true">
+   <number:text> $-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N279">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N279P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N279P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N279P2"/>
+  </number:text-style>
+  <number:number-style style:name="N283P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>    </number:text>
+  </number:number-style>
+  <number:number-style style:name="N283P1" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>    </number:text>
+  </number:number-style>
+  <number:number-style style:name="N283P2" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text>    </number:text>
+  </number:number-style>
+  <number:text-style style:name="N283">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N283P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N283P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N283P2"/>
+  </number:text-style>
+  <number:number-style style:name="N285P0" style:volatile="true">
+   <number:text>WAHR</number:text>
+  </number:number-style>
+  <number:number-style style:name="N285P1" style:volatile="true">
+   <number:text>WAHR</number:text>
+  </number:number-style>
+  <number:number-style style:name="N285">
+   <number:text>FALSCH</number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N285P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N285P1"/>
+  </number:number-style>
+  <number:date-style style:name="N286">
+   <number:month number:style="long"/>
+   <number:text>.</number:text>
+   <number:year number:style="long"/>
+  </number:date-style>
+  <number:currency-style style:name="N288P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="fr" 
number:country="FR">€</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N288">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="fr" 
number:country="FR">€</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N288P0"/>
+  </number:currency-style>
+  <number:currency-style style:name="N290P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="de" 
number:country="DE">€</number:currency-symbol>
+  </number:currency-style>
+  <number:currency-style style:name="N290">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>-</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+   <number:currency-symbol number:language="de" 
number:country="DE">€</number:currency-symbol>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N290P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N291">
+   <number:number number:decimal-places="16" number:min-decimal-places="16" 
number:min-integer-digits="1"/>
+  </number:number-style>
+  <number:number-style style:name="N294P0" style:volatile="true">
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:number-style style:name="N294P1" style:volatile="true">
+   <number:text> (</number:text>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text>)</number:text>
+  </number:number-style>
+  <number:number-style style:name="N294P2" style:volatile="true">
+   <number:text>-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="0"/>
+   <number:text> </number:text>
+  </number:number-style>
+  <number:text-style style:name="N294">
+   <number:text-content/>
+   <number:text> </number:text>
+   <style:map style:condition="value()&gt;0" style:apply-style-name="N294P0"/>
+   <style:map style:condition="value()&lt;0" style:apply-style-name="N294P1"/>
+   <style:map style:condition="value()=0" style:apply-style-name="N294P2"/>
+  </number:text-style>
+  <number:time-style style:name="N295">
+   <number:minutes number:style="long"/>
+   <number:text>:</number:text>
+   <number:seconds number:style="long" number:decimal-places="1"/>
+  </number:time-style>
+  <number:time-style style:name="N296">
+   <number:minutes number:style="long"/>
+   <number:text>:</number:text>
+   <number:seconds number:style="long"/>
+  </number:time-style>
+  <number:currency-style style:name="N298P0" style:volatile="true">
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N298">
+   <number:text>-</number:text>
+   <number:currency-symbol number:language="en" 
number:country="GB">£</number:currency-symbol>
+   <number:fill-character> </number:fill-character>
+   <number:number number:decimal-places="2" number:min-decimal-places="2" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N298P0"/>
+  </number:currency-style>
+  <number:number-style style:name="N299P0" style:volatile="true">
+   <number:text>\</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:number-style>
+  <number:number-style style:name="N299">
+   <style:text-properties fo:color="#ff0000"/>
+   <number:text>\-</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N299P0"/>
+  </number:number-style>
+  <number:currency-style style:name="N301P0" style:volatile="true">
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> </number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+  </number:currency-style>
+  <number:currency-style style:name="N301">
+   <number:currency-symbol number:language="nl" 
number:country="NL">€</number:currency-symbol>
+   <number:text> -</number:text>
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <style:map style:condition="value()&gt;=0" style:apply-style-name="N301P0"/>
+  </number:currency-style>
+  <number:currency-style style:name="N303P0" style:volatile="true">
+   <number:number number:decimal-places="0" number:min-decimal-places="0" 
number:min-integer-digits="1" number:grouping="true"/>
+   <number:text> </number:text>
-e 
... etc. - the rest is truncated

Reply via email to