diff options
222 files changed, 6162 insertions, 8141 deletions
diff --git a/automation/source/testtool/objtest.cxx b/automation/source/testtool/objtest.cxx index 968af92ba880..8143700f7cd8 100644 --- a/automation/source/testtool/objtest.cxx +++ b/automation/source/testtool/objtest.cxx @@ -505,6 +505,10 @@ void TestToolObj::LoadIniFile() // Laden der IniEinstellungen, die d abGP.Append( "23" ); // Linux ALPHA #elif defined NETBSD && defined X86_64 abGP.Append( "24" ); // NetBSD/amd64 +#elif defined OPENBSD && defined X86 + abGP.Append( "25" ); // OpenBSD/i386 +#elif defined OPENBSD && defined X86_64 + abGP.Append( "26" ); // OpenBSD/amd64 #else #error ("unknown platform. please request an ID for your platform on qa/dev") #endif diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx index 8d2d94d7eafa..7a5defdb7dd1 100644 --- a/avmedia/source/gstreamer/gstplayer.cxx +++ b/avmedia/source/gstreamer/gstplayer.cxx @@ -73,7 +73,7 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) : { // Initialize GStreamer library int argc = 1; - char *arguments[] = { "openoffice.org" }; + char *arguments[] = { "libreoffice.org" }; char** argv = arguments; GError* pError = NULL; diff --git a/basic/source/app/process.cxx b/basic/source/app/process.cxx index 837820eb1234..7d6d9a0d8eca 100644 --- a/basic/source/app/process.cxx +++ b/basic/source/app/process.cxx @@ -179,7 +179,7 @@ void Process::SetImage( const String &aAppPath, const String &aAppParams, const BOOL Process::Start() { // Start program BOOL bSuccess=FALSE; - if ( m_pProcess && !ImplIsRunning() ) + if ( m_aProcessName.getLength() && !ImplIsRunning() ) { bWasGPF = FALSE; #ifdef WNT diff --git a/basic/source/sbx/sbxscan.cxx b/basic/source/sbx/sbxscan.cxx index 9f4c9a6bd495..5fe1704bcc38 100644 --- a/basic/source/sbx/sbxscan.cxx +++ b/basic/source/sbx/sbxscan.cxx @@ -405,7 +405,7 @@ void ImpCvtNum( double nNum, short nPrec, ::rtl::OUString& rRes, BOOL bCoreStrin *p++ = '-'; } double dMaxNumWithoutExp = (nPrec == 6) ? 1E6 : 1E14; - myftoa( nNum, p, nPrec,( nNum &&( nNum < 1E-1 || nNum > dMaxNumWithoutExp ) ) ? 4:0, + myftoa( nNum, p, nPrec,( nNum &&( nNum < 1E-1 || nNum >= dMaxNumWithoutExp ) ) ? 4:0, FALSE, TRUE, cDecimalSep ); // Trailing Zeroes weg: for( p = cBuf; *p &&( *p != 'E' ); p++ ) {} diff --git a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx index be5894a0b4b5..247b12aafb25 100644 --- a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx +++ b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx @@ -38,7 +38,8 @@ #include <hash_map> /*See: http://people.redhat.com/drepper/selinux-mem.html*/ -#ifdef LINUX +#if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \ + || defined(NETBSD) #define USE_DOUBLE_MMAP #endif diff --git a/bridges/prj/build.lst b/bridges/prj/build.lst index 51c342af809d..34eda8ae63c2 100644 --- a/bridges/prj/build.lst +++ b/bridges/prj/build.lst @@ -9,9 +9,7 @@ br bridges\source\cpp_uno\mingw_intel nmake - w br_gcc3i br_cppuno_shared br_uno br bridges\source\cpp_uno\msvc_win32_intel nmake - w br_msci br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_linux_intel nmake - u br_gcc3li br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_os2_intel nmake - p br_gcc3os br_cppuno_shared br_unotypes br_inc NULL -br bridges\source\cpp_uno\gcc3_freebsd_intel nmake - u br_gcc3fi br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_linux_x86-64 nmake - u br_gcc3lx br_cppuno_shared br_unotypes br_inc NULL -br bridges\source\cpp_uno\gcc3_freebsd_x86-64 nmake - u br_gcc3fx br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_linux_powerpc nmake - u br_gcc3lp br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_aix_powerpc nmake - u br_gcc3ap br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_linux_powerpc64 nmake - u br_gcc3lp_64 br_cppuno_shared br_unotypes br_inc NULL @@ -31,8 +29,6 @@ br bridges\source\cpp_uno\cc5_solaris_sparc64 nmake - u br_cc5sols64 br_unotype br bridges\source\cpp_uno\cc50_solaris_intel nmake - u br_cc50soli br_unotypes br_cppuno_shared br_inc NULL br bridges\source\cpp_uno\gcc3_solaris_sparc nmake - u br_gcc3sogs br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_solaris_intel nmake - u br_gcc3sogi br_cppuno_shared br_unotypes br_inc NULL -br bridges\source\cpp_uno\gcc3_netbsd_intel nmake - u br_gccni br_unotypes br_inc NULL -br bridges\source\cpp_uno\gcc3_netbsd_x86-64 nmake - u br_gcc3nx br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\shared nmake - all br_cppuno_shared br_unotypes br_inc NULL br bridges\source\jni_uno nmake - all br_jni_uno br_unotypes br_inc NULL br bridges\source\jni_uno\java\com\sun\star\bridges\jni_uno nmake - all br_jni_uno_java br_unotypes br_inc NULL diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s b/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s deleted file mode 100644 index f345e3a764ac..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s +++ /dev/null @@ -1,268 +0,0 @@ - .text - -.globl privateSnippetExecutorGeneral - .type privateSnippetExecutorGeneral,@function -privateSnippetExecutorGeneral: -.LFBg: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIg0: - movl %esp,%ebp -.LCFIg1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 32bit returnValue - leave - ret -.LFEg: - .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral - -.globl privateSnippetExecutorVoid - .type privateSnippetExecutorVoid,@function -privateSnippetExecutorVoid: -.LFBv: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIv0: - movl %esp,%ebp -.LCFIv1: - pushl $0 # 32bit null pointer (returnValue not used) - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - leave - ret -.LFEv: - .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid - -.globl privateSnippetExecutorHyper - .type privateSnippetExecutorHyper,@function -privateSnippetExecutorHyper: -.LFBh: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIh0: - movl %esp,%ebp -.LCFIh1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 64bit returnValue, lower half - movl 20(%esp),%edx # 64bit returnValue, upper half - leave - ret -.LFEh: - .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper - -.globl privateSnippetExecutorFloat - .type privateSnippetExecutorFloat,@function -privateSnippetExecutorFloat: -.LFBf: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIf0: - movl %esp,%ebp -.LCFIf1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - flds 16(%esp) # 32bit returnValue - leave - ret -.LFEf: - .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat - -.globl privateSnippetExecutorDouble - .type privateSnippetExecutorDouble,@function -privateSnippetExecutorDouble: -.LFBd: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFId0: - movl %esp,%ebp -.LCFId1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - fldl 16(%esp) # 64bit returnValue - leave - ret -.LFEd: - .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble - -.globl privateSnippetExecutorClass - .type privateSnippetExecutorClass,@function -privateSnippetExecutorClass: -.LFBc: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIc0: - movl %esp,%ebp -.LCFIc1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 32bit returnValue - leave - ret $4 -.LFEc: - .size privateSnippetExecutorClass,.-privateSnippetExecutorClass - - .section .eh_frame,"a",@progbits -.Lframe1: - .long .LECIE1-.LSCIE1 # length -.LSCIE1: - .long 0 # CIE_ID - .byte 1 # version - .string "zR" # augmentation - .uleb128 1 # code_alignment_factor - .sleb128 -4 # data_alignment_factor - .byte 8 # return_address_register - .uleb128 1 # augmentation size 1: - .byte 0x1B # FDE Encoding (pcrel sdata4) - # initial_instructions: - .byte 0x0C # DW_CFA_def_cfa %esp, 4 - .uleb128 4 - .uleb128 4 - .byte 0x88 # DW_CFA_offset ret, 1 - .uleb128 1 - .align 4 -.LECIE1: -.LSFDEg: - .long .LEFDEg-.LASFDEg # length -.LASFDEg: - .long .LASFDEg-.Lframe1 # CIE_pointer - .long .LFBg-. # initial_location - .long .LFEg-.LFBg # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIg0-.LFBg - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIg1-.LCFIg0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEg: -.LSFDEv: - .long .LEFDEv-.LASFDEv # length -.LASFDEv: - .long .LASFDEv-.Lframe1 # CIE_pointer - .long .LFBv-. # initial_location - .long .LFEv-.LFBv # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIv0-.LFBv - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIv1-.LCFIv0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEv: -.LSFDEh: - .long .LEFDEh-.LASFDEh # length -.LASFDEh: - .long .LASFDEh-.Lframe1 # CIE_pointer - .long .LFBh-. # initial_location - .long .LFEh-.LFBh # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIh0-.LFBh - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIh1-.LCFIh0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEh: -.LSFDEf: - .long .LEFDEf-.LASFDEf # length -.LASFDEf: - .long .LASFDEf-.Lframe1 # CIE_pointer - .long .LFBf-. # initial_location - .long .LFEf-.LFBf # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIf0-.LFBf - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIf1-.LCFIf0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEf: -.LSFDEd: - .long .LEFDEd-.LASFDEd # length -.LASFDEd: - .long .LASFDEd-.Lframe1 # CIE_pointer - .long .LFBd-. # initial_location - .long .LFEd-.LFBd # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFId0-.LFBd - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFId1-.LCFId0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEd: -.LSFDEc: - .long .LEFDEc-.LASFDEc # length -.LASFDEc: - .long .LASFDEc-.Lframe1 # CIE_pointer - .long .LFBc-. # initial_location - .long .LFEc-.LFBc # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIc0-.LFBc - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIc1-.LCFIc0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEc: - .section .note.GNU-stack,"",@progbits diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx deleted file mode 100644 index afb3d1434db4..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx +++ /dev/null @@ -1,493 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> -#include <typelib/typedescription.hxx> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/vtablefactory.hxx" - -#include "share.hxx" - -using namespace ::com::sun::star::uno; - -namespace -{ - -//================================================================================================== -void cpp2uno_call( - bridges::cpp_uno::shared::CppInterfaceProxy * pThis, - const typelib_TypeDescription * pMemberTypeDescr, - typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return - sal_Int32 nParams, typelib_MethodParameter * pParams, - void ** pCallStack, - void * pReturnValue ) -{ - // pCallStack: ret, [return ptr], this, params - char * pCppStack = (char *)(pCallStack +1); - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - if (pReturnTypeRef) - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - - void * pUnoReturn = 0; - void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need - - if (pReturnTypeDescr) - { - if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) - { - pUnoReturn = pReturnValue; // direct way for simple types - } - else // complex return via ptr (pCppReturn) - { - pCppReturn = *(void **)pCppStack; - pCppStack += sizeof(void *); - - pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( - pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pCppReturn); // direct way - } - } - // pop this - pCppStack += sizeof( void* ); - - // stack space - OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); - // parameters - void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); - void ** pCppArgs = pUnoArgs + nParams; - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut - && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - // value - { - pCppArgs[nPos] = pCppStack; - pUnoArgs[nPos] = pCppStack; - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_DOUBLE: - pCppStack += sizeof(sal_Int32); // extra long - break; - default: - break; - } - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - pCppArgs[nPos] = *(void **)pCppStack; - - if (! rParam.bIn) // is pure out - { - // uno out is unconstructed mem! - pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); - pTempIndizes[nTempIndizes] = nPos; - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( - pParamTypeDescr )) - { - uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), - *(void **)pCppStack, pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pUnoArgs[nPos] = *(void **)pCppStack; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - pCppStack += sizeof(sal_Int32); // standard parameter length - } - - // ExceptionHolder - uno_Any aUnoExc; // Any will be constructed by callee - uno_Any * pUnoExc = &aUnoExc; - - // invoke uno dispatch call - (*pThis->getUnoI()->pDispatcher)( - pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); - - // in case an exception occured... - if (pUnoExc) - { - // destruct temporary in/inout params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - - if (pParams[nIndex].bIn) // is in/inout => was constructed - uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - - CPPU_CURRENT_NAMESPACE::raiseException( - &aUnoExc, pThis->getBridge()->getUno2Cpp() ); - // has to destruct the any - } - else // else no exception occured... - { - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bOut) // inout/out - { - // convert and assign - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - } - // destroy temp uno param - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return - if (pCppReturn) // has complex return - { - if (pUnoReturn != pCppReturn) // needs reconversion - { - uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - // destroy temp uno return - uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); - } - // complex return ptr is set to eax - *static_cast< void ** >(pReturnValue) = pCppReturn; - } - if (pReturnTypeDescr) - { - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } - } -} - - -//================================================================================================== -extern "C" void cpp_vtable_call( - int nFunctionIndex, int nVtableOffset, void** pCallStack, - void * pReturnValue ) -{ - OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); - - // pCallStack: ret adr, [ret *], this, params - void * pThis; - if( nFunctionIndex & 0x80000000 ) - { - nFunctionIndex &= 0x7fffffff; - pThis = pCallStack[2]; - } - else - { - pThis = pCallStack[1]; - } - pThis = static_cast< char * >(pThis) - nVtableOffset; - bridges::cpp_uno::shared::CppInterfaceProxy * pCppI - = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( - pThis); - - typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); - - OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" ); - if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) - { - throw RuntimeException( - rtl::OUString::createFromAscii("illegal vtable index!"), - (XInterface *)pThis ); - } - - // determine called method - sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" ); - - TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); - - switch (aMemberDescr.get()->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex) - { - // is GET method - cpp2uno_call( - pCppI, aMemberDescr.get(), - ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, - 0, 0, // no params - pCallStack, pReturnValue ); - } - else - { - // is SET method - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - cpp2uno_call( - pCppI, aMemberDescr.get(), - 0, // indicates void return - 1, &aParam, - pCallStack, pReturnValue ); - } - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // is METHOD - switch (nFunctionIndex) - { - case 1: // acquire() - pCppI->acquireProxy(); // non virtual call! - break; - case 2: // release() - pCppI->releaseProxy(); // non virtual call! - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pCallStack[3] )->getTypeLibType() ); - if (pTD) - { - XInterface * pInterface = 0; - (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)( - pCppI->getBridge()->getCppEnv(), - (void **)&pInterface, pCppI->getOid().pData, - (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pCallStack[1] ), - &pInterface, pTD, cpp_acquire ); - pInterface->release(); - TYPELIB_DANGER_RELEASE( pTD ); - *static_cast< void ** >(pReturnValue) = pCallStack[1]; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - cpp2uno_call( - pCppI, aMemberDescr.get(), - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, - pCallStack, pReturnValue ); - } - break; - } - default: - { - throw RuntimeException( - rtl::OUString::createFromAscii("no member description found!"), - (XInterface *)pThis ); - } - } -} - -//================================================================================================== -extern "C" void privateSnippetExecutorGeneral(); -extern "C" void privateSnippetExecutorVoid(); -extern "C" void privateSnippetExecutorHyper(); -extern "C" void privateSnippetExecutorFloat(); -extern "C" void privateSnippetExecutorDouble(); -extern "C" void privateSnippetExecutorClass(); -extern "C" typedef void (*PrivateSnippetExecutor)(); - -int const codeSnippetSize = 16; - -unsigned char * codeSnippet( - unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset, - typelib_TypeClass returnTypeClass) -{ - if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) { - functionIndex |= 0x80000000; - } - PrivateSnippetExecutor exec; - switch (returnTypeClass) { - case typelib_TypeClass_VOID: - exec = privateSnippetExecutorVoid; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - exec = privateSnippetExecutorHyper; - break; - case typelib_TypeClass_FLOAT: - exec = privateSnippetExecutorFloat; - break; - case typelib_TypeClass_DOUBLE: - exec = privateSnippetExecutorDouble; - break; - case typelib_TypeClass_STRING: - case typelib_TypeClass_TYPE: - case typelib_TypeClass_ANY: - case typelib_TypeClass_SEQUENCE: - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_INTERFACE: - exec = privateSnippetExecutorClass; - break; - default: - exec = privateSnippetExecutorGeneral; - break; - } - unsigned char * p = code; - OSL_ASSERT(sizeof (sal_Int32) == 4); - // mov function_index, %eax: - *p++ = 0xB8; - *reinterpret_cast< sal_Int32 * >(p) = functionIndex; - p += sizeof (sal_Int32); - // mov vtable_offset, %edx: - *p++ = 0xBA; - *reinterpret_cast< sal_Int32 * >(p) = vtableOffset; - p += sizeof (sal_Int32); - // jmp privateSnippetExecutor: - *p++ = 0xE9; - *reinterpret_cast< sal_Int32 * >(p) - = ((unsigned char *) exec) - p - sizeof (sal_Int32); - p += sizeof (sal_Int32); - OSL_ASSERT(p - code <= codeSnippetSize); - return code + codeSnippetSize; -} - -} - -struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -{ - return static_cast< Slot * >(block) + 2; -} - -sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( - sal_Int32 slotCount) -{ - return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -} - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::initializeBlock( - void * block, sal_Int32 slotCount) -{ - Slot * slots = mapBlockToVtable(block); - slots[-2].fn = 0; - slots[-1].fn = 0; - return slots + slotCount; -} - -unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( - Slot ** slots, unsigned char * code, - typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, - sal_Int32 functionCount, sal_Int32 vtableOffset) -{ - (*slots) -= functionCount; - Slot * s = *slots; - for (sal_Int32 i = 0; i < type->nMembers; ++i) { - typelib_TypeDescription * member = 0; - TYPELIB_DANGER_GET(&member, type->ppMembers[i]); - OSL_ASSERT(member != 0); - switch (member->eTypeClass) { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - // Getter: - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >( - member)->pAttributeTypeRef->eTypeClass); - // Setter: - if (!reinterpret_cast< - typelib_InterfaceAttributeTypeDescription * >( - member)->bReadOnly) - { - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - typelib_TypeClass_VOID); - } - break; - - case typelib_TypeClass_INTERFACE_METHOD: - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - reinterpret_cast< typelib_InterfaceMethodTypeDescription * >( - member)->pReturnTypeRef->eTypeClass); - break; - - default: - OSL_ASSERT(false); - break; - } - TYPELIB_DANGER_RELEASE(member); - } - return code; -} - -void bridges::cpp_uno::shared::VtableFactory::flushCode( - unsigned char const *, unsigned char const *) -{} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx deleted file mode 100644 index 05db0ced9cf3..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <dlfcn.h> -#include <cxxabi.h> -#include <hash_map> -#include <sys/param.h> - -#include <rtl/strbuf.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <typelib/typedescription.hxx> -#include <uno/any2.h> - -#include "share.hxx" - - -using namespace ::std; -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; -using namespace ::__cxxabiv1; - - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ) -{ -} - -//================================================================================================== -static OUString toUNOname( char const * p ) SAL_THROW( () ) -{ -#if OSL_DEBUG_LEVEL > 1 - char const * start = p; -#endif - - // example: N3com3sun4star4lang24IllegalArgumentExceptionE - - OUStringBuffer buf( 64 ); - OSL_ASSERT( 'N' == *p ); - ++p; // skip N - - while ('E' != *p) - { - // read chars count - long n = (*p++ - '0'); - while ('0' <= *p && '9' >= *p) - { - n *= 10; - n += (*p++ - '0'); - } - buf.appendAscii( p, n ); - p += n; - if ('E' != *p) - buf.append( (sal_Unicode)'.' ); - } - -#if OSL_DEBUG_LEVEL > 1 - OUString ret( buf.makeStringAndClear() ); - OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); - return ret; -#else - return buf.makeStringAndClear(); -#endif -} - -//================================================================================================== -class RTTI -{ - typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; - - Mutex m_mutex; - t_rtti_map m_rttis; - t_rtti_map m_generatedRttis; - - void * m_hApp; - -public: - RTTI() SAL_THROW( () ); - ~RTTI() SAL_THROW( () ); - - type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -RTTI::RTTI() SAL_THROW( () ) -#if __FreeBSD_version < 602103 - : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) -#else - : m_hApp( dlopen( 0, RTLD_LAZY ) ) -#endif -{ -} -//__________________________________________________________________________________________________ -RTTI::~RTTI() SAL_THROW( () ) -{ - dlclose( m_hApp ); -} - -//__________________________________________________________________________________________________ -type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -{ - type_info * rtti; - - OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; - - MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); - if (iRttiFind == m_rttis.end()) - { - // RTTI symbol - OStringBuffer buf( 64 ); - buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); - sal_Int32 index = 0; - do - { - OUString token( unoName.getToken( 0, '.', index ) ); - buf.append( token.getLength() ); - OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); - buf.append( c_token ); - } - while (index >= 0); - buf.append( 'E' ); - - OString symName( buf.makeStringAndClear() ); -#if __FreeBSD_version < 602103 /* #i22253# */ - rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); -#else - rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -#endif - - if (rtti) - { - pair< t_rtti_map::iterator, bool > insertion( - m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); - } - else - { - // try to lookup the symbol in the generated rtti map - t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); - if (iFind == m_generatedRttis.end()) - { - // we must generate it ! - // symbol and rtti-name is nearly identical, - // the symbol is prefixed with _ZTI - char const * rttiName = symName.getStr() +4; -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr,"generated rtti for %s\n", rttiName ); -#endif - if (pTypeDescr->pBaseTypeDescription) - { - // ensure availability of base - type_info * base_rtti = getRTTI( - (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); - rtti = new __si_class_type_info( - strdup( rttiName ), (__class_type_info *)base_rtti ); - } - else - { - // this class has no base class - rtti = new __class_type_info( strdup( rttiName ) ); - } - - pair< t_rtti_map::iterator, bool > insertion( - m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); - } - else // taking already generated rtti - { - rtti = iFind->second; - } - } - } - else - { - rtti = iRttiFind->second; - } - - return rtti; -} - -//-------------------------------------------------------------------------------------------------- -static void deleteException( void * pExc ) -{ - __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); - typelib_TypeDescription * pTD = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); - ::typelib_typedescription_getByName( &pTD, unoName.pData ); - OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); - if (pTD) - { - ::uno_destructData( pExc, pTD, cpp_release ); - ::typelib_typedescription_release( pTD ); - } -} - -//================================================================================================== -void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -{ -#if OSL_DEBUG_LEVEL > 1 - OString cstr( - OUStringToOString( - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() ); -#endif - void * pCppExc; - type_info * rtti; - - { - // construct cpp exception object - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); - OSL_ASSERT( pTypeDescr ); - if (! pTypeDescr) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - - pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); - ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); - - // destruct uno exception - ::uno_any_destruct( pUnoExc, 0 ); - // avoiding locked counts - static RTTI * s_rtti = 0; - if (! s_rtti) - { - MutexGuard guard( Mutex::getGlobalMutex() ); - if (! s_rtti) - { -#ifdef LEAK_STATIC_DATA - s_rtti = new RTTI(); -#else - static RTTI rtti_data; - s_rtti = &rtti_data; -#endif - } - } - rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); - if (! rtti) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - } - - __cxa_throw( pCppExc, rtti, deleteException ); -} - -//================================================================================================== -void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) -{ - if (! header) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ), - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - return; - } - - typelib_TypeDescription * pExcTypeDescr = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); -#if OSL_DEBUG_LEVEL > 1 - OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() ); -#endif - typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); - if (0 == pExcTypeDescr) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName, - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - } - else - { - // construct uno exception any - uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); - typelib_typedescription_release( pExcTypeDescr ); - } -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk deleted file mode 100644 index 87ff690dd653..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk +++ /dev/null @@ -1,81 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=bridges -TARGET=gcc3_uno -LIBTARGET=no -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDIgcc3" - -.IF "$(cppu_no_leak)" == "" -CFLAGS += -DLEAK_STATIC_DATA -.ENDIF - -# In case someone enabled the non-standard -fomit-frame-pointer which does not -# work with the .cxx sources in this directory: -CFLAGSCXX += -fno-omit-frame-pointer - -CFLAGSNOOPT=-O0 - -SLOFILES= \ - $(SLO)$/except.obj \ - $(SLO)$/cpp2uno.obj \ - $(SLO)$/uno2cpp.obj \ - $(SLO)$/call.obj - -SHL1TARGET= $(TARGET) - -SHL1DEF=$(MISC)$/$(SHL1TARGET).def -SHL1IMPLIB=i$(TARGET) -SHL1VERSIONMAP=..$/..$/bridge_exports.map -SHL1RPATH=URELIB - -SHL1OBJS = $(SLOFILES) -SHL1LIBS = $(SLB)$/cpp_uno_shared.lib - -SHL1STDLIBS= \ - $(CPPULIB) \ - $(SALLIB) - -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - -$(SLO)$/%.obj: %.s - $(CC) -c -o $(SLO)$/$(@:b).o $< - touch $@ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx deleted file mode 100644 index da2367ad172b..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/mapping.h" - -#include <typeinfo> -#include <exception> -#include <cstddef> - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ); - -// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h - -struct _Unwind_Exception -{ - unsigned exception_class __attribute__((__mode__(__DI__))); - void * exception_cleanup; - unsigned private_1 __attribute__((__mode__(__word__))); - unsigned private_2 __attribute__((__mode__(__word__))); -} __attribute__((__aligned__)); - -struct __cxa_exception -{ - ::std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - - ::std::unexpected_handler unexpectedHandler; - ::std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void *catchTemp; - void *adjustedPtr; - - _Unwind_Exception unwindHeader; -}; - -extern "C" void *__cxa_allocate_exception( - std::size_t thrown_size ) throw(); -extern "C" void __cxa_throw ( - void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); - -struct __cxa_eh_globals -{ - __cxa_exception *caughtExceptions; - unsigned int uncaughtExceptions; -}; -extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); - -// ----- - -//================================================================================================== -void raiseException( - uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -//================================================================================================== -void fillUnoException( - __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx deleted file mode 100644 index f468ffc33715..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx +++ /dev/null @@ -1,447 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdlib.h> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -#include "bridges/cpp_uno/shared/vtables.hxx" - -#include "share.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -namespace -{ - -//================================================================================================== -// The call instruction within the asm section of callVirtualMethod may throw -// exceptions. So that the compiler handles this correctly, it is important -// that (a) callVirtualMethod might call dummy_can_throw_anything (although this -// never happens at runtime), which in turn can throw exceptions, and (b) -// callVirtualMethod is not inlined at its call site (so that any exceptions are -// caught which are thrown from the instruction calling callVirtualMethod): -void callVirtualMethod( - void * pAdjustedThisPtr, - sal_Int32 nVtableIndex, - void * pRegisterReturn, - typelib_TypeClass eReturnType, - sal_Int32 * pStackLongs, - sal_Int32 nStackLongs ) __attribute__((noinline)); - -void callVirtualMethod( - void * pAdjustedThisPtr, - sal_Int32 nVtableIndex, - void * pRegisterReturn, - typelib_TypeClass eReturnType, - sal_Int32 * pStackLongs, - sal_Int32 nStackLongs ) -{ - // parameter list is mixed list of * and values - // reference parameters are pointers - - OSL_ENSURE( pStackLongs && pAdjustedThisPtr, "### null ptr!" ); - OSL_ENSURE( (sizeof(void *) == 4) && (sizeof(sal_Int32) == 4), "### unexpected size of int!" ); - OSL_ENSURE( nStackLongs && pStackLongs, "### no stack in callVirtualMethod !" ); - - // never called - if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something - - volatile long edx = 0, eax = 0; // for register returns - void * stackptr; - asm volatile ( - "mov %%esp, %6\n\t" - // copy values - "mov %0, %%eax\n\t" - "mov %%eax, %%edx\n\t" - "dec %%edx\n\t" - "shl $2, %%edx\n\t" - "add %1, %%edx\n" - "Lcopy:\n\t" - "pushl 0(%%edx)\n\t" - "sub $4, %%edx\n\t" - "dec %%eax\n\t" - "jne Lcopy\n\t" - // do the actual call - "mov %2, %%edx\n\t" - "mov 0(%%edx), %%edx\n\t" - "mov %3, %%eax\n\t" - "shl $2, %%eax\n\t" - "add %%eax, %%edx\n\t" - "mov 0(%%edx), %%edx\n\t" - "call *%%edx\n\t" - // save return registers - "mov %%eax, %4\n\t" - "mov %%edx, %5\n\t" - // cleanup stack - "mov %6, %%esp\n\t" - : - : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), - "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr) - : "eax", "edx" ); - switch( eReturnType ) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - ((long*)pRegisterReturn)[1] = edx; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_CHAR: - case typelib_TypeClass_ENUM: - ((long*)pRegisterReturn)[0] = eax; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(unsigned short*)pRegisterReturn = eax; - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - *(unsigned char*)pRegisterReturn = eax; - break; - case typelib_TypeClass_FLOAT: - asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) ); - break; - case typelib_TypeClass_DOUBLE: - asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) ); - break; - default: - break; - } -} - -//================================================================================================== -static void cpp_call( - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, - bridges::cpp_uno::shared::VtableSlot aVtableSlot, - typelib_TypeDescriptionReference * pReturnTypeRef, - sal_Int32 nParams, typelib_MethodParameter * pParams, - void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -{ - // max space for: [complex ret ptr], values|ptr ... - char * pCppStack = - (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) ); - char * pCppStackStart = pCppStack; - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); - - void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion - - if (pReturnTypeDescr) - { - if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) - { - pCppReturn = pUnoReturn; // direct way for simple types - } - else - { - // complex return via ptr - pCppReturn = *(void **)pCppStack - = (bridges::cpp_uno::shared::relatesToInterfaceType( - pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pUnoReturn); // direct way - pCppStack += sizeof(void *); - } - } - // push this - void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) - + aVtableSlot.offset; - *(void**)pCppStack = pAdjustedThisPtr; - pCppStack += sizeof( void* ); - - // stack space - OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); - // args - void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut - && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - { - uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_DOUBLE: - pCppStack += sizeof(sal_Int32); // extra long - break; - default: - break; - } - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - if (! rParam.bIn) // is pure out - { - // cpp out is constructed mem, uno out is not! - uno_constructData( - *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pParamTypeDescr ); - pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( - pParamTypeDescr )) - { - uno_copyAndConvertData( - *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos]; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - pCppStack += sizeof(sal_Int32); // standard parameter length - } - - try - { - OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" ); - callVirtualMethod( - pAdjustedThisPtr, aVtableSlot.index, - pCppReturn, pReturnTypeDescr->eTypeClass, - (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) ); - // NO exception occured... - *ppUnoExc = 0; - - // reconvert temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bIn) - { - if (pParams[nIndex].bOut) // inout - { - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - } - else // pure out - { - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return value - if (pCppReturn && pUnoReturn != pCppReturn) - { - uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); - } - } - catch (...) - { - // fill uno exception - fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); - - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - // return type - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } -} - -} - -namespace bridges { namespace cpp_uno { namespace shared { - -void unoInterfaceProxyDispatch( - uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, - void * pReturn, void * pArgs[], uno_Any ** ppException ) -{ - // is my surrogate - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis - = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI); - - switch (pMemberDescr->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceAttributeTypeDescription const * >( - pMemberDescr))); - if (pReturn) - { - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, - 0, 0, // no params - pReturn, pArgs, ppException ); - } - else - { - // is SET - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - typelib_TypeDescriptionReference * pReturnTypeRef = 0; - OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); - typelib_typedescriptionreference_new( - &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); - - // dependent dispatch - aVtableSlot.index += 1; // get, then set method - cpp_call( - pThis, aVtableSlot, - pReturnTypeRef, - 1, &aParam, - pReturn, pArgs, ppException ); - - typelib_typedescriptionreference_release( pReturnTypeRef ); - } - - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceMethodTypeDescription const * >( - pMemberDescr))); - switch (aVtableSlot.index) - { - // standard calls - case 1: // acquire uno interface - (*pUnoI->acquire)( pUnoI ); - *ppException = 0; - break; - case 2: // release uno interface - (*pUnoI->release)( pUnoI ); - *ppException = 0; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); - if (pTD) - { - uno_Interface * pInterface = 0; - (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)( - pThis->pBridge->getUnoEnv(), - (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pReturn ), - &pInterface, pTD, 0 ); - (*pInterface->release)( pInterface ); - TYPELIB_DANGER_RELEASE( pTD ); - *ppException = 0; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, - pReturn, pArgs, ppException ); - } - break; - } - default: - { - ::com::sun::star::uno::RuntimeException aExc( - OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); - - Type const & rExcType = ::getCppuType( &aExc ); - // binary identical null reference - ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); - } - } -} - -} } } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx deleted file mode 100644 index 77e2edebcc8b..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx +++ /dev/null @@ -1,357 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -// This is an implementation of the x86-64 ABI as described in 'System V -// Application Binary Interface, AMD64 Architecture Processor Supplement' -// (http://www.x86-64.org/documentation/abi-0.95.pdf) -// -// The code in this file is a modification of src/x86/ffi64.c from libffi -// (http://sources.redhat.com/libffi/) which is under the following license: - -/* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2002 Bo Thorsen <bo@suse.de> - - x86-64 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -#include <abi.hxx> - -#include <rtl/ustring.hxx> - -using namespace x86_64; - -typedef struct -{ - /* Registers for argument passing. */ - long gpr[MAX_GPR_REGS]; - __int128_t sse[MAX_SSE_REGS]; - - /* Stack space for arguments. */ - char argspace[0]; -} stackLayout; - -/* Register class used for passing given 64bit part of the argument. - These represent classes as documented by the PS ABI, with the exception - of SSESF, SSEDF classes, that are basically SSE class, just gcc will - use SF or DFmode move instead of DImode to avoid reformating penalties. - - Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves - whenever possible (upper half does contain padding). - */ -enum x86_64_reg_class -{ - X86_64_NO_CLASS, - X86_64_INTEGER_CLASS, - X86_64_INTEGERSI_CLASS, - X86_64_SSE_CLASS, - X86_64_SSESF_CLASS, - X86_64_SSEDF_CLASS, - X86_64_SSEUP_CLASS, - X86_64_X87_CLASS, - X86_64_X87UP_CLASS, - X86_64_MEMORY_CLASS -}; - -#define MAX_CLASSES 4 - -#define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) - -/* x86-64 register passing implementation. See x86-64 ABI for details. Goal - of this code is to classify each 8bytes of incoming argument by the register - class and assign registers accordingly. */ - -/* Return the union class of CLASS1 and CLASS2. - See the x86-64 PS ABI for details. */ - -static enum x86_64_reg_class -merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) -{ - /* Rule #1: If both classes are equal, this is the resulting class. */ - if (class1 == class2) - return class1; - - /* Rule #2: If one of the classes is NO_CLASS, the resulting class is - the other class. */ - if (class1 == X86_64_NO_CLASS) - return class2; - if (class2 == X86_64_NO_CLASS) - return class1; - - /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ - if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) - return X86_64_MEMORY_CLASS; - - /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ - if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) - || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) - return X86_64_INTEGERSI_CLASS; - if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS - || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) - return X86_64_INTEGER_CLASS; - - /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */ - if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS - || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS) - return X86_64_MEMORY_CLASS; - - /* Rule #6: Otherwise class SSE is used. */ - return X86_64_SSE_CLASS; -} - -/* Classify the argument of type TYPE and mode MODE. - CLASSES will be filled by the register class used to pass each word - of the operand. The number of words is returned. In case the parameter - should be passed in memory, 0 is returned. As a special case for zero - sized containers, classes[0] will be NO_CLASS and 1 is returned. - - See the x86-64 PS ABI for details. -*/ -static int -classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_class classes[], int &rByteOffset ) -{ - /* First, align to the right place. */ - rByteOffset = ALIGN( rByteOffset, pTypeRef->pType->nAlignment ); - - switch ( pTypeRef->eTypeClass ) - { - case typelib_TypeClass_VOID: - classes[0] = X86_64_NO_CLASS; - return 1; - case typelib_TypeClass_CHAR: - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_ENUM: - if ( ( rByteOffset % 8 + pTypeRef->pType->nSize ) <= 4 ) - classes[0] = X86_64_INTEGERSI_CLASS; - else - classes[0] = X86_64_INTEGER_CLASS; - return 1; - case typelib_TypeClass_FLOAT: - if ( ( rByteOffset % 8 ) == 0 ) - classes[0] = X86_64_SSESF_CLASS; - else - classes[0] = X86_64_SSE_CLASS; - return 1; - case typelib_TypeClass_DOUBLE: - classes[0] = X86_64_SSEDF_CLASS; - return 1; - /*case LONGDOUBLE: - classes[0] = X86_64_X87_CLASS; - classes[1] = X86_64_X87UP_CLASS; - return 2;*/ - case typelib_TypeClass_STRING: - case typelib_TypeClass_TYPE: - case typelib_TypeClass_ANY: - case typelib_TypeClass_TYPEDEF: - case typelib_TypeClass_UNION: - case typelib_TypeClass_SEQUENCE: - case typelib_TypeClass_ARRAY: - case typelib_TypeClass_INTERFACE: - return 0; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef ); - - const int UNITS_PER_WORD = 8; - int words = ( pTypeDescr->nSize + UNITS_PER_WORD - 1 ) / UNITS_PER_WORD; - enum x86_64_reg_class subclasses[MAX_CLASSES]; - - /* If the struct is larger than 16 bytes, pass it on the stack. */ - if ( pTypeDescr->nSize > 16 ) - { - TYPELIB_DANGER_RELEASE( pTypeDescr ); - return 0; - } - - for ( int i = 0; i < words; i++ ) - classes[i] = X86_64_NO_CLASS; - - const typelib_CompoundTypeDescription *pStruct = reinterpret_cast<const typelib_CompoundTypeDescription*>( pTypeDescr ); - - /* Merge the fields of structure. */ - for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember ) - { - typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ]; - - int num = classify_argument( pTypeInStruct, subclasses, rByteOffset ); - - if ( num == 0 ) - { - TYPELIB_DANGER_RELEASE( pTypeDescr ); - return 0; - } - - for ( int i = 0; i < num; i++ ) - { - int pos = rByteOffset / 8; - classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] ); - } - - if ( pTypeInStruct->eTypeClass != typelib_TypeClass_STRUCT ) - rByteOffset = pStruct->pMemberOffsets[ nMember ]; - } - - TYPELIB_DANGER_RELEASE( pTypeDescr ); - - /* Final merger cleanup. */ - for ( int i = 0; i < words; i++ ) - { - /* If one class is MEMORY, everything should be passed in - memory. */ - if ( classes[i] == X86_64_MEMORY_CLASS ) - return 0; - - /* The X86_64_SSEUP_CLASS should be always preceded by - X86_64_SSE_CLASS. */ - if ( classes[i] == X86_64_SSEUP_CLASS - && ( i == 0 || classes[i - 1] != X86_64_SSE_CLASS ) ) - classes[i] = X86_64_SSE_CLASS; - - /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */ - if ( classes[i] == X86_64_X87UP_CLASS - && ( i == 0 || classes[i - 1] != X86_64_X87_CLASS ) ) - classes[i] = X86_64_SSE_CLASS; - } - return words; - } - - default: -#if OSL_DEBUG_LEVEL > 1 - OSL_TRACE( "Unhandled case: pType->eTypeClass == %d\n", pTypeRef->eTypeClass ); -#endif - OSL_ASSERT(0); - } - return 0; /* Never reached. */ -} - -/* Examine the argument and return set number of register required in each - class. Return 0 iff parameter should be passed in memory. */ -bool x86_64::examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ) -{ - enum x86_64_reg_class classes[MAX_CLASSES]; - int offset = 0; - int n; - - n = classify_argument( pTypeRef, classes, offset ); - - if ( n == 0 ) - return false; - - nUsedGPR = 0; - nUsedSSE = 0; - for ( n--; n >= 0; n-- ) - switch ( classes[n] ) - { - case X86_64_INTEGER_CLASS: - case X86_64_INTEGERSI_CLASS: - nUsedGPR++; - break; - case X86_64_SSE_CLASS: - case X86_64_SSESF_CLASS: - case X86_64_SSEDF_CLASS: - nUsedSSE++; - break; - case X86_64_NO_CLASS: - case X86_64_SSEUP_CLASS: - break; - case X86_64_X87_CLASS: - case X86_64_X87UP_CLASS: - if ( !bInReturn ) - return false; - break; - default: -#if OSL_DEBUG_LEVEL > 1 - OSL_TRACE( "Unhandled case: classes[n] == %d\n", classes[n] ); -#endif - OSL_ASSERT(0); - } - return true; -} - -bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) -{ - int g, s; - - return examine_argument( pTypeRef, true, g, s ) == 0; -} - -void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ) -{ - enum x86_64_reg_class classes[MAX_CLASSES]; - int offset = 0; - int n; - - n = classify_argument( pTypeRef, classes, offset ); - - sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct ); - for ( n--; n >= 0; n-- ) - switch ( classes[n] ) - { - case X86_64_INTEGER_CLASS: - case X86_64_INTEGERSI_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pGPR++ ); - break; - case X86_64_SSE_CLASS: - case X86_64_SSESF_CLASS: - case X86_64_SSEDF_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pSSE++ ); - break; - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx deleted file mode 100644 index 6d40eafb1c0c..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ -#define _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ - -// This is an implementation of the x86-64 ABI as described in 'System V -// Application Binary Interface, AMD64 Architecture Processor Supplement' -// (http://www.x86-64.org/documentation/abi-0.95.pdf) - -#include <typelib/typedescription.hxx> - -namespace x86_64 -{ - -/* 6 general purpose registers are used for parameter passing */ -const sal_uInt32 MAX_GPR_REGS = 6; - -/* 8 SSE registers are used for parameter passing */ -const sal_uInt32 MAX_SSE_REGS = 8; - -/* Count number of required registers. - - Examine the argument and return set number of register required in each - class. - - Return false iff parameter should be passed in memory. -*/ -bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ); - -/** Does function that returns this type use a hidden parameter, or registers? - - The value can be returned either in a hidden 1st parameter (which is a - pointer to a structure allocated by the caller), or in registers (rax, rdx - for the integers, xmm0, xmm1 for the floating point numbers). -*/ -bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ); - -void fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ); - -} // namespace x86_64 - -#endif // _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s deleted file mode 100644 index 736230705d5a..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s +++ /dev/null @@ -1,93 +0,0 @@ - .text - .align 2 -.globl privateSnippetExecutor - .type privateSnippetExecutor, @function -privateSnippetExecutor: -.LFB3: - pushq %rbp -.LCFI0: - movq %rsp, %rbp -.LCFI1: - subq $160, %rsp -.LCFI2: - movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex - - movq %rdi, -112(%rbp) # Save GP registers - movq %rsi, -104(%rbp) - movq %rdx, -96(%rbp) - movq %rcx, -88(%rbp) - movq %r8 , -80(%rbp) - movq %r9 , -72(%rbp) - - movsd %xmm0, -64(%rbp) # Save FP registers - movsd %xmm1, -56(%rbp) - movsd %xmm2, -48(%rbp) - movsd %xmm3, -40(%rbp) - movsd %xmm4, -32(%rbp) - movsd %xmm5, -24(%rbp) - movsd %xmm6, -16(%rbp) - movsd %xmm7, -8(%rbp) - - leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn - leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw - leaq -64(%rbp), %rcx # 4th param: void ** fpreg - leaq -112(%rbp), %rdx # 3rd param: void ** gpreg - movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset - movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex - - call cpp_vtable_call - - cmp $10, %rax # typelib_TypeClass_FLOAT - je .Lfloat - cmp $11, %rax # typelib_TypeClass_DOUBLE - je .Lfloat - - movq -144(%rbp), %rax # Return value (int case) - jmp .Lfinish -.Lfloat: - movlpd -144(%rbp), %xmm0 # Return value (float/double case) - -.Lfinish: - leave - ret -.LFE3: - .size privateSnippetExecutor, .-privateSnippetExecutor - .section .eh_frame,"a",@progbits -.Lframe1: - .long .LECIE1-.LSCIE1 -.LSCIE1: - .long 0x0 - .byte 0x1 - .string "zR" - .uleb128 0x1 - .sleb128 -8 - .byte 0x10 - .uleb128 0x1 - .byte 0x1b - .byte 0xc - .uleb128 0x7 - .uleb128 0x8 - .byte 0x90 - .uleb128 0x1 - .align 8 -.LECIE1: -.LSFDE1: - .long .LEFDE1-.LASFDE1 -.LASFDE1: - .long .LASFDE1-.Lframe1 - .long .LFB3-. - .long .LFE3-.LFB3 - .uleb128 0x0 - .byte 0x4 - .long .LCFI0-.LFB3 - .byte 0xe - .uleb128 0x10 - .byte 0x86 - .uleb128 0x2 - .byte 0x4 - .long .LCFI1-.LCFI0 - .byte 0xd - .uleb128 0x6 - .align 8 -.LEFDE1: - .section .note.GNU-stack,"",@progbits diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx deleted file mode 100644 index dcb45eaae62e..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx +++ /dev/null @@ -1,544 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <hash_map> - -#include <rtl/alloc.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> -#include <typelib/typedescription.hxx> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/vtablefactory.hxx" - -#include "abi.hxx" -#include "share.hxx" - -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -//================================================================================================== - -// Perform the UNO call -// -// We must convert the paramaters stored in gpreg, fpreg and ovrflw to UNO -// arguments and call pThis->getUnoI()->pDispatcher. -// -// gpreg: [ret *], this, [gpr params] -// fpreg: [fpr params] -// ovrflw: [gpr or fpr params (properly aligned)] -// -// [ret *] is present when we are returning a structure bigger than 16 bytes -// Simple types are returned in rax, rdx (int), or xmm0, xmm1 (fp). -// Similarly structures <= 16 bytes are in rax, rdx, xmm0, xmm1 as necessary. -static typelib_TypeClass cpp2uno_call( - bridges::cpp_uno::shared::CppInterfaceProxy * pThis, - const typelib_TypeDescription * pMemberTypeDescr, - typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return - sal_Int32 nParams, typelib_MethodParameter * pParams, - void ** gpreg, void ** fpreg, void ** ovrflw, - sal_uInt64 * pRegisterReturn /* space for register return */ ) -{ - int nr_gpr = 0; //number of gpr registers used - int nr_fpr = 0; //number of fpr regsiters used - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - if (pReturnTypeRef) - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - - void * pUnoReturn = 0; - void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need - - if ( pReturnTypeDescr ) - { - if ( x86_64::return_in_hidden_param( pReturnTypeRef ) ) - { - pCppReturn = *gpreg++; - nr_gpr++; - - pUnoReturn = ( bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pCppReturn ); // direct way - } - else - pUnoReturn = pRegisterReturn; // direct way for simple types - } - - // pop this - gpreg++; - nr_gpr++; - - // stack space - // parameters - void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); - void ** pCppArgs = pUnoArgs + nParams; - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - int nUsedGPR = 0; - int nUsedSSE = 0; - bool bFitsRegisters = x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE ); - if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value - { - // Simple types must fit exactly one register on x86_64 - OSL_ASSERT( bFitsRegisters && ( ( nUsedSSE == 1 && nUsedGPR == 0 ) || ( nUsedSSE == 0 && nUsedGPR == 1 ) ) ); - - if ( nUsedSSE == 1 ) - { - if ( nr_fpr < x86_64::MAX_SSE_REGS ) - { - pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++; - nr_fpr++; - } - else - pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++; - } - else if ( nUsedGPR == 1 ) - { - if ( nr_gpr < x86_64::MAX_GPR_REGS ) - { - pCppArgs[nPos] = pUnoArgs[nPos] = gpreg++; - nr_gpr++; - } - else - pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++; - } - - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // struct <= 16 bytes || ptr to complex value || ref - { - void *pCppStack; - char pTmpStruct[16]; - - if ( bFitsRegisters && !rParam.bOut && - ( pParamTypeDescr->eTypeClass == typelib_TypeClass_STRUCT || - pParamTypeDescr->eTypeClass == typelib_TypeClass_EXCEPTION ) ) - { - if ( ( nr_gpr + nUsedGPR <= x86_64::MAX_GPR_REGS ) && ( nr_fpr + nUsedSSE <= x86_64::MAX_SSE_REGS ) ) - { - x86_64::fill_struct( rParam.pTypeRef, gpreg, fpreg, pTmpStruct ); -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "nUsedGPR == %d, nUsedSSE == %d, pTmpStruct[0] == 0x%x, pTmpStruct[1] == 0x%x, **gpreg == 0x%lx\n", - nUsedGPR, nUsedSSE, pTmpStruct[0], pTmpStruct[1], *(sal_uInt64*)*gpreg ); -#endif - - pCppArgs[nPos] = pCppStack = reinterpret_cast<void *>( pTmpStruct ); - gpreg += nUsedGPR; - fpreg += nUsedSSE; - } - else - pCppArgs[nPos] = pCppStack = *ovrflw++; - } - else if ( nr_gpr < x86_64::MAX_GPR_REGS ) - { - pCppArgs[nPos] = pCppStack = *gpreg++; - nr_gpr++; - } - else - pCppArgs[nPos] = pCppStack = *ovrflw++; - - if (! rParam.bIn) // is pure out - { - // uno out is unconstructed mem! - pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); - pTempIndizes[nTempIndizes] = nPos; - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else if ( bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ) ) // is in/inout - { - uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pCppStack, pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pUnoArgs[nPos] = pCppStack; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - } - - // ExceptionHolder - uno_Any aUnoExc; // Any will be constructed by callee - uno_Any * pUnoExc = &aUnoExc; - - // invoke uno dispatch call - (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); - - // in case an exception occured... - if ( pUnoExc ) - { - // destruct temporary in/inout params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - - if (pParams[nIndex].bIn) // is in/inout => was constructed - uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - - CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any - // is here for dummy - return typelib_TypeClass_VOID; - } - else // else no exception occured... - { - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if ( pParams[nIndex].bOut ) // inout/out - { - // convert and assign - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - } - // destroy temp uno param - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return - if ( pCppReturn ) // has complex return - { - if ( pUnoReturn != pCppReturn ) // needs reconversion - { - uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - // destroy temp uno return - uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); - } - // complex return ptr is set to return reg - *(void **)pRegisterReturn = pCppReturn; - } - if ( pReturnTypeDescr ) - { - typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass; - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - return eRet; - } - else - return typelib_TypeClass_VOID; - } -} - - -//================================================================================================== -extern "C" typelib_TypeClass cpp_vtable_call( - sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, - void ** gpreg, void ** fpreg, void ** ovrflw, - sal_uInt64 * pRegisterReturn /* space for register return */ ) -{ - // gpreg: [ret *], this, [other gpr params] - // fpreg: [fpr params] - // ovrflw: [gpr or fpr params (properly aligned)] - void * pThis; - if ( nFunctionIndex & 0x80000000 ) - { - nFunctionIndex &= 0x7fffffff; - pThis = gpreg[1]; - } - else - { - pThis = gpreg[0]; - } - pThis = static_cast<char *>( pThis ) - nVtableOffset; - - bridges::cpp_uno::shared::CppInterfaceProxy * pCppI = - bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( pThis ); - - typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); - - OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!\n" ); - if ( nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex ) - { - throw RuntimeException( OUString::createFromAscii("illegal vtable index!"), - reinterpret_cast<XInterface *>( pCppI ) ); - } - - // determine called method - sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!\n" ); - - TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); - - typelib_TypeClass eRet; - switch ( aMemberDescr.get()->eTypeClass ) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - typelib_TypeDescriptionReference *pAttrTypeRef = - reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( aMemberDescr.get() )->pAttributeTypeRef; - - if ( pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex ) - { - // is GET method - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), pAttrTypeRef, - 0, 0, // no params - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - else - { - // is SET method - typelib_MethodParameter aParam; - aParam.pTypeRef = pAttrTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), - 0, // indicates void return - 1, &aParam, - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // is METHOD - switch ( nFunctionIndex ) - { - case 1: // acquire() - pCppI->acquireProxy(); // non virtual call! - eRet = typelib_TypeClass_VOID; - break; - case 2: // release() - pCppI->releaseProxy(); // non virtual call! - eRet = typelib_TypeClass_VOID; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast<Type *>( gpreg[2] )->getTypeLibType() ); - if ( pTD ) - { - XInterface * pInterface = 0; - (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface) - ( pCppI->getBridge()->getCppEnv(), - (void **)&pInterface, - pCppI->getOid().pData, - reinterpret_cast<typelib_InterfaceTypeDescription *>( pTD ) ); - - if ( pInterface ) - { - ::uno_any_construct( reinterpret_cast<uno_Any *>( gpreg[0] ), - &pInterface, pTD, cpp_acquire ); - - pInterface->release(); - TYPELIB_DANGER_RELEASE( pTD ); - - reinterpret_cast<void **>( pRegisterReturn )[0] = gpreg[0]; - eRet = typelib_TypeClass_ANY; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - { - typelib_InterfaceMethodTypeDescription *pMethodTD = - reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( aMemberDescr.get() ); - - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), - pMethodTD->pReturnTypeRef, - pMethodTD->nParams, - pMethodTD->pParams, - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - } - break; - } - default: - { - throw RuntimeException( OUString::createFromAscii("no member description found!"), - reinterpret_cast<XInterface *>( pCppI ) ); - // is here for dummy - eRet = typelib_TypeClass_VOID; - } - } - - return eRet; -} - -//================================================================================================== -extern "C" void privateSnippetExecutor( ... ); - -const int codeSnippetSize = 24; - -// Generate a trampoline that redirects method calls to -// privateSnippetExecutor(). -// -// privateSnippetExecutor() saves all the registers that are used for -// parameter passing on x86_64, and calls the cpp_vtable_call(). -// When it returns, privateSnippetExecutor() sets the return value. -// -// Note: The code snippet we build here must not create a stack frame, -// otherwise the UNO exceptions stop working thanks to non-existing -// unwinding info. -unsigned char * codeSnippet( unsigned char * code, - sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, - bool bHasHiddenParam ) SAL_THROW( () ) -{ - sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex ); - - if ( bHasHiddenParam ) - nOffsetAndIndex |= 0x80000000; - - // movq $<nOffsetAndIndex>, %r10 - *reinterpret_cast<sal_uInt16 *>( code ) = 0xba49; - *reinterpret_cast<sal_uInt64 *>( code + 2 ) = nOffsetAndIndex; - - // movq $<address of the privateSnippetExecutor>, %r11 - *reinterpret_cast<sal_uInt16 *>( code + 10 ) = 0xbb49; - *reinterpret_cast<sal_uInt64 *>( code + 12 ) = reinterpret_cast<sal_uInt64>( privateSnippetExecutor ); - - // jmpq *%r11 - *reinterpret_cast<sal_uInt32 *>( code + 20 ) = 0x00e3ff49; - - return code + codeSnippetSize; -} - -//================================================================================================== -struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -{ - return static_cast< Slot * >(block) + 2; -} - -//================================================================================================== -sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( - sal_Int32 slotCount) -{ - return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -} - -//================================================================================================== -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::initializeBlock( - void * block, sal_Int32 slotCount) -{ - Slot * slots = mapBlockToVtable(block); - slots[-2].fn = 0; - slots[-1].fn = 0; - return slots + slotCount; -} - -//================================================================================================== - -unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( - Slot ** slots, unsigned char * code, - typelib_InterfaceTypeDescription const * type, sal_Int32 nFunctionOffset, - sal_Int32 functionCount, sal_Int32 nVtableOffset ) -{ - (*slots) -= functionCount; - Slot * s = *slots; - - for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos ) - { - typelib_TypeDescription * pTD = 0; - - TYPELIB_DANGER_GET( &pTD, type->ppMembers[ nPos ] ); - OSL_ASSERT( pTD ); - - if ( typelib_TypeClass_INTERFACE_ATTRIBUTE == pTD->eTypeClass ) - { - typelib_InterfaceAttributeTypeDescription *pAttrTD = - reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( pTD ); - - // get method - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, - x86_64::return_in_hidden_param( pAttrTD->pAttributeTypeRef ) ); - - if ( ! pAttrTD->bReadOnly ) - { - // set method - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, false ); - } - } - else if ( typelib_TypeClass_INTERFACE_METHOD == pTD->eTypeClass ) - { - typelib_InterfaceMethodTypeDescription *pMethodTD = - reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( pTD ); - - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, - x86_64::return_in_hidden_param( pMethodTD->pReturnTypeRef ) ); - } - else - OSL_ASSERT( false ); - - TYPELIB_DANGER_RELEASE( pTD ); - } - return code; -} - -//================================================================================================== -void bridges::cpp_uno::shared::VtableFactory::flushCode( - unsigned char const *, unsigned char const * ) -{ -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx deleted file mode 100644 index d6bfa3abccce..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <dlfcn.h> -#include <cxxabi.h> -#include <hash_map> -#include <sys/param.h> - -#include <rtl/strbuf.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <typelib/typedescription.hxx> -#include <uno/any2.h> - -#include "share.hxx" - - -using namespace ::std; -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; -using namespace ::__cxxabiv1; - - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ) -{ -} - -//================================================================================================== -static OUString toUNOname( char const * p ) SAL_THROW( () ) -{ -#if OSL_DEBUG_LEVEL > 1 - char const * start = p; -#endif - - // example: N3com3sun4star4lang24IllegalArgumentExceptionE - - OUStringBuffer buf( 64 ); - OSL_ASSERT( 'N' == *p ); - ++p; // skip N - - while ('E' != *p) - { - // read chars count - long n = (*p++ - '0'); - while ('0' <= *p && '9' >= *p) - { - n *= 10; - n += (*p++ - '0'); - } - buf.appendAscii( p, n ); - p += n; - if ('E' != *p) - buf.append( (sal_Unicode)'.' ); - } - -#if OSL_DEBUG_LEVEL > 1 - OUString ret( buf.makeStringAndClear() ); - OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); - return ret; -#else - return buf.makeStringAndClear(); -#endif -} - -//================================================================================================== -class RTTI -{ - typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; - - Mutex m_mutex; - t_rtti_map m_rttis; - t_rtti_map m_generatedRttis; - - void * m_hApp; - -public: - RTTI() SAL_THROW( () ); - ~RTTI() SAL_THROW( () ); - - type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -RTTI::RTTI() SAL_THROW( () ) -#if __FreeBSD_version < 602103 - : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) -#else - : m_hApp( dlopen( 0, RTLD_LAZY ) ) -#endif -{ -} -//__________________________________________________________________________________________________ -RTTI::~RTTI() SAL_THROW( () ) -{ - dlclose( m_hApp ); -} - -//__________________________________________________________________________________________________ -type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -{ - type_info * rtti; - - OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; - - MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); - if (iFind == m_rttis.end()) - { - // RTTI symbol - OStringBuffer buf( 64 ); - buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); - sal_Int32 index = 0; - do - { - OUString token( unoName.getToken( 0, '.', index ) ); - buf.append( token.getLength() ); - OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); - buf.append( c_token ); - } - while (index >= 0); - buf.append( 'E' ); - - OString symName( buf.makeStringAndClear() ); -#if __FreeBSD_version < 602103 /* #i22253# */ - rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); -#else - rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -#endif - - if (rtti) - { - pair< t_rtti_map::iterator, bool > insertion( - m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); - } - else - { - // try to lookup the symbol in the generated rtti map - t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); - if (iFind == m_generatedRttis.end()) - { - // we must generate it ! - // symbol and rtti-name is nearly identical, - // the symbol is prefixed with _ZTI - char const * rttiName = symName.getStr() +4; -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr,"generated rtti for %s\n", rttiName ); -#endif - if (pTypeDescr->pBaseTypeDescription) - { - // ensure availability of base - type_info * base_rtti = getRTTI( - (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); - rtti = new __si_class_type_info( - strdup( rttiName ), (__class_type_info *)base_rtti ); - } - else - { - // this class has no base class - rtti = new __class_type_info( strdup( rttiName ) ); - } - - pair< t_rtti_map::iterator, bool > insertion( - m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); - } - else // taking already generated rtti - { - rtti = iFind->second; - } - } - } - else - { - rtti = iFind->second; - } - - return rtti; -} - -//-------------------------------------------------------------------------------------------------- -static void deleteException( void * pExc ) -{ - __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); - typelib_TypeDescription * pTD = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); - ::typelib_typedescription_getByName( &pTD, unoName.pData ); - OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); - if (pTD) - { - ::uno_destructData( pExc, pTD, cpp_release ); - ::typelib_typedescription_release( pTD ); - } -} - -//================================================================================================== -void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -{ -#if OSL_DEBUG_LEVEL > 1 - OString cstr( - OUStringToOString( - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() ); -#endif - void * pCppExc; - type_info * rtti; - - { - // construct cpp exception object - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); - OSL_ASSERT( pTypeDescr ); - if (! pTypeDescr) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - - pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); - ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); - - // destruct uno exception - ::uno_any_destruct( pUnoExc, 0 ); - // avoiding locked counts - static RTTI * s_rtti = 0; - if (! s_rtti) - { - MutexGuard guard( Mutex::getGlobalMutex() ); - if (! s_rtti) - { -#ifdef LEAK_STATIC_DATA - s_rtti = new RTTI(); -#else - static RTTI rtti_data; - s_rtti = &rtti_data; -#endif - } - } - rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); - if (! rtti) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - } - - __cxa_throw( pCppExc, rtti, deleteException ); -} - -//================================================================================================== -void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) -{ - if (! header) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ), - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - return; - } - - typelib_TypeDescription * pExcTypeDescr = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); -#if OSL_DEBUG_LEVEL > 1 - OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() ); -#endif - typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); - if (0 == pExcTypeDescr) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName, - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - } - else - { - // construct uno exception any - uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); - typelib_typedescription_release( pExcTypeDescr ); - } -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk deleted file mode 100644 index 9c37d6cd8227..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk +++ /dev/null @@ -1,80 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=bridges -TARGET=gcc3_uno -LIBTARGET=no -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDXgcc3" - -.IF "$(cppu_no_leak)" == "" -CFLAGS += -DLEAK_STATIC_DATA -.ENDIF - -# In case someone enabled the non-standard -fomit-frame-pointer which does not -# work with the .cxx sources in this directory: -CFLAGSCXX += -fno-omit-frame-pointer - -SLOFILES= \ - $(SLO)$/abi.obj \ - $(SLO)$/except.obj \ - $(SLO)$/cpp2uno.obj \ - $(SLO)$/uno2cpp.obj \ - $(SLO)$/call.obj - -SHL1TARGET= $(TARGET) - -SHL1DEF=$(MISC)$/$(SHL1TARGET).def -SHL1IMPLIB=i$(TARGET) -SHL1VERSIONMAP=..$/..$/bridge_exports.map -SHL1RPATH=URELIB - -SHL1OBJS = $(SLOFILES) -SHL1LIBS = $(SLB)$/cpp_uno_shared.lib - -SHL1STDLIBS= \ - $(CPPULIB) \ - $(SALLIB) - -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - -$(SLO)$/%.obj: %.s - $(CC) -c -o $(SLO)$/$(@:b).o $< - touch $@ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx deleted file mode 100644 index da2367ad172b..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/mapping.h" - -#include <typeinfo> -#include <exception> -#include <cstddef> - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ); - -// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h - -struct _Unwind_Exception -{ - unsigned exception_class __attribute__((__mode__(__DI__))); - void * exception_cleanup; - unsigned private_1 __attribute__((__mode__(__word__))); - unsigned private_2 __attribute__((__mode__(__word__))); -} __attribute__((__aligned__)); - -struct __cxa_exception -{ - ::std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - - ::std::unexpected_handler unexpectedHandler; - ::std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void *catchTemp; - void *adjustedPtr; - - _Unwind_Exception unwindHeader; -}; - -extern "C" void *__cxa_allocate_exception( - std::size_t thrown_size ) throw(); -extern "C" void __cxa_throw ( - void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); - -struct __cxa_eh_globals -{ - __cxa_exception *caughtExceptions; - unsigned int uncaughtExceptions; -}; -extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); - -// ----- - -//================================================================================================== -void raiseException( - uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -//================================================================================================== -void fillUnoException( - __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx deleted file mode 100644 index d4885fd06274..000000000000 --- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx +++ /dev/null @@ -1,561 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <rtl/alloc.h> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> - -#include <bridges/cpp_uno/shared/bridge.hxx> -#include <bridges/cpp_uno/shared/types.hxx> -#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -#include "bridges/cpp_uno/shared/vtables.hxx" - -#include "abi.hxx" -#include "share.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -//================================================================================================== -static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, - sal_uInt64 *pStack, sal_uInt32 nStack, - sal_uInt64 *pGPR, sal_uInt32 nGPR, - double *pFPR, sal_uInt32 nFPR) __attribute__((noinline)); - -static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, - sal_uInt64 *pStack, sal_uInt32 nStack, - sal_uInt64 *pGPR, sal_uInt32 nGPR, - double *pFPR, sal_uInt32 nFPR) -{ -#if OSL_DEBUG_LEVEL > 1 - // Let's figure out what is really going on here - { - fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR ); - for ( int i = 0; i < nGPR; ++i ) - fprintf( stderr, "0x%lx, ", pGPR[i] ); - fprintf( stderr, "\nFPR's (%d): ", nFPR ); - for ( int i = 0; i < nFPR; ++i ) - fprintf( stderr, "%f, ", pFPR[i] ); - fprintf( stderr, "\nStack (%d): ", nStack ); - for ( int i = 0; i < nStack; ++i ) - fprintf( stderr, "0x%lx, ", pStack[i] ); - fprintf( stderr, "\n" ); - } -#endif - - // The call instruction within the asm section of callVirtualMethod may throw - // exceptions. So that the compiler handles this correctly, it is important - // that (a) callVirtualMethod might call dummy_can_throw_anything (although this - // never happens at runtime), which in turn can throw exceptions, and (b) - // callVirtualMethod is not inlined at its call site (so that any exceptions are - // caught which are thrown from the instruction calling callVirtualMethod): - if ( !pThis ) - CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything( "xxx" ); // address something - - // Should not happen, but... - if ( nFPR > x86_64::MAX_SSE_REGS ) - nFPR = x86_64::MAX_SSE_REGS; - if ( nGPR > x86_64::MAX_GPR_REGS ) - nGPR = x86_64::MAX_GPR_REGS; - - // Get pointer to method - sal_uInt64 pMethod = *((sal_uInt64 *)pThis); - pMethod += 8 * nVtableIndex; - pMethod = *((sal_uInt64 *)pMethod); - - // Load parameters to stack, if necessary - if ( nStack ) - { - // 16-bytes aligned - sal_uInt32 nStackBytes = ( ( nStack + 1 ) >> 1 ) * 16; - sal_uInt64 *pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes ); - memcpy( pCallStack, pStack, nStackBytes ); - } - - // Return values - sal_uInt64 rax; - sal_uInt64 rdx; - double xmm0; - - asm volatile ( - - // Fill the xmm registers - "movq %2, %%rax\n\t" - - "movsd (%%rax), %%xmm0\n\t" - "movsd 8(%%rax), %%xmm1\n\t" - "movsd 16(%%rax), %%xmm2\n\t" - "movsd 24(%%rax), %%xmm3\n\t" - "movsd 32(%%rax), %%xmm4\n\t" - "movsd 40(%%rax), %%xmm5\n\t" - "movsd 48(%%rax), %%xmm6\n\t" - "movsd 56(%%rax), %%xmm7\n\t" - - // Fill the general purpose registers - "movq %1, %%rax\n\t" - - "movq (%%rax), %%rdi\n\t" - "movq 8(%%rax), %%rsi\n\t" - "movq 16(%%rax), %%rdx\n\t" - "movq 24(%%rax), %%rcx\n\t" - "movq 32(%%rax), %%r8\n\t" - "movq 40(%%rax), %%r9\n\t" - - // Perform the call - "movq %0, %%r11\n\t" - "movq %3, %%rax\n\t" - "call *%%r11\n\t" - - // Fill the return values - "movq %%rax, %4\n\t" - "movq %%rdx, %5\n\t" - "movsd %%xmm0, %6\n\t" - : - : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ), - "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ) - : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11" - ); - - switch (pReturnTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *reinterpret_cast<sal_uInt64 *>( pRegisterReturn ) = rax; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_ENUM: - *reinterpret_cast<sal_uInt32 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt32*>( &rax ); - break; - case typelib_TypeClass_CHAR: - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *reinterpret_cast<sal_uInt16 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt16*>( &rax ); - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - *reinterpret_cast<sal_uInt8 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt8*>( &rax ); - break; - case typelib_TypeClass_FLOAT: - case typelib_TypeClass_DOUBLE: - *reinterpret_cast<double *>( pRegisterReturn ) = xmm0; - break; - default: - { - sal_Int32 const nRetSize = pReturnTypeDescr->nSize; - if (bSimpleReturn && nRetSize <= 16 && nRetSize > 0) - { - if (nRetSize > 8) - static_cast<sal_uInt64 *>(pRegisterReturn)[1] = rdx; - static_cast<sal_uInt64 *>(pRegisterReturn)[0] = rax; - } - break; - } - } -} - -//================================================================================================== - -// Macros for easier insertion of values to registers or stack -// pSV - pointer to the source -// nr - order of the value [will be increased if stored to register] -// pFPR, pGPR - pointer to the registers -// pDS - pointer to the stack [will be increased if stored here] - -// The value in %xmm register is already prepared to be retrieved as a float, -// thus we treat float and double the same -#define INSERT_FLOAT_DOUBLE( pSV, nr, pFPR, pDS ) \ - if ( nr < x86_64::MAX_SSE_REGS ) \ - pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim! - -#define INSERT_INT64( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); - -#define INSERT_INT32( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV ); - -#define INSERT_INT16( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV ); - -#define INSERT_INT8( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV ); - -//================================================================================================== - -static void cpp_call( - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, - bridges::cpp_uno::shared::VtableSlot aVtableSlot, - typelib_TypeDescriptionReference * pReturnTypeRef, - sal_Int32 nParams, typelib_MethodParameter * pParams, - void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -{ - // Maxium space for [complex ret ptr], values | ptr ... - // (but will be used less - some of the values will be in pGPR and pFPR) - sal_uInt64 *pStack = (sal_uInt64 *)__builtin_alloca( (nParams + 3) * sizeof(sal_uInt64) ); - sal_uInt64 *pStackStart = pStack; - - sal_uInt64 pGPR[x86_64::MAX_GPR_REGS]; - sal_uInt32 nGPR = 0; - - double pFPR[x86_64::MAX_SSE_REGS]; - sal_uInt32 nFPR = 0; - - // Return - typelib_TypeDescription * pReturnTypeDescr = 0; - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); - - void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion (see below) - - bool bSimpleReturn = true; - if ( pReturnTypeDescr ) - { - if ( x86_64::return_in_hidden_param( pReturnTypeRef ) ) - bSimpleReturn = false; - - if ( bSimpleReturn ) - pCppReturn = pUnoReturn; // direct way for simple types - else - { - // complex return via ptr - pCppReturn = bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )? - __builtin_alloca( pReturnTypeDescr->nSize ) : pUnoReturn; - INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack ); - } - } - - // Push "this" pointer - void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset; - INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack ); - - // Args - void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); - // Indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); - // Type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - { - uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_ENUM: - INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_CHAR: - case typelib_TypeClass_UNSIGNED_SHORT: - INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_FLOAT: - case typelib_TypeClass_DOUBLE: - INSERT_FLOAT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack ); - break; - } - - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - if (! rParam.bIn) // is pure out - { - // cpp out is constructed mem, uno out is not! - uno_constructData( - pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pParamTypeDescr ); - pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) - { - uno_copyAndConvertData( - pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); - - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pCppArgs[nPos] = pUnoArgs[nPos]; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack ); - } - } - - try - { - callVirtualMethod( - pAdjustedThisPtr, aVtableSlot.index, - pCppReturn, pReturnTypeDescr, bSimpleReturn, - pStackStart, ( pStack - pStackStart ), - pGPR, nGPR, - pFPR, nFPR ); - // NO exception occured... - *ppUnoExc = 0; - - // reconvert temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bIn) - { - if (pParams[nIndex].bOut) // inout - { - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - } - else // pure out - { - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return value - if (pCppReturn && pUnoReturn != pCppReturn) - { - uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); - } - } - catch (...) - { - // fill uno exception - fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); - - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - // return type - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } -} - -//================================================================================================== - -namespace bridges { namespace cpp_uno { namespace shared { - -void unoInterfaceProxyDispatch( - uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, - void * pReturn, void * pArgs[], uno_Any ** ppException ) -{ - // is my surrogate - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis - = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI); - typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; - - switch (pMemberDescr->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - // determine vtable call index - sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); - - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceAttributeTypeDescription const * >( - pMemberDescr))); - - if (pReturn) - { - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, - 0, 0, // no params - pReturn, pArgs, ppException ); - } - else - { - // is SET - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - typelib_TypeDescriptionReference * pReturnTypeRef = 0; - OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); - typelib_typedescriptionreference_new( - &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); - - // dependent dispatch - aVtableSlot.index += 1; // get, then set method - cpp_call( - pThis, aVtableSlot, // get, then set method - pReturnTypeRef, - 1, &aParam, - pReturn, pArgs, ppException ); - - typelib_typedescriptionreference_release( pReturnTypeRef ); - } - - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // determine vtable call index - sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); - - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceMethodTypeDescription const * >( - pMemberDescr))); - - switch (aVtableSlot.index) - { - // standard calls - case 1: // acquire uno interface - (*pUnoI->acquire)( pUnoI ); - *ppException = 0; - break; - case 2: // release uno interface - (*pUnoI->release)( pUnoI ); - *ppException = 0; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); - if (pTD) - { - uno_Interface * pInterface = 0; - (*pThis->getBridge()->getUnoEnv()->getRegisteredInterface)( - pThis->getBridge()->getUnoEnv(), - (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pReturn ), - &pInterface, pTD, 0 ); - (*pInterface->release)( pInterface ); - TYPELIB_DANGER_RELEASE( pTD ); - *ppException = 0; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, - pReturn, pArgs, ppException ); - } - break; - } - default: - { - ::com::sun::star::uno::RuntimeException aExc( - OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); - - Type const & rExcType = ::getCppuType( &aExc ); - // binary identical null reference - ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); - } - } -} - -} } } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx index 1c573aa80f5c..69785be506f1 100644 --- a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx @@ -119,7 +119,11 @@ public: }; //__________________________________________________________________________________________________ RTTI::RTTI() SAL_THROW( () ) +#if defined(FREEBSD) && __FreeBSD_version < 702104 + : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) +#else : m_hApp( dlopen( 0, RTLD_LAZY ) ) +#endif { } //__________________________________________________________________________________________________ @@ -154,7 +158,11 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR buf.append( 'E' ); OString symName( buf.makeStringAndClear() ); +#if defined(FREEBSD) && __FreeBSD_version < 702104 /* #i22253# */ + rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); +#else rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); +#endif if (rtti) { diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk index c03a43ce8aba..6e2b7529247f 100644 --- a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk +++ b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk @@ -38,7 +38,10 @@ ENABLE_EXCEPTIONS=TRUE # --- Files -------------------------------------------------------- -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXIgcc3" +.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXIgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCOPENBSDIgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDIgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDIgcc3" .IF "$(cppu_no_leak)" == "" CFLAGS += -DLEAK_STATIC_DATA diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx index 57c9c3caf287..759f28764fa7 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx @@ -119,7 +119,11 @@ public: }; //__________________________________________________________________________________________________ RTTI::RTTI() SAL_THROW( () ) +#if defined(FREEBSD) && __FreeBSD_version < 702104 + : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) +#else : m_hApp( dlopen( 0, RTLD_LAZY ) ) +#endif { } //__________________________________________________________________________________________________ @@ -154,7 +158,11 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR buf.append( 'E' ); OString symName( buf.makeStringAndClear() ); +#if defined(FREEBSD) && __FreeBSD_version < 702104 /* #i22253# */ + rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); +#else rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); +#endif if (rtti) { diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk index 291397147c48..156ca4f27d4a 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk @@ -38,7 +38,10 @@ ENABLE_EXCEPTIONS=TRUE # --- Files -------------------------------------------------------- -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXXgcc3" +.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXXgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCOPENBSDXgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDXgcc3" || \ + "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDXgcc3" .IF "$(cppu_no_leak)" == "" CFLAGS += -DLEAK_STATIC_DATA diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s b/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s deleted file mode 100644 index f345e3a764ac..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s +++ /dev/null @@ -1,268 +0,0 @@ - .text - -.globl privateSnippetExecutorGeneral - .type privateSnippetExecutorGeneral,@function -privateSnippetExecutorGeneral: -.LFBg: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIg0: - movl %esp,%ebp -.LCFIg1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 32bit returnValue - leave - ret -.LFEg: - .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral - -.globl privateSnippetExecutorVoid - .type privateSnippetExecutorVoid,@function -privateSnippetExecutorVoid: -.LFBv: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIv0: - movl %esp,%ebp -.LCFIv1: - pushl $0 # 32bit null pointer (returnValue not used) - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - leave - ret -.LFEv: - .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid - -.globl privateSnippetExecutorHyper - .type privateSnippetExecutorHyper,@function -privateSnippetExecutorHyper: -.LFBh: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIh0: - movl %esp,%ebp -.LCFIh1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 64bit returnValue, lower half - movl 20(%esp),%edx # 64bit returnValue, upper half - leave - ret -.LFEh: - .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper - -.globl privateSnippetExecutorFloat - .type privateSnippetExecutorFloat,@function -privateSnippetExecutorFloat: -.LFBf: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIf0: - movl %esp,%ebp -.LCFIf1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - flds 16(%esp) # 32bit returnValue - leave - ret -.LFEf: - .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat - -.globl privateSnippetExecutorDouble - .type privateSnippetExecutorDouble,@function -privateSnippetExecutorDouble: -.LFBd: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFId0: - movl %esp,%ebp -.LCFId1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - fldl 16(%esp) # 64bit returnValue - leave - ret -.LFEd: - .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble - -.globl privateSnippetExecutorClass - .type privateSnippetExecutorClass,@function -privateSnippetExecutorClass: -.LFBc: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -.LCFIc0: - movl %esp,%ebp -.LCFIc1: - subl $0x4,%esp # 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call cpp_vtable_call - movl 16(%esp),%eax # 32bit returnValue - leave - ret $4 -.LFEc: - .size privateSnippetExecutorClass,.-privateSnippetExecutorClass - - .section .eh_frame,"a",@progbits -.Lframe1: - .long .LECIE1-.LSCIE1 # length -.LSCIE1: - .long 0 # CIE_ID - .byte 1 # version - .string "zR" # augmentation - .uleb128 1 # code_alignment_factor - .sleb128 -4 # data_alignment_factor - .byte 8 # return_address_register - .uleb128 1 # augmentation size 1: - .byte 0x1B # FDE Encoding (pcrel sdata4) - # initial_instructions: - .byte 0x0C # DW_CFA_def_cfa %esp, 4 - .uleb128 4 - .uleb128 4 - .byte 0x88 # DW_CFA_offset ret, 1 - .uleb128 1 - .align 4 -.LECIE1: -.LSFDEg: - .long .LEFDEg-.LASFDEg # length -.LASFDEg: - .long .LASFDEg-.Lframe1 # CIE_pointer - .long .LFBg-. # initial_location - .long .LFEg-.LFBg # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIg0-.LFBg - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIg1-.LCFIg0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEg: -.LSFDEv: - .long .LEFDEv-.LASFDEv # length -.LASFDEv: - .long .LASFDEv-.Lframe1 # CIE_pointer - .long .LFBv-. # initial_location - .long .LFEv-.LFBv # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIv0-.LFBv - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIv1-.LCFIv0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEv: -.LSFDEh: - .long .LEFDEh-.LASFDEh # length -.LASFDEh: - .long .LASFDEh-.Lframe1 # CIE_pointer - .long .LFBh-. # initial_location - .long .LFEh-.LFBh # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIh0-.LFBh - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIh1-.LCFIh0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEh: -.LSFDEf: - .long .LEFDEf-.LASFDEf # length -.LASFDEf: - .long .LASFDEf-.Lframe1 # CIE_pointer - .long .LFBf-. # initial_location - .long .LFEf-.LFBf # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIf0-.LFBf - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIf1-.LCFIf0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEf: -.LSFDEd: - .long .LEFDEd-.LASFDEd # length -.LASFDEd: - .long .LASFDEd-.Lframe1 # CIE_pointer - .long .LFBd-. # initial_location - .long .LFEd-.LFBd # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFId0-.LFBd - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFId1-.LCFId0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEd: -.LSFDEc: - .long .LEFDEc-.LASFDEc # length -.LASFDEc: - .long .LASFDEc-.Lframe1 # CIE_pointer - .long .LFBc-. # initial_location - .long .LFEc-.LFBc # address_range - .uleb128 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIc0-.LFBc - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .uleb128 8 - .byte 0x85 # DW_CFA_offset %ebp, 2 - .uleb128 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long .LCFIc1-.LCFIc0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .uleb128 5 - .align 4 -.LEFDEc: - .section .note.GNU-stack,"",@progbits diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx deleted file mode 100644 index afb3d1434db4..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx +++ /dev/null @@ -1,493 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> -#include <typelib/typedescription.hxx> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/vtablefactory.hxx" - -#include "share.hxx" - -using namespace ::com::sun::star::uno; - -namespace -{ - -//================================================================================================== -void cpp2uno_call( - bridges::cpp_uno::shared::CppInterfaceProxy * pThis, - const typelib_TypeDescription * pMemberTypeDescr, - typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return - sal_Int32 nParams, typelib_MethodParameter * pParams, - void ** pCallStack, - void * pReturnValue ) -{ - // pCallStack: ret, [return ptr], this, params - char * pCppStack = (char *)(pCallStack +1); - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - if (pReturnTypeRef) - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - - void * pUnoReturn = 0; - void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need - - if (pReturnTypeDescr) - { - if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) - { - pUnoReturn = pReturnValue; // direct way for simple types - } - else // complex return via ptr (pCppReturn) - { - pCppReturn = *(void **)pCppStack; - pCppStack += sizeof(void *); - - pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( - pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pCppReturn); // direct way - } - } - // pop this - pCppStack += sizeof( void* ); - - // stack space - OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); - // parameters - void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); - void ** pCppArgs = pUnoArgs + nParams; - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut - && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - // value - { - pCppArgs[nPos] = pCppStack; - pUnoArgs[nPos] = pCppStack; - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_DOUBLE: - pCppStack += sizeof(sal_Int32); // extra long - break; - default: - break; - } - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - pCppArgs[nPos] = *(void **)pCppStack; - - if (! rParam.bIn) // is pure out - { - // uno out is unconstructed mem! - pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); - pTempIndizes[nTempIndizes] = nPos; - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( - pParamTypeDescr )) - { - uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), - *(void **)pCppStack, pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pUnoArgs[nPos] = *(void **)pCppStack; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - pCppStack += sizeof(sal_Int32); // standard parameter length - } - - // ExceptionHolder - uno_Any aUnoExc; // Any will be constructed by callee - uno_Any * pUnoExc = &aUnoExc; - - // invoke uno dispatch call - (*pThis->getUnoI()->pDispatcher)( - pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); - - // in case an exception occured... - if (pUnoExc) - { - // destruct temporary in/inout params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - - if (pParams[nIndex].bIn) // is in/inout => was constructed - uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - - CPPU_CURRENT_NAMESPACE::raiseException( - &aUnoExc, pThis->getBridge()->getUno2Cpp() ); - // has to destruct the any - } - else // else no exception occured... - { - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bOut) // inout/out - { - // convert and assign - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - } - // destroy temp uno param - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return - if (pCppReturn) // has complex return - { - if (pUnoReturn != pCppReturn) // needs reconversion - { - uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - // destroy temp uno return - uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); - } - // complex return ptr is set to eax - *static_cast< void ** >(pReturnValue) = pCppReturn; - } - if (pReturnTypeDescr) - { - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } - } -} - - -//================================================================================================== -extern "C" void cpp_vtable_call( - int nFunctionIndex, int nVtableOffset, void** pCallStack, - void * pReturnValue ) -{ - OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); - - // pCallStack: ret adr, [ret *], this, params - void * pThis; - if( nFunctionIndex & 0x80000000 ) - { - nFunctionIndex &= 0x7fffffff; - pThis = pCallStack[2]; - } - else - { - pThis = pCallStack[1]; - } - pThis = static_cast< char * >(pThis) - nVtableOffset; - bridges::cpp_uno::shared::CppInterfaceProxy * pCppI - = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( - pThis); - - typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); - - OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" ); - if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) - { - throw RuntimeException( - rtl::OUString::createFromAscii("illegal vtable index!"), - (XInterface *)pThis ); - } - - // determine called method - sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" ); - - TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); - - switch (aMemberDescr.get()->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex) - { - // is GET method - cpp2uno_call( - pCppI, aMemberDescr.get(), - ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, - 0, 0, // no params - pCallStack, pReturnValue ); - } - else - { - // is SET method - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - cpp2uno_call( - pCppI, aMemberDescr.get(), - 0, // indicates void return - 1, &aParam, - pCallStack, pReturnValue ); - } - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // is METHOD - switch (nFunctionIndex) - { - case 1: // acquire() - pCppI->acquireProxy(); // non virtual call! - break; - case 2: // release() - pCppI->releaseProxy(); // non virtual call! - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pCallStack[3] )->getTypeLibType() ); - if (pTD) - { - XInterface * pInterface = 0; - (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)( - pCppI->getBridge()->getCppEnv(), - (void **)&pInterface, pCppI->getOid().pData, - (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pCallStack[1] ), - &pInterface, pTD, cpp_acquire ); - pInterface->release(); - TYPELIB_DANGER_RELEASE( pTD ); - *static_cast< void ** >(pReturnValue) = pCallStack[1]; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - cpp2uno_call( - pCppI, aMemberDescr.get(), - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, - ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, - pCallStack, pReturnValue ); - } - break; - } - default: - { - throw RuntimeException( - rtl::OUString::createFromAscii("no member description found!"), - (XInterface *)pThis ); - } - } -} - -//================================================================================================== -extern "C" void privateSnippetExecutorGeneral(); -extern "C" void privateSnippetExecutorVoid(); -extern "C" void privateSnippetExecutorHyper(); -extern "C" void privateSnippetExecutorFloat(); -extern "C" void privateSnippetExecutorDouble(); -extern "C" void privateSnippetExecutorClass(); -extern "C" typedef void (*PrivateSnippetExecutor)(); - -int const codeSnippetSize = 16; - -unsigned char * codeSnippet( - unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset, - typelib_TypeClass returnTypeClass) -{ - if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) { - functionIndex |= 0x80000000; - } - PrivateSnippetExecutor exec; - switch (returnTypeClass) { - case typelib_TypeClass_VOID: - exec = privateSnippetExecutorVoid; - break; - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - exec = privateSnippetExecutorHyper; - break; - case typelib_TypeClass_FLOAT: - exec = privateSnippetExecutorFloat; - break; - case typelib_TypeClass_DOUBLE: - exec = privateSnippetExecutorDouble; - break; - case typelib_TypeClass_STRING: - case typelib_TypeClass_TYPE: - case typelib_TypeClass_ANY: - case typelib_TypeClass_SEQUENCE: - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_INTERFACE: - exec = privateSnippetExecutorClass; - break; - default: - exec = privateSnippetExecutorGeneral; - break; - } - unsigned char * p = code; - OSL_ASSERT(sizeof (sal_Int32) == 4); - // mov function_index, %eax: - *p++ = 0xB8; - *reinterpret_cast< sal_Int32 * >(p) = functionIndex; - p += sizeof (sal_Int32); - // mov vtable_offset, %edx: - *p++ = 0xBA; - *reinterpret_cast< sal_Int32 * >(p) = vtableOffset; - p += sizeof (sal_Int32); - // jmp privateSnippetExecutor: - *p++ = 0xE9; - *reinterpret_cast< sal_Int32 * >(p) - = ((unsigned char *) exec) - p - sizeof (sal_Int32); - p += sizeof (sal_Int32); - OSL_ASSERT(p - code <= codeSnippetSize); - return code + codeSnippetSize; -} - -} - -struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -{ - return static_cast< Slot * >(block) + 2; -} - -sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( - sal_Int32 slotCount) -{ - return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -} - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::initializeBlock( - void * block, sal_Int32 slotCount) -{ - Slot * slots = mapBlockToVtable(block); - slots[-2].fn = 0; - slots[-1].fn = 0; - return slots + slotCount; -} - -unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( - Slot ** slots, unsigned char * code, - typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, - sal_Int32 functionCount, sal_Int32 vtableOffset) -{ - (*slots) -= functionCount; - Slot * s = *slots; - for (sal_Int32 i = 0; i < type->nMembers; ++i) { - typelib_TypeDescription * member = 0; - TYPELIB_DANGER_GET(&member, type->ppMembers[i]); - OSL_ASSERT(member != 0); - switch (member->eTypeClass) { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - // Getter: - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >( - member)->pAttributeTypeRef->eTypeClass); - // Setter: - if (!reinterpret_cast< - typelib_InterfaceAttributeTypeDescription * >( - member)->bReadOnly) - { - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - typelib_TypeClass_VOID); - } - break; - - case typelib_TypeClass_INTERFACE_METHOD: - (s++)->fn = code; - code = codeSnippet( - code, functionOffset++, vtableOffset, - reinterpret_cast< typelib_InterfaceMethodTypeDescription * >( - member)->pReturnTypeRef->eTypeClass); - break; - - default: - OSL_ASSERT(false); - break; - } - TYPELIB_DANGER_RELEASE(member); - } - return code; -} - -void bridges::cpp_uno::shared::VtableFactory::flushCode( - unsigned char const *, unsigned char const *) -{} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx deleted file mode 100644 index 623046140e84..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <dlfcn.h> -#include <cxxabi.h> -#include <hash_map> -#include <sys/param.h> - -#include <rtl/strbuf.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <typelib/typedescription.hxx> -#include <uno/any2.h> - -#include "share.hxx" - - -using namespace ::std; -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; -using namespace ::__cxxabiv1; - - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ) -{ -} - -//================================================================================================== -static OUString toUNOname( char const * p ) SAL_THROW( () ) -{ -#if OSL_DEBUG_LEVEL > 1 - char const * start = p; -#endif - - // example: N3com3sun4star4lang24IllegalArgumentExceptionE - - OUStringBuffer buf( 64 ); - OSL_ASSERT( 'N' == *p ); - ++p; // skip N - - while ('E' != *p) - { - // read chars count - long n = (*p++ - '0'); - while ('0' <= *p && '9' >= *p) - { - n *= 10; - n += (*p++ - '0'); - } - buf.appendAscii( p, n ); - p += n; - if ('E' != *p) - buf.append( (sal_Unicode)'.' ); - } - -#if OSL_DEBUG_LEVEL > 1 - OUString ret( buf.makeStringAndClear() ); - OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); - return ret; -#else - return buf.makeStringAndClear(); -#endif -} - -//================================================================================================== -class RTTI -{ - typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; - - Mutex m_mutex; - t_rtti_map m_rttis; - t_rtti_map m_generatedRttis; - - void * m_hApp; - -public: - RTTI() SAL_THROW( () ); - ~RTTI() SAL_THROW( () ); - - type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -RTTI::RTTI() SAL_THROW( () ) -#if 1 - : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) -#else - : m_hApp( dlopen( 0, RTLD_LAZY ) ) -#endif -{ -} -//__________________________________________________________________________________________________ -RTTI::~RTTI() SAL_THROW( () ) -{ - dlclose( m_hApp ); -} - -//__________________________________________________________________________________________________ -type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -{ - type_info * rtti; - - OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; - - MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); - if (iRttiFind == m_rttis.end()) - { - // RTTI symbol - OStringBuffer buf( 64 ); - buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); - sal_Int32 index = 0; - do - { - OUString token( unoName.getToken( 0, '.', index ) ); - buf.append( token.getLength() ); - OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); - buf.append( c_token ); - } - while (index >= 0); - buf.append( 'E' ); - - OString symName( buf.makeStringAndClear() ); -#if 1 /* #i22253# */ - rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); -#else - rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -#endif - - if (rtti) - { - pair< t_rtti_map::iterator, bool > insertion( - m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); - } - else - { - // try to lookup the symbol in the generated rtti map - t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); - if (iFind == m_generatedRttis.end()) - { - // we must generate it ! - // symbol and rtti-name is nearly identical, - // the symbol is prefixed with _ZTI - char const * rttiName = symName.getStr() +4; -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr,"generated rtti for %s\n", rttiName ); -#endif - if (pTypeDescr->pBaseTypeDescription) - { - // ensure availability of base - type_info * base_rtti = getRTTI( - (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); - rtti = new __si_class_type_info( - strdup( rttiName ), (__class_type_info *)base_rtti ); - } - else - { - // this class has no base class - rtti = new __class_type_info( strdup( rttiName ) ); - } - - pair< t_rtti_map::iterator, bool > insertion( - m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); - } - else // taking already generated rtti - { - rtti = iFind->second; - } - } - } - else - { - rtti = iRttiFind->second; - } - - return rtti; -} - -//-------------------------------------------------------------------------------------------------- -static void deleteException( void * pExc ) -{ - __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); - typelib_TypeDescription * pTD = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); - ::typelib_typedescription_getByName( &pTD, unoName.pData ); - OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); - if (pTD) - { - ::uno_destructData( pExc, pTD, cpp_release ); - ::typelib_typedescription_release( pTD ); - } -} - -//================================================================================================== -void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -{ -#if OSL_DEBUG_LEVEL > 1 - OString cstr( - OUStringToOString( - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() ); -#endif - void * pCppExc; - type_info * rtti; - - { - // construct cpp exception object - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); - OSL_ASSERT( pTypeDescr ); - if (! pTypeDescr) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - - pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); - ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); - - // destruct uno exception - ::uno_any_destruct( pUnoExc, 0 ); - // avoiding locked counts - static RTTI * s_rtti = 0; - if (! s_rtti) - { - MutexGuard guard( Mutex::getGlobalMutex() ); - if (! s_rtti) - { -#ifdef LEAK_STATIC_DATA - s_rtti = new RTTI(); -#else - static RTTI rtti_data; - s_rtti = &rtti_data; -#endif - } - } - rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); - if (! rtti) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - } - - __cxa_throw( pCppExc, rtti, deleteException ); -} - -//================================================================================================== -void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) -{ - if (! header) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ), - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - return; - } - - typelib_TypeDescription * pExcTypeDescr = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); -#if OSL_DEBUG_LEVEL > 1 - OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() ); -#endif - typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); - if (0 == pExcTypeDescr) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName, - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - } - else - { - // construct uno exception any - uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); - typelib_typedescription_release( pExcTypeDescr ); - } -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk deleted file mode 100644 index 3f6274fd36c0..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk +++ /dev/null @@ -1,81 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=bridges -TARGET=gcc3_uno -LIBTARGET=no -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDIgcc3" - -.IF "$(cppu_no_leak)" == "" -CFLAGS += -DLEAK_STATIC_DATA -.ENDIF - -# In case someone enabled the non-standard -fomit-frame-pointer which does not -# work with the .cxx sources in this directory: -CFLAGSCXX += -fno-omit-frame-pointer - -CFLAGSNOOPT=-O0 - -SLOFILES= \ - $(SLO)$/except.obj \ - $(SLO)$/cpp2uno.obj \ - $(SLO)$/uno2cpp.obj \ - $(SLO)$/call.obj - -SHL1TARGET= $(TARGET) - -SHL1DEF=$(MISC)$/$(SHL1TARGET).def -SHL1IMPLIB=i$(TARGET) -SHL1VERSIONMAP=..$/..$/bridge_exports.map -SHL1RPATH=URELIB - -SHL1OBJS = $(SLOFILES) -SHL1LIBS = $(SLB)$/cpp_uno_shared.lib - -SHL1STDLIBS= \ - $(CPPULIB) \ - $(SALLIB) - -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - -$(SLO)$/%.obj: %.s - $(CC) -c -o $(SLO)$/$(@:b).o $< - touch $@ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx deleted file mode 100644 index da2367ad172b..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/mapping.h" - -#include <typeinfo> -#include <exception> -#include <cstddef> - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ); - -// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h - -struct _Unwind_Exception -{ - unsigned exception_class __attribute__((__mode__(__DI__))); - void * exception_cleanup; - unsigned private_1 __attribute__((__mode__(__word__))); - unsigned private_2 __attribute__((__mode__(__word__))); -} __attribute__((__aligned__)); - -struct __cxa_exception -{ - ::std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - - ::std::unexpected_handler unexpectedHandler; - ::std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void *catchTemp; - void *adjustedPtr; - - _Unwind_Exception unwindHeader; -}; - -extern "C" void *__cxa_allocate_exception( - std::size_t thrown_size ) throw(); -extern "C" void __cxa_throw ( - void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); - -struct __cxa_eh_globals -{ - __cxa_exception *caughtExceptions; - unsigned int uncaughtExceptions; -}; -extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); - -// ----- - -//================================================================================================== -void raiseException( - uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -//================================================================================================== -void fillUnoException( - __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx deleted file mode 100644 index f468ffc33715..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx +++ /dev/null @@ -1,447 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdlib.h> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -#include "bridges/cpp_uno/shared/vtables.hxx" - -#include "share.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -namespace -{ - -//================================================================================================== -// The call instruction within the asm section of callVirtualMethod may throw -// exceptions. So that the compiler handles this correctly, it is important -// that (a) callVirtualMethod might call dummy_can_throw_anything (although this -// never happens at runtime), which in turn can throw exceptions, and (b) -// callVirtualMethod is not inlined at its call site (so that any exceptions are -// caught which are thrown from the instruction calling callVirtualMethod): -void callVirtualMethod( - void * pAdjustedThisPtr, - sal_Int32 nVtableIndex, - void * pRegisterReturn, - typelib_TypeClass eReturnType, - sal_Int32 * pStackLongs, - sal_Int32 nStackLongs ) __attribute__((noinline)); - -void callVirtualMethod( - void * pAdjustedThisPtr, - sal_Int32 nVtableIndex, - void * pRegisterReturn, - typelib_TypeClass eReturnType, - sal_Int32 * pStackLongs, - sal_Int32 nStackLongs ) -{ - // parameter list is mixed list of * and values - // reference parameters are pointers - - OSL_ENSURE( pStackLongs && pAdjustedThisPtr, "### null ptr!" ); - OSL_ENSURE( (sizeof(void *) == 4) && (sizeof(sal_Int32) == 4), "### unexpected size of int!" ); - OSL_ENSURE( nStackLongs && pStackLongs, "### no stack in callVirtualMethod !" ); - - // never called - if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something - - volatile long edx = 0, eax = 0; // for register returns - void * stackptr; - asm volatile ( - "mov %%esp, %6\n\t" - // copy values - "mov %0, %%eax\n\t" - "mov %%eax, %%edx\n\t" - "dec %%edx\n\t" - "shl $2, %%edx\n\t" - "add %1, %%edx\n" - "Lcopy:\n\t" - "pushl 0(%%edx)\n\t" - "sub $4, %%edx\n\t" - "dec %%eax\n\t" - "jne Lcopy\n\t" - // do the actual call - "mov %2, %%edx\n\t" - "mov 0(%%edx), %%edx\n\t" - "mov %3, %%eax\n\t" - "shl $2, %%eax\n\t" - "add %%eax, %%edx\n\t" - "mov 0(%%edx), %%edx\n\t" - "call *%%edx\n\t" - // save return registers - "mov %%eax, %4\n\t" - "mov %%edx, %5\n\t" - // cleanup stack - "mov %6, %%esp\n\t" - : - : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), - "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr) - : "eax", "edx" ); - switch( eReturnType ) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - ((long*)pRegisterReturn)[1] = edx; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_CHAR: - case typelib_TypeClass_ENUM: - ((long*)pRegisterReturn)[0] = eax; - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *(unsigned short*)pRegisterReturn = eax; - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - *(unsigned char*)pRegisterReturn = eax; - break; - case typelib_TypeClass_FLOAT: - asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) ); - break; - case typelib_TypeClass_DOUBLE: - asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) ); - break; - default: - break; - } -} - -//================================================================================================== -static void cpp_call( - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, - bridges::cpp_uno::shared::VtableSlot aVtableSlot, - typelib_TypeDescriptionReference * pReturnTypeRef, - sal_Int32 nParams, typelib_MethodParameter * pParams, - void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -{ - // max space for: [complex ret ptr], values|ptr ... - char * pCppStack = - (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) ); - char * pCppStackStart = pCppStack; - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); - - void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion - - if (pReturnTypeDescr) - { - if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) - { - pCppReturn = pUnoReturn; // direct way for simple types - } - else - { - // complex return via ptr - pCppReturn = *(void **)pCppStack - = (bridges::cpp_uno::shared::relatesToInterfaceType( - pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pUnoReturn); // direct way - pCppStack += sizeof(void *); - } - } - // push this - void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) - + aVtableSlot.offset; - *(void**)pCppStack = pAdjustedThisPtr; - pCppStack += sizeof( void* ); - - // stack space - OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); - // args - void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut - && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - { - uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_DOUBLE: - pCppStack += sizeof(sal_Int32); // extra long - break; - default: - break; - } - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - if (! rParam.bIn) // is pure out - { - // cpp out is constructed mem, uno out is not! - uno_constructData( - *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pParamTypeDescr ); - pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( - pParamTypeDescr )) - { - uno_copyAndConvertData( - *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos]; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - pCppStack += sizeof(sal_Int32); // standard parameter length - } - - try - { - OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" ); - callVirtualMethod( - pAdjustedThisPtr, aVtableSlot.index, - pCppReturn, pReturnTypeDescr->eTypeClass, - (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) ); - // NO exception occured... - *ppUnoExc = 0; - - // reconvert temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bIn) - { - if (pParams[nIndex].bOut) // inout - { - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - } - else // pure out - { - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return value - if (pCppReturn && pUnoReturn != pCppReturn) - { - uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); - } - } - catch (...) - { - // fill uno exception - fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); - - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - // return type - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } -} - -} - -namespace bridges { namespace cpp_uno { namespace shared { - -void unoInterfaceProxyDispatch( - uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, - void * pReturn, void * pArgs[], uno_Any ** ppException ) -{ - // is my surrogate - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis - = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI); - - switch (pMemberDescr->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceAttributeTypeDescription const * >( - pMemberDescr))); - if (pReturn) - { - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, - 0, 0, // no params - pReturn, pArgs, ppException ); - } - else - { - // is SET - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - typelib_TypeDescriptionReference * pReturnTypeRef = 0; - OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); - typelib_typedescriptionreference_new( - &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); - - // dependent dispatch - aVtableSlot.index += 1; // get, then set method - cpp_call( - pThis, aVtableSlot, - pReturnTypeRef, - 1, &aParam, - pReturn, pArgs, ppException ); - - typelib_typedescriptionreference_release( pReturnTypeRef ); - } - - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceMethodTypeDescription const * >( - pMemberDescr))); - switch (aVtableSlot.index) - { - // standard calls - case 1: // acquire uno interface - (*pUnoI->acquire)( pUnoI ); - *ppException = 0; - break; - case 2: // release uno interface - (*pUnoI->release)( pUnoI ); - *ppException = 0; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); - if (pTD) - { - uno_Interface * pInterface = 0; - (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)( - pThis->pBridge->getUnoEnv(), - (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pReturn ), - &pInterface, pTD, 0 ); - (*pInterface->release)( pInterface ); - TYPELIB_DANGER_RELEASE( pTD ); - *ppException = 0; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, - pReturn, pArgs, ppException ); - } - break; - } - default: - { - ::com::sun::star::uno::RuntimeException aExc( - OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); - - Type const & rExcType = ::getCppuType( &aExc ); - // binary identical null reference - ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); - } - } -} - -} } } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx deleted file mode 100644 index 1ba2a5f46640..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx +++ /dev/null @@ -1,358 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -// This is an implementation of the x86-64 ABI as described in 'System V -// Application Binary Interface, AMD64 Architecture Processor Supplement' -// (http://www.x86-64.org/documentation/abi-0.95.pdf) -// -// The code in this file is a modification of src/x86/ffi64.c from libffi -// (http://sources.redhat.com/libffi/) which is under the following license: - -/* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2002 Bo Thorsen <bo@suse.de> - - x86-64 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -#include <abi.hxx> - -#include <rtl/ustring.hxx> - -using namespace x86_64; - -typedef struct -{ - /* Registers for argument passing. */ - long gpr[MAX_GPR_REGS]; - __int128_t sse[MAX_SSE_REGS]; - - /* Stack space for arguments. */ - char argspace[0]; -} stackLayout; - -/* Register class used for passing given 64bit part of the argument. - These represent classes as documented by the PS ABI, with the exception - of SSESF, SSEDF classes, that are basically SSE class, just gcc will - use SF or DFmode move instead of DImode to avoid reformating penalties. - - Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves - whenever possible (upper half does contain padding). - */ -enum x86_64_reg_class -{ - X86_64_NO_CLASS, - X86_64_INTEGER_CLASS, - X86_64_INTEGERSI_CLASS, - X86_64_SSE_CLASS, - X86_64_SSESF_CLASS, - X86_64_SSEDF_CLASS, - X86_64_SSEUP_CLASS, - X86_64_X87_CLASS, - X86_64_X87UP_CLASS, - X86_64_MEMORY_CLASS -}; - -#define MAX_CLASSES 4 - -#define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) - -/* x86-64 register passing implementation. See x86-64 ABI for details. Goal - of this code is to classify each 8bytes of incoming argument by the register - class and assign registers accordingly. */ - -/* Return the union class of CLASS1 and CLASS2. - See the x86-64 PS ABI for details. */ - -static enum x86_64_reg_class -merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) -{ - /* Rule #1: If both classes are equal, this is the resulting class. */ - if (class1 == class2) - return class1; - - /* Rule #2: If one of the classes is NO_CLASS, the resulting class is - the other class. */ - if (class1 == X86_64_NO_CLASS) - return class2; - if (class2 == X86_64_NO_CLASS) - return class1; - - /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ - if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) - return X86_64_MEMORY_CLASS; - - /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ - if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) - || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) - return X86_64_INTEGERSI_CLASS; - if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS - || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) - return X86_64_INTEGER_CLASS; - - /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */ - if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS - || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS) - return X86_64_MEMORY_CLASS; - - /* Rule #6: Otherwise class SSE is used. */ - return X86_64_SSE_CLASS; -} - -/* Classify the argument of type TYPE and mode MODE. - CLASSES will be filled by the register class used to pass each word - of the operand. The number of words is returned. In case the parameter - should be passed in memory, 0 is returned. As a special case for zero - sized containers, classes[0] will be NO_CLASS and 1 is returned. - - See the x86-64 PS ABI for details. -*/ -static int -classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_class classes[], int &rByteOffset ) -{ - /* First, align to the right place. */ - rByteOffset = ALIGN( rByteOffset, pTypeRef->pType->nAlignment ); - - switch ( pTypeRef->eTypeClass ) - { - case typelib_TypeClass_VOID: - classes[0] = X86_64_NO_CLASS; - return 1; - case typelib_TypeClass_CHAR: - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - case typelib_TypeClass_ENUM: - if ( ( rByteOffset % 8 + pTypeRef->pType->nSize ) <= 4 ) - classes[0] = X86_64_INTEGERSI_CLASS; - else - classes[0] = X86_64_INTEGER_CLASS; - return 1; - case typelib_TypeClass_FLOAT: - if ( ( rByteOffset % 8 ) == 0 ) - classes[0] = X86_64_SSESF_CLASS; - else - classes[0] = X86_64_SSE_CLASS; - return 1; - case typelib_TypeClass_DOUBLE: - classes[0] = X86_64_SSEDF_CLASS; - return 1; - /*case LONGDOUBLE: - classes[0] = X86_64_X87_CLASS; - classes[1] = X86_64_X87UP_CLASS; - return 2;*/ - case typelib_TypeClass_STRING: - case typelib_TypeClass_TYPE: - case typelib_TypeClass_ANY: - case typelib_TypeClass_TYPEDEF: - case typelib_TypeClass_UNION: - case typelib_TypeClass_SEQUENCE: - case typelib_TypeClass_ARRAY: - case typelib_TypeClass_INTERFACE: - return 0; - case typelib_TypeClass_STRUCT: - case typelib_TypeClass_EXCEPTION: - { - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef ); - - const int UNITS_PER_WORD = 8; - int words = ( pTypeDescr->nSize + UNITS_PER_WORD - 1 ) / UNITS_PER_WORD; - enum x86_64_reg_class subclasses[MAX_CLASSES]; - - /* If the struct is larger than 16 bytes, pass it on the stack. */ - if ( pTypeDescr->nSize > 16 ) - { - TYPELIB_DANGER_RELEASE( pTypeDescr ); - return 0; - } - - for ( int i = 0; i < words; i++ ) - classes[i] = X86_64_NO_CLASS; - - const typelib_CompoundTypeDescription *pStruct = reinterpret_cast<const typelib_CompoundTypeDescription*>( pTypeDescr ); - - /* Merge the fields of structure. */ - for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember ) - { - typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ]; - - int num = classify_argument( pTypeInStruct, subclasses, rByteOffset ); - - if ( num == 0 ) - { - TYPELIB_DANGER_RELEASE( pTypeDescr ); - return 0; - } - - for ( int i = 0; i < num; i++ ) - { - int pos = rByteOffset / 8; - classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] ); - } - - if ( pTypeInStruct->eTypeClass != typelib_TypeClass_STRUCT ) - rByteOffset = pStruct->pMemberOffsets[ nMember ]; - } - - TYPELIB_DANGER_RELEASE( pTypeDescr ); - - /* Final merger cleanup. */ - for ( int i = 0; i < words; i++ ) - { - /* If one class is MEMORY, everything should be passed in - memory. */ - if ( classes[i] == X86_64_MEMORY_CLASS ) - return 0; - - /* The X86_64_SSEUP_CLASS should be always preceded by - X86_64_SSE_CLASS. */ - if ( classes[i] == X86_64_SSEUP_CLASS - && ( i == 0 || classes[i - 1] != X86_64_SSE_CLASS ) ) - classes[i] = X86_64_SSE_CLASS; - - /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */ - if ( classes[i] == X86_64_X87UP_CLASS - && ( i == 0 || classes[i - 1] != X86_64_X87_CLASS ) ) - classes[i] = X86_64_SSE_CLASS; - } - return words; - } - - default: -#if OSL_DEBUG_LEVEL > 1 - OSL_TRACE( "Unhandled case: pType->eTypeClass == %d\n", pTypeRef->eTypeClass ); -#endif - OSL_ASSERT(0); - } - return 0; /* Never reached. */ -} - -/* Examine the argument and return set number of register required in each - class. Return 0 iff parameter should be passed in memory. */ -bool x86_64::examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ) -{ - enum x86_64_reg_class classes[MAX_CLASSES]; - int offset = 0; - int n; - - n = classify_argument( pTypeRef, classes, offset ); - - if ( n == 0 ) - return false; - - nUsedGPR = 0; - nUsedSSE = 0; - for ( n--; n >= 0; n-- ) - switch ( classes[n] ) - { - case X86_64_INTEGER_CLASS: - case X86_64_INTEGERSI_CLASS: - nUsedGPR++; - break; - case X86_64_SSE_CLASS: - case X86_64_SSESF_CLASS: - case X86_64_SSEDF_CLASS: - nUsedSSE++; - break; - case X86_64_NO_CLASS: - case X86_64_SSEUP_CLASS: - break; - case X86_64_X87_CLASS: - case X86_64_X87UP_CLASS: - if ( !bInReturn ) - return false; - break; - default: -#if OSL_DEBUG_LEVEL > 1 - OSL_TRACE( "Unhandled case: classes[n] == %d\n", classes[n] ); -#endif - OSL_ASSERT(0); - } - return true; -} - -bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) -{ - int g, s; - - return examine_argument( pTypeRef, true, g, s ) == 0; -} - -void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ) -{ - enum x86_64_reg_class classes[MAX_CLASSES]; - int offset = 0; - int n; - - n = classify_argument( pTypeRef, classes, offset ); - - sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct ); - for ( n--; n >= 0; n-- ) - switch ( classes[n] ) - { - case X86_64_INTEGER_CLASS: - case X86_64_INTEGERSI_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pGPR++ ); - break; - case X86_64_SSE_CLASS: - case X86_64_SSESF_CLASS: - case X86_64_SSEDF_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pSSE++ ); - break; - } -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx deleted file mode 100644 index 6d40eafb1c0c..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ -#define _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ - -// This is an implementation of the x86-64 ABI as described in 'System V -// Application Binary Interface, AMD64 Architecture Processor Supplement' -// (http://www.x86-64.org/documentation/abi-0.95.pdf) - -#include <typelib/typedescription.hxx> - -namespace x86_64 -{ - -/* 6 general purpose registers are used for parameter passing */ -const sal_uInt32 MAX_GPR_REGS = 6; - -/* 8 SSE registers are used for parameter passing */ -const sal_uInt32 MAX_SSE_REGS = 8; - -/* Count number of required registers. - - Examine the argument and return set number of register required in each - class. - - Return false iff parameter should be passed in memory. -*/ -bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ); - -/** Does function that returns this type use a hidden parameter, or registers? - - The value can be returned either in a hidden 1st parameter (which is a - pointer to a structure allocated by the caller), or in registers (rax, rdx - for the integers, xmm0, xmm1 for the floating point numbers). -*/ -bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ); - -void fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ); - -} // namespace x86_64 - -#endif // _BRIDGES_CPP_UNO_X86_64_ABI_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s deleted file mode 100644 index 7964399cfeaa..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s +++ /dev/null @@ -1,93 +0,0 @@ - .text - .align 2 -.globl privateSnippetExecutor - .type privateSnippetExecutor, @function -privateSnippetExecutor: -.LFB3: - pushq %rbp -.LCFI0: - movq %rsp, %rbp -.LCFI1: - subq $160, %rsp -.LCFI2: - movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex - - movq %rdi, -112(%rbp) # Save GP registers - movq %rsi, -104(%rbp) - movq %rdx, -96(%rbp) - movq %rcx, -88(%rbp) - movq %r8 , -80(%rbp) - movq %r9 , -72(%rbp) - - movsd %xmm0, -64(%rbp) # Save FP registers - movsd %xmm1, -56(%rbp) - movsd %xmm2, -48(%rbp) - movsd %xmm3, -40(%rbp) - movsd %xmm4, -32(%rbp) - movsd %xmm5, -24(%rbp) - movsd %xmm6, -16(%rbp) - movsd %xmm7, -8(%rbp) - - leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn - leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw - leaq -64(%rbp), %rcx # 4th param: void ** fpreg - leaq -112(%rbp), %rdx # 3rd param: void ** gpreg - movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset - movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex - - call cpp_vtable_call - - cmp $10, %rax # typelib_TypeClass_FLOAT - je .Lfloat - cmp $11, %rax # typelib_TypeClass_DOUBLE - je .Lfloat - - movq -144(%rbp), %rax # Return value (int case) - jmp .Lfinish -.Lfloat: - movlpd -144(%rbp), %xmm0 # Return value (float/double case) - -.Lfinish: - leave - ret -.LFE3: - .size privateSnippetExecutor, .-privateSnippetExecutor - .section .eh_frame,"a",@progbits -.Lframe1: - .long .LECIE1-.LSCIE1 -.LSCIE1: - .long 0x0 - .byte 0x1 - .string "zR" - .uleb128 0x1 - .sleb128 -8 - .byte 0x10 - .uleb128 0x1 - .byte 0x1b - .byte 0xc - .uleb128 0x7 - .uleb128 0x8 - .byte 0x90 - .uleb128 0x1 - .align 8 -.LECIE1: -.LSFDE1: - .long .LEFDE1-.LASFDE1 -.LASFDE1: - .long .LASFDE1-.Lframe1 - .long .LFB3-. - .long .LFE3-.LFB3 - .uleb128 0x0 - .byte 0x4 - .long .LCFI0-.LFB3 - .byte 0xe - .uleb128 0x10 - .byte 0x86 - .uleb128 0x2 - .byte 0x4 - .long .LCFI1-.LCFI0 - .byte 0xd - .uleb128 0x6 - .align 8 -.LEFDE1: - .section .note.GNU-stack,"",@progbits diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx deleted file mode 100644 index dcb45eaae62e..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx +++ /dev/null @@ -1,544 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <hash_map> - -#include <rtl/alloc.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> -#include <typelib/typedescription.hxx> - -#include "bridges/cpp_uno/shared/bridge.hxx" -#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -#include "bridges/cpp_uno/shared/types.hxx" -#include "bridges/cpp_uno/shared/vtablefactory.hxx" - -#include "abi.hxx" -#include "share.hxx" - -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -//================================================================================================== - -// Perform the UNO call -// -// We must convert the paramaters stored in gpreg, fpreg and ovrflw to UNO -// arguments and call pThis->getUnoI()->pDispatcher. -// -// gpreg: [ret *], this, [gpr params] -// fpreg: [fpr params] -// ovrflw: [gpr or fpr params (properly aligned)] -// -// [ret *] is present when we are returning a structure bigger than 16 bytes -// Simple types are returned in rax, rdx (int), or xmm0, xmm1 (fp). -// Similarly structures <= 16 bytes are in rax, rdx, xmm0, xmm1 as necessary. -static typelib_TypeClass cpp2uno_call( - bridges::cpp_uno::shared::CppInterfaceProxy * pThis, - const typelib_TypeDescription * pMemberTypeDescr, - typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return - sal_Int32 nParams, typelib_MethodParameter * pParams, - void ** gpreg, void ** fpreg, void ** ovrflw, - sal_uInt64 * pRegisterReturn /* space for register return */ ) -{ - int nr_gpr = 0; //number of gpr registers used - int nr_fpr = 0; //number of fpr regsiters used - - // return - typelib_TypeDescription * pReturnTypeDescr = 0; - if (pReturnTypeRef) - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - - void * pUnoReturn = 0; - void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need - - if ( pReturnTypeDescr ) - { - if ( x86_64::return_in_hidden_param( pReturnTypeRef ) ) - { - pCppReturn = *gpreg++; - nr_gpr++; - - pUnoReturn = ( bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) - ? alloca( pReturnTypeDescr->nSize ) - : pCppReturn ); // direct way - } - else - pUnoReturn = pRegisterReturn; // direct way for simple types - } - - // pop this - gpreg++; - nr_gpr++; - - // stack space - // parameters - void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); - void ** pCppArgs = pUnoArgs + nParams; - // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); - // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - int nUsedGPR = 0; - int nUsedSSE = 0; - bool bFitsRegisters = x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE ); - if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value - { - // Simple types must fit exactly one register on x86_64 - OSL_ASSERT( bFitsRegisters && ( ( nUsedSSE == 1 && nUsedGPR == 0 ) || ( nUsedSSE == 0 && nUsedGPR == 1 ) ) ); - - if ( nUsedSSE == 1 ) - { - if ( nr_fpr < x86_64::MAX_SSE_REGS ) - { - pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++; - nr_fpr++; - } - else - pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++; - } - else if ( nUsedGPR == 1 ) - { - if ( nr_gpr < x86_64::MAX_GPR_REGS ) - { - pCppArgs[nPos] = pUnoArgs[nPos] = gpreg++; - nr_gpr++; - } - else - pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++; - } - - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // struct <= 16 bytes || ptr to complex value || ref - { - void *pCppStack; - char pTmpStruct[16]; - - if ( bFitsRegisters && !rParam.bOut && - ( pParamTypeDescr->eTypeClass == typelib_TypeClass_STRUCT || - pParamTypeDescr->eTypeClass == typelib_TypeClass_EXCEPTION ) ) - { - if ( ( nr_gpr + nUsedGPR <= x86_64::MAX_GPR_REGS ) && ( nr_fpr + nUsedSSE <= x86_64::MAX_SSE_REGS ) ) - { - x86_64::fill_struct( rParam.pTypeRef, gpreg, fpreg, pTmpStruct ); -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "nUsedGPR == %d, nUsedSSE == %d, pTmpStruct[0] == 0x%x, pTmpStruct[1] == 0x%x, **gpreg == 0x%lx\n", - nUsedGPR, nUsedSSE, pTmpStruct[0], pTmpStruct[1], *(sal_uInt64*)*gpreg ); -#endif - - pCppArgs[nPos] = pCppStack = reinterpret_cast<void *>( pTmpStruct ); - gpreg += nUsedGPR; - fpreg += nUsedSSE; - } - else - pCppArgs[nPos] = pCppStack = *ovrflw++; - } - else if ( nr_gpr < x86_64::MAX_GPR_REGS ) - { - pCppArgs[nPos] = pCppStack = *gpreg++; - nr_gpr++; - } - else - pCppArgs[nPos] = pCppStack = *ovrflw++; - - if (! rParam.bIn) // is pure out - { - // uno out is unconstructed mem! - pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); - pTempIndizes[nTempIndizes] = nPos; - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else if ( bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ) ) // is in/inout - { - uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pCppStack, pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pUnoArgs[nPos] = pCppStack; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - } - } - - // ExceptionHolder - uno_Any aUnoExc; // Any will be constructed by callee - uno_Any * pUnoExc = &aUnoExc; - - // invoke uno dispatch call - (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); - - // in case an exception occured... - if ( pUnoExc ) - { - // destruct temporary in/inout params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - - if (pParams[nIndex].bIn) // is in/inout => was constructed - uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - - CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any - // is here for dummy - return typelib_TypeClass_VOID; - } - else // else no exception occured... - { - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if ( pParams[nIndex].bOut ) // inout/out - { - // convert and assign - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - } - // destroy temp uno param - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return - if ( pCppReturn ) // has complex return - { - if ( pUnoReturn != pCppReturn ) // needs reconversion - { - uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - // destroy temp uno return - uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); - } - // complex return ptr is set to return reg - *(void **)pRegisterReturn = pCppReturn; - } - if ( pReturnTypeDescr ) - { - typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass; - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - return eRet; - } - else - return typelib_TypeClass_VOID; - } -} - - -//================================================================================================== -extern "C" typelib_TypeClass cpp_vtable_call( - sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, - void ** gpreg, void ** fpreg, void ** ovrflw, - sal_uInt64 * pRegisterReturn /* space for register return */ ) -{ - // gpreg: [ret *], this, [other gpr params] - // fpreg: [fpr params] - // ovrflw: [gpr or fpr params (properly aligned)] - void * pThis; - if ( nFunctionIndex & 0x80000000 ) - { - nFunctionIndex &= 0x7fffffff; - pThis = gpreg[1]; - } - else - { - pThis = gpreg[0]; - } - pThis = static_cast<char *>( pThis ) - nVtableOffset; - - bridges::cpp_uno::shared::CppInterfaceProxy * pCppI = - bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( pThis ); - - typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); - - OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!\n" ); - if ( nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex ) - { - throw RuntimeException( OUString::createFromAscii("illegal vtable index!"), - reinterpret_cast<XInterface *>( pCppI ) ); - } - - // determine called method - sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!\n" ); - - TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); - - typelib_TypeClass eRet; - switch ( aMemberDescr.get()->eTypeClass ) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - typelib_TypeDescriptionReference *pAttrTypeRef = - reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( aMemberDescr.get() )->pAttributeTypeRef; - - if ( pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex ) - { - // is GET method - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), pAttrTypeRef, - 0, 0, // no params - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - else - { - // is SET method - typelib_MethodParameter aParam; - aParam.pTypeRef = pAttrTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), - 0, // indicates void return - 1, &aParam, - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // is METHOD - switch ( nFunctionIndex ) - { - case 1: // acquire() - pCppI->acquireProxy(); // non virtual call! - eRet = typelib_TypeClass_VOID; - break; - case 2: // release() - pCppI->releaseProxy(); // non virtual call! - eRet = typelib_TypeClass_VOID; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast<Type *>( gpreg[2] )->getTypeLibType() ); - if ( pTD ) - { - XInterface * pInterface = 0; - (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface) - ( pCppI->getBridge()->getCppEnv(), - (void **)&pInterface, - pCppI->getOid().pData, - reinterpret_cast<typelib_InterfaceTypeDescription *>( pTD ) ); - - if ( pInterface ) - { - ::uno_any_construct( reinterpret_cast<uno_Any *>( gpreg[0] ), - &pInterface, pTD, cpp_acquire ); - - pInterface->release(); - TYPELIB_DANGER_RELEASE( pTD ); - - reinterpret_cast<void **>( pRegisterReturn )[0] = gpreg[0]; - eRet = typelib_TypeClass_ANY; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - { - typelib_InterfaceMethodTypeDescription *pMethodTD = - reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( aMemberDescr.get() ); - - eRet = cpp2uno_call( pCppI, aMemberDescr.get(), - pMethodTD->pReturnTypeRef, - pMethodTD->nParams, - pMethodTD->pParams, - gpreg, fpreg, ovrflw, pRegisterReturn ); - } - } - break; - } - default: - { - throw RuntimeException( OUString::createFromAscii("no member description found!"), - reinterpret_cast<XInterface *>( pCppI ) ); - // is here for dummy - eRet = typelib_TypeClass_VOID; - } - } - - return eRet; -} - -//================================================================================================== -extern "C" void privateSnippetExecutor( ... ); - -const int codeSnippetSize = 24; - -// Generate a trampoline that redirects method calls to -// privateSnippetExecutor(). -// -// privateSnippetExecutor() saves all the registers that are used for -// parameter passing on x86_64, and calls the cpp_vtable_call(). -// When it returns, privateSnippetExecutor() sets the return value. -// -// Note: The code snippet we build here must not create a stack frame, -// otherwise the UNO exceptions stop working thanks to non-existing -// unwinding info. -unsigned char * codeSnippet( unsigned char * code, - sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, - bool bHasHiddenParam ) SAL_THROW( () ) -{ - sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex ); - - if ( bHasHiddenParam ) - nOffsetAndIndex |= 0x80000000; - - // movq $<nOffsetAndIndex>, %r10 - *reinterpret_cast<sal_uInt16 *>( code ) = 0xba49; - *reinterpret_cast<sal_uInt64 *>( code + 2 ) = nOffsetAndIndex; - - // movq $<address of the privateSnippetExecutor>, %r11 - *reinterpret_cast<sal_uInt16 *>( code + 10 ) = 0xbb49; - *reinterpret_cast<sal_uInt64 *>( code + 12 ) = reinterpret_cast<sal_uInt64>( privateSnippetExecutor ); - - // jmpq *%r11 - *reinterpret_cast<sal_uInt32 *>( code + 20 ) = 0x00e3ff49; - - return code + codeSnippetSize; -} - -//================================================================================================== -struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; - -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -{ - return static_cast< Slot * >(block) + 2; -} - -//================================================================================================== -sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( - sal_Int32 slotCount) -{ - return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -} - -//================================================================================================== -bridges::cpp_uno::shared::VtableFactory::Slot * -bridges::cpp_uno::shared::VtableFactory::initializeBlock( - void * block, sal_Int32 slotCount) -{ - Slot * slots = mapBlockToVtable(block); - slots[-2].fn = 0; - slots[-1].fn = 0; - return slots + slotCount; -} - -//================================================================================================== - -unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( - Slot ** slots, unsigned char * code, - typelib_InterfaceTypeDescription const * type, sal_Int32 nFunctionOffset, - sal_Int32 functionCount, sal_Int32 nVtableOffset ) -{ - (*slots) -= functionCount; - Slot * s = *slots; - - for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos ) - { - typelib_TypeDescription * pTD = 0; - - TYPELIB_DANGER_GET( &pTD, type->ppMembers[ nPos ] ); - OSL_ASSERT( pTD ); - - if ( typelib_TypeClass_INTERFACE_ATTRIBUTE == pTD->eTypeClass ) - { - typelib_InterfaceAttributeTypeDescription *pAttrTD = - reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( pTD ); - - // get method - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, - x86_64::return_in_hidden_param( pAttrTD->pAttributeTypeRef ) ); - - if ( ! pAttrTD->bReadOnly ) - { - // set method - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, false ); - } - } - else if ( typelib_TypeClass_INTERFACE_METHOD == pTD->eTypeClass ) - { - typelib_InterfaceMethodTypeDescription *pMethodTD = - reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( pTD ); - - (s++)->fn = code; - code = codeSnippet( code, nFunctionOffset++, nVtableOffset, - x86_64::return_in_hidden_param( pMethodTD->pReturnTypeRef ) ); - } - else - OSL_ASSERT( false ); - - TYPELIB_DANGER_RELEASE( pTD ); - } - return code; -} - -//================================================================================================== -void bridges::cpp_uno::shared::VtableFactory::flushCode( - unsigned char const *, unsigned char const * ) -{ -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx deleted file mode 100644 index 0e133d996c91..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <dlfcn.h> -#include <cxxabi.h> -#include <hash_map> -#include <sys/param.h> - -#include <rtl/strbuf.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <typelib/typedescription.hxx> -#include <uno/any2.h> - -#include "share.hxx" - - -using namespace ::std; -using namespace ::osl; -using namespace ::rtl; -using namespace ::com::sun::star::uno; -using namespace ::__cxxabiv1; - - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ) -{ -} - -//================================================================================================== -static OUString toUNOname( char const * p ) SAL_THROW( () ) -{ -#if OSL_DEBUG_LEVEL > 1 - char const * start = p; -#endif - - // example: N3com3sun4star4lang24IllegalArgumentExceptionE - - OUStringBuffer buf( 64 ); - OSL_ASSERT( 'N' == *p ); - ++p; // skip N - - while ('E' != *p) - { - // read chars count - long n = (*p++ - '0'); - while ('0' <= *p && '9' >= *p) - { - n *= 10; - n += (*p++ - '0'); - } - buf.appendAscii( p, n ); - p += n; - if ('E' != *p) - buf.append( (sal_Unicode)'.' ); - } - -#if OSL_DEBUG_LEVEL > 1 - OUString ret( buf.makeStringAndClear() ); - OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); - return ret; -#else - return buf.makeStringAndClear(); -#endif -} - -//================================================================================================== -class RTTI -{ - typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; - - Mutex m_mutex; - t_rtti_map m_rttis; - t_rtti_map m_generatedRttis; - - void * m_hApp; - -public: - RTTI() SAL_THROW( () ); - ~RTTI() SAL_THROW( () ); - - type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -}; -//__________________________________________________________________________________________________ -RTTI::RTTI() SAL_THROW( () ) -#if 1 - : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) ) -#else - : m_hApp( dlopen( 0, RTLD_LAZY ) ) -#endif -{ -} -//__________________________________________________________________________________________________ -RTTI::~RTTI() SAL_THROW( () ) -{ - dlclose( m_hApp ); -} - -//__________________________________________________________________________________________________ -type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -{ - type_info * rtti; - - OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; - - MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); - if (iFind == m_rttis.end()) - { - // RTTI symbol - OStringBuffer buf( 64 ); - buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); - sal_Int32 index = 0; - do - { - OUString token( unoName.getToken( 0, '.', index ) ); - buf.append( token.getLength() ); - OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); - buf.append( c_token ); - } - while (index >= 0); - buf.append( 'E' ); - - OString symName( buf.makeStringAndClear() ); -#if 1 /* #i22253# */ - rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() ); -#else - rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -#endif - - if (rtti) - { - pair< t_rtti_map::iterator, bool > insertion( - m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); - } - else - { - // try to lookup the symbol in the generated rtti map - t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); - if (iFind == m_generatedRttis.end()) - { - // we must generate it ! - // symbol and rtti-name is nearly identical, - // the symbol is prefixed with _ZTI - char const * rttiName = symName.getStr() +4; -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr,"generated rtti for %s\n", rttiName ); -#endif - if (pTypeDescr->pBaseTypeDescription) - { - // ensure availability of base - type_info * base_rtti = getRTTI( - (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); - rtti = new __si_class_type_info( - strdup( rttiName ), (__class_type_info *)base_rtti ); - } - else - { - // this class has no base class - rtti = new __class_type_info( strdup( rttiName ) ); - } - - pair< t_rtti_map::iterator, bool > insertion( - m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); - OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); - } - else // taking already generated rtti - { - rtti = iFind->second; - } - } - } - else - { - rtti = iFind->second; - } - - return rtti; -} - -//-------------------------------------------------------------------------------------------------- -static void deleteException( void * pExc ) -{ - __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); - typelib_TypeDescription * pTD = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); - ::typelib_typedescription_getByName( &pTD, unoName.pData ); - OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); - if (pTD) - { - ::uno_destructData( pExc, pTD, cpp_release ); - ::typelib_typedescription_release( pTD ); - } -} - -//================================================================================================== -void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -{ -#if OSL_DEBUG_LEVEL > 1 - OString cstr( - OUStringToOString( - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() ); -#endif - void * pCppExc; - type_info * rtti; - - { - // construct cpp exception object - typelib_TypeDescription * pTypeDescr = 0; - TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); - OSL_ASSERT( pTypeDescr ); - if (! pTypeDescr) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - - pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); - ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); - - // destruct uno exception - ::uno_any_destruct( pUnoExc, 0 ); - // avoiding locked counts - static RTTI * s_rtti = 0; - if (! s_rtti) - { - MutexGuard guard( Mutex::getGlobalMutex() ); - if (! s_rtti) - { -#ifdef LEAK_STATIC_DATA - s_rtti = new RTTI(); -#else - static RTTI rtti_data; - s_rtti = &rtti_data; -#endif - } - } - rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); - TYPELIB_DANGER_RELEASE( pTypeDescr ); - OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); - if (! rtti) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) + - *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), - Reference< XInterface >() ); - } - } - - __cxa_throw( pCppExc, rtti, deleteException ); -} - -//================================================================================================== -void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) -{ - if (! header) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ), - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - return; - } - - typelib_TypeDescription * pExcTypeDescr = 0; - OUString unoName( toUNOname( header->exceptionType->name() ) ); -#if OSL_DEBUG_LEVEL > 1 - OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) ); - fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() ); -#endif - typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); - if (0 == pExcTypeDescr) - { - RuntimeException aRE( - OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName, - Reference< XInterface >() ); - Type const & rType = ::getCppuType( &aRE ); - uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); -#if OSL_DEBUG_LEVEL > 0 - OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, cstr.getStr() ); -#endif - } - else - { - // construct uno exception any - uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); - typelib_typedescription_release( pExcTypeDescr ); - } -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk deleted file mode 100644 index 28df8815ecb9..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk +++ /dev/null @@ -1,80 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=bridges -TARGET=gcc3_uno -LIBTARGET=no -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDXgcc3" - -.IF "$(cppu_no_leak)" == "" -CFLAGS += -DLEAK_STATIC_DATA -.ENDIF - -# In case someone enabled the non-standard -fomit-frame-pointer which does not -# work with the .cxx sources in this directory: -CFLAGSCXX += -fno-omit-frame-pointer - -SLOFILES= \ - $(SLO)$/abi.obj \ - $(SLO)$/except.obj \ - $(SLO)$/cpp2uno.obj \ - $(SLO)$/uno2cpp.obj \ - $(SLO)$/call.obj - -SHL1TARGET= $(TARGET) - -SHL1DEF=$(MISC)$/$(SHL1TARGET).def -SHL1IMPLIB=i$(TARGET) -SHL1VERSIONMAP=..$/..$/bridge_exports.map -SHL1RPATH=URELIB - -SHL1OBJS = $(SLOFILES) -SHL1LIBS = $(SLB)$/cpp_uno_shared.lib - -SHL1STDLIBS= \ - $(CPPULIB) \ - $(SALLIB) - -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - -$(SLO)$/%.obj: %.s - $(CC) -c -o $(SLO)$/$(@:b).o $< - touch $@ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx deleted file mode 100644 index da2367ad172b..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "uno/mapping.h" - -#include <typeinfo> -#include <exception> -#include <cstddef> - -namespace CPPU_CURRENT_NAMESPACE -{ - -void dummy_can_throw_anything( char const * ); - -// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h - -struct _Unwind_Exception -{ - unsigned exception_class __attribute__((__mode__(__DI__))); - void * exception_cleanup; - unsigned private_1 __attribute__((__mode__(__word__))); - unsigned private_2 __attribute__((__mode__(__word__))); -} __attribute__((__aligned__)); - -struct __cxa_exception -{ - ::std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - - ::std::unexpected_handler unexpectedHandler; - ::std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void *catchTemp; - void *adjustedPtr; - - _Unwind_Exception unwindHeader; -}; - -extern "C" void *__cxa_allocate_exception( - std::size_t thrown_size ) throw(); -extern "C" void __cxa_throw ( - void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); - -struct __cxa_eh_globals -{ - __cxa_exception *caughtExceptions; - unsigned int uncaughtExceptions; -}; -extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); - -// ----- - -//================================================================================================== -void raiseException( - uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -//================================================================================================== -void fillUnoException( - __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx deleted file mode 100644 index d4885fd06274..000000000000 --- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx +++ /dev/null @@ -1,561 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_bridges.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <rtl/alloc.h> - -#include <com/sun/star/uno/genfunc.hxx> -#include "com/sun/star/uno/RuntimeException.hpp" -#include <uno/data.h> - -#include <bridges/cpp_uno/shared/bridge.hxx> -#include <bridges/cpp_uno/shared/types.hxx> -#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -#include "bridges/cpp_uno/shared/vtables.hxx" - -#include "abi.hxx" -#include "share.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star::uno; - -//================================================================================================== -static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, - sal_uInt64 *pStack, sal_uInt32 nStack, - sal_uInt64 *pGPR, sal_uInt32 nGPR, - double *pFPR, sal_uInt32 nFPR) __attribute__((noinline)); - -static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, - sal_uInt64 *pStack, sal_uInt32 nStack, - sal_uInt64 *pGPR, sal_uInt32 nGPR, - double *pFPR, sal_uInt32 nFPR) -{ -#if OSL_DEBUG_LEVEL > 1 - // Let's figure out what is really going on here - { - fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR ); - for ( int i = 0; i < nGPR; ++i ) - fprintf( stderr, "0x%lx, ", pGPR[i] ); - fprintf( stderr, "\nFPR's (%d): ", nFPR ); - for ( int i = 0; i < nFPR; ++i ) - fprintf( stderr, "%f, ", pFPR[i] ); - fprintf( stderr, "\nStack (%d): ", nStack ); - for ( int i = 0; i < nStack; ++i ) - fprintf( stderr, "0x%lx, ", pStack[i] ); - fprintf( stderr, "\n" ); - } -#endif - - // The call instruction within the asm section of callVirtualMethod may throw - // exceptions. So that the compiler handles this correctly, it is important - // that (a) callVirtualMethod might call dummy_can_throw_anything (although this - // never happens at runtime), which in turn can throw exceptions, and (b) - // callVirtualMethod is not inlined at its call site (so that any exceptions are - // caught which are thrown from the instruction calling callVirtualMethod): - if ( !pThis ) - CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything( "xxx" ); // address something - - // Should not happen, but... - if ( nFPR > x86_64::MAX_SSE_REGS ) - nFPR = x86_64::MAX_SSE_REGS; - if ( nGPR > x86_64::MAX_GPR_REGS ) - nGPR = x86_64::MAX_GPR_REGS; - - // Get pointer to method - sal_uInt64 pMethod = *((sal_uInt64 *)pThis); - pMethod += 8 * nVtableIndex; - pMethod = *((sal_uInt64 *)pMethod); - - // Load parameters to stack, if necessary - if ( nStack ) - { - // 16-bytes aligned - sal_uInt32 nStackBytes = ( ( nStack + 1 ) >> 1 ) * 16; - sal_uInt64 *pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes ); - memcpy( pCallStack, pStack, nStackBytes ); - } - - // Return values - sal_uInt64 rax; - sal_uInt64 rdx; - double xmm0; - - asm volatile ( - - // Fill the xmm registers - "movq %2, %%rax\n\t" - - "movsd (%%rax), %%xmm0\n\t" - "movsd 8(%%rax), %%xmm1\n\t" - "movsd 16(%%rax), %%xmm2\n\t" - "movsd 24(%%rax), %%xmm3\n\t" - "movsd 32(%%rax), %%xmm4\n\t" - "movsd 40(%%rax), %%xmm5\n\t" - "movsd 48(%%rax), %%xmm6\n\t" - "movsd 56(%%rax), %%xmm7\n\t" - - // Fill the general purpose registers - "movq %1, %%rax\n\t" - - "movq (%%rax), %%rdi\n\t" - "movq 8(%%rax), %%rsi\n\t" - "movq 16(%%rax), %%rdx\n\t" - "movq 24(%%rax), %%rcx\n\t" - "movq 32(%%rax), %%r8\n\t" - "movq 40(%%rax), %%r9\n\t" - - // Perform the call - "movq %0, %%r11\n\t" - "movq %3, %%rax\n\t" - "call *%%r11\n\t" - - // Fill the return values - "movq %%rax, %4\n\t" - "movq %%rdx, %5\n\t" - "movsd %%xmm0, %6\n\t" - : - : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ), - "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ) - : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11" - ); - - switch (pReturnTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - *reinterpret_cast<sal_uInt64 *>( pRegisterReturn ) = rax; - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_ENUM: - *reinterpret_cast<sal_uInt32 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt32*>( &rax ); - break; - case typelib_TypeClass_CHAR: - case typelib_TypeClass_SHORT: - case typelib_TypeClass_UNSIGNED_SHORT: - *reinterpret_cast<sal_uInt16 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt16*>( &rax ); - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - *reinterpret_cast<sal_uInt8 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt8*>( &rax ); - break; - case typelib_TypeClass_FLOAT: - case typelib_TypeClass_DOUBLE: - *reinterpret_cast<double *>( pRegisterReturn ) = xmm0; - break; - default: - { - sal_Int32 const nRetSize = pReturnTypeDescr->nSize; - if (bSimpleReturn && nRetSize <= 16 && nRetSize > 0) - { - if (nRetSize > 8) - static_cast<sal_uInt64 *>(pRegisterReturn)[1] = rdx; - static_cast<sal_uInt64 *>(pRegisterReturn)[0] = rax; - } - break; - } - } -} - -//================================================================================================== - -// Macros for easier insertion of values to registers or stack -// pSV - pointer to the source -// nr - order of the value [will be increased if stored to register] -// pFPR, pGPR - pointer to the registers -// pDS - pointer to the stack [will be increased if stored here] - -// The value in %xmm register is already prepared to be retrieved as a float, -// thus we treat float and double the same -#define INSERT_FLOAT_DOUBLE( pSV, nr, pFPR, pDS ) \ - if ( nr < x86_64::MAX_SSE_REGS ) \ - pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim! - -#define INSERT_INT64( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); - -#define INSERT_INT32( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV ); - -#define INSERT_INT16( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV ); - -#define INSERT_INT8( pSV, nr, pGPR, pDS ) \ - if ( nr < x86_64::MAX_GPR_REGS ) \ - pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \ - else \ - *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV ); - -//================================================================================================== - -static void cpp_call( - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, - bridges::cpp_uno::shared::VtableSlot aVtableSlot, - typelib_TypeDescriptionReference * pReturnTypeRef, - sal_Int32 nParams, typelib_MethodParameter * pParams, - void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -{ - // Maxium space for [complex ret ptr], values | ptr ... - // (but will be used less - some of the values will be in pGPR and pFPR) - sal_uInt64 *pStack = (sal_uInt64 *)__builtin_alloca( (nParams + 3) * sizeof(sal_uInt64) ); - sal_uInt64 *pStackStart = pStack; - - sal_uInt64 pGPR[x86_64::MAX_GPR_REGS]; - sal_uInt32 nGPR = 0; - - double pFPR[x86_64::MAX_SSE_REGS]; - sal_uInt32 nFPR = 0; - - // Return - typelib_TypeDescription * pReturnTypeDescr = 0; - TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); - - void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion (see below) - - bool bSimpleReturn = true; - if ( pReturnTypeDescr ) - { - if ( x86_64::return_in_hidden_param( pReturnTypeRef ) ) - bSimpleReturn = false; - - if ( bSimpleReturn ) - pCppReturn = pUnoReturn; // direct way for simple types - else - { - // complex return via ptr - pCppReturn = bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )? - __builtin_alloca( pReturnTypeDescr->nSize ) : pUnoReturn; - INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack ); - } - } - - // Push "this" pointer - void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset; - INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack ); - - // Args - void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); - // Indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); - // Type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); - - sal_Int32 nTempIndizes = 0; - - for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) - { - const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - - if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) - { - uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr, - pThis->getBridge()->getUno2Cpp() ); - - switch (pParamTypeDescr->eTypeClass) - { - case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: - INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: - case typelib_TypeClass_ENUM: - INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_SHORT: - case typelib_TypeClass_CHAR: - case typelib_TypeClass_UNSIGNED_SHORT: - INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_BOOLEAN: - case typelib_TypeClass_BYTE: - INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack ); - break; - case typelib_TypeClass_FLOAT: - case typelib_TypeClass_DOUBLE: - INSERT_FLOAT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack ); - break; - } - - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - else // ptr to complex value | ref - { - if (! rParam.bIn) // is pure out - { - // cpp out is constructed mem, uno out is not! - uno_constructData( - pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pParamTypeDescr ); - pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - // is in/inout - else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) - { - uno_copyAndConvertData( - pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), - pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); - - pTempIndizes[nTempIndizes] = nPos; // has to be reconverted - // will be released at reconversion - ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; - } - else // direct way - { - pCppArgs[nPos] = pUnoArgs[nPos]; - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack ); - } - } - - try - { - callVirtualMethod( - pAdjustedThisPtr, aVtableSlot.index, - pCppReturn, pReturnTypeDescr, bSimpleReturn, - pStackStart, ( pStack - pStackStart ), - pGPR, nGPR, - pFPR, nFPR ); - // NO exception occured... - *ppUnoExc = 0; - - // reconvert temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; - - if (pParams[nIndex].bIn) - { - if (pParams[nIndex].bOut) // inout - { - uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - } - else // pure out - { - uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - } - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); - - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); - } - // return value - if (pCppReturn && pUnoReturn != pCppReturn) - { - uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, - pThis->getBridge()->getCpp2Uno() ); - uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); - } - } - catch (...) - { - // fill uno exception - fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); - - // temporary params - for ( ; nTempIndizes--; ) - { - sal_Int32 nIndex = pTempIndizes[nTempIndizes]; - // destroy temp cpp param => cpp: every param was constructed - uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); - TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); - } - // return type - if (pReturnTypeDescr) - TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); - } -} - -//================================================================================================== - -namespace bridges { namespace cpp_uno { namespace shared { - -void unoInterfaceProxyDispatch( - uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, - void * pReturn, void * pArgs[], uno_Any ** ppException ) -{ - // is my surrogate - bridges::cpp_uno::shared::UnoInterfaceProxy * pThis - = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI); - typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; - - switch (pMemberDescr->eTypeClass) - { - case typelib_TypeClass_INTERFACE_ATTRIBUTE: - { - // determine vtable call index - sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); - - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceAttributeTypeDescription const * >( - pMemberDescr))); - - if (pReturn) - { - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, - 0, 0, // no params - pReturn, pArgs, ppException ); - } - else - { - // is SET - typelib_MethodParameter aParam; - aParam.pTypeRef = - ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; - aParam.bIn = sal_True; - aParam.bOut = sal_False; - - typelib_TypeDescriptionReference * pReturnTypeRef = 0; - OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); - typelib_typedescriptionreference_new( - &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); - - // dependent dispatch - aVtableSlot.index += 1; // get, then set method - cpp_call( - pThis, aVtableSlot, // get, then set method - pReturnTypeRef, - 1, &aParam, - pReturn, pArgs, ppException ); - - typelib_typedescriptionreference_release( pReturnTypeRef ); - } - - break; - } - case typelib_TypeClass_INTERFACE_METHOD: - { - // determine vtable call index - sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); - - VtableSlot aVtableSlot( - getVtableSlot( - reinterpret_cast< - typelib_InterfaceMethodTypeDescription const * >( - pMemberDescr))); - - switch (aVtableSlot.index) - { - // standard calls - case 1: // acquire uno interface - (*pUnoI->acquire)( pUnoI ); - *ppException = 0; - break; - case 2: // release uno interface - (*pUnoI->release)( pUnoI ); - *ppException = 0; - break; - case 0: // queryInterface() opt - { - typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); - if (pTD) - { - uno_Interface * pInterface = 0; - (*pThis->getBridge()->getUnoEnv()->getRegisteredInterface)( - pThis->getBridge()->getUnoEnv(), - (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); - - if (pInterface) - { - ::uno_any_construct( - reinterpret_cast< uno_Any * >( pReturn ), - &pInterface, pTD, 0 ); - (*pInterface->release)( pInterface ); - TYPELIB_DANGER_RELEASE( pTD ); - *ppException = 0; - break; - } - TYPELIB_DANGER_RELEASE( pTD ); - } - } // else perform queryInterface() - default: - // dependent dispatch - cpp_call( - pThis, aVtableSlot, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, - ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, - pReturn, pArgs, ppException ); - } - break; - } - default: - { - ::com::sun::star::uno::RuntimeException aExc( - OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); - - Type const & rExcType = ::getCppuType( &aExc ); - // binary identical null reference - ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); - } - } -} - -} } } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bridges/source/cpp_uno/shared/vtablefactory.cxx b/bridges/source/cpp_uno/shared/vtablefactory.cxx index b13c85248ed2..02247de10bf3 100644 --- a/bridges/source/cpp_uno/shared/vtablefactory.cxx +++ b/bridges/source/cpp_uno/shared/vtablefactory.cxx @@ -82,7 +82,7 @@ namespace { extern "C" void * SAL_CALL allocExec(rtl_arena_type *, sal_Size * size) { sal_Size pagesize; #if defined SAL_UNX -#if defined FREEBSD || defined NETBSD +#if defined FREEBSD || defined NETBSD || defined OPENBSD pagesize = getpagesize(); #else pagesize = sysconf(_SC_PAGESIZE); diff --git a/configure.in b/configure.in index 7a9dc4317e88..ec349b6371bb 100644 --- a/configure.in +++ b/configure.in @@ -1037,9 +1037,6 @@ AC_ARG_WITH(os-version, Usage: --with-os-version=<OSVERSION> ],,) -AC_ARG_WITH(unzip-home, -[ --with-unzip-home Deprecated: use --with-zip-home instead],,) - AC_ARG_WITH(zip-home, [ --with-zip-home If you use a non standard zip, for example windows please supply the path for zip @@ -1382,9 +1379,21 @@ case "$build_os" in test_cups=no test_randr=no test_freetype=yes - PTHREAD_LIBS=-pthread + PTHREAD_LIBS=-pthread _os=AIX ;; + openbsd*) + test_x=yes + test_gtk=yes + build_cairo=yes + test_kde=yes + test_cups=yes + test_freetype=yes + test_randr=yes + PTHREAD_CFLAGS="-pthread -D_THREAD_SAFE" + PTHREAD_LIBS="-pthread" + _os=OpenBSD + ;; *) AC_MSG_ERROR([$_os operating system is not suitable to build LibreOffice!]) ;; @@ -3629,6 +3638,9 @@ if test "$enable_epm" = "yes"; then AIX) PKGFORMAT=rpm ;; + OpenBSD) + PKGFORMAT=portable + ;; *BSD) PKGFORMAT=bsd ;; @@ -5375,7 +5387,7 @@ fi dnl =================================================================== dnl Check for system openssl dnl =================================================================== -if test "$_os" = "Darwin" -o "$_os" = "NetBSD" && test "$with_system_openssl" != "no"; then +if test "$_os" = "Darwin" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" && test "$with_system_openssl" != "no"; then with_system_openssl=yes fi AC_MSG_CHECKING([which libssl to use]) @@ -5384,7 +5396,7 @@ if test -n "$with_system_openssl" -o -n "$with_system_libs" && \ AC_MSG_RESULT([external]) # Mac OS builds should get out without extra stuff is the Mac porters' # wish. And pkg-config is although Xcode ships a .pc for openssl - if test "$_os" = "Darwin" -o "$_os" = "NetBSD" ; then + if test "$_os" = "Darwin" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" ; then OPENSSL_CFLAGS= OPENSSL_LIBS="-lssl -lcrypto" else @@ -5882,12 +5894,6 @@ ASM_HOME="$with_asm_home" AC_SUBST(ASM_HOME) dnl =================================================================== -dnl testing handle deprecated unzip switch -dnl =================================================================== -if test -z "$with_zip_home"; then - with_zip_home="$with_unzip_home" -fi -dnl =================================================================== dnl Zip will be found where you tell me to find it dnl =================================================================== if test -n "$with_zip_home" ; then @@ -6999,7 +7005,7 @@ else LIGHTPROOF_LANG= # check whether the langs are requested at all for lang in $wanted_lightproof ; do - if test -n "`echo $with_lang | grep "$lang"`" ; then + if test "$with_lang" = "ALL" -o -n "`echo $with_lang | grep "$lang"`" ; then LIGHTPROOF_LANG="$LIGHTPROOF_LANG $lang" fi done @@ -7173,7 +7179,7 @@ else SUNTEMPLATES_LANG= # check whether the langs are requested at all for lang in $wanted_sun_templates ; do - if test -n "`echo $with_lang | grep "$lang"`" ; then + if test "$with_lang" = "ALL" -o -n "`echo $with_lang | grep "$lang"`" ; then SUNTEMPLATES_LANG="$SUNTEMPLATES_LANG $lang" fi done @@ -7665,7 +7671,7 @@ dnl =================================================================== dnl Number of CPUs to use during the build dnl =================================================================== AC_MSG_CHECKING([for number of processors to use]) -if test "z`uname -s`" = "zDarwin"; then +if test "z`uname -s`" = "zDarwin" -o "z`uname -s`" = "zOpenBSD"; then BUILD_NCPUS=`sysctl -n hw.ncpu` else BUILD_NCPUS=`grep $'^processor\t*:' /proc/cpuinfo | wc -l` diff --git a/connectivity/source/drivers/adabas/BDriver.cxx b/connectivity/source/drivers/adabas/BDriver.cxx index fb1df922ccfb..8c702e1793b0 100644 --- a/connectivity/source/drivers/adabas/BDriver.cxx +++ b/connectivity/source/drivers/adabas/BDriver.cxx @@ -1028,7 +1028,7 @@ int ODriver::X_PARAM(const ::rtl::OUString& _DBNAME, oslProcess aApp; #if OSL_DEBUG_LEVEL > 0 - oslProcesError eError = + oslProcessError eError = #endif osl_executeProcess(sCommandFile.pData, NULL, 0, osl_Process_HIDDEN | osl_Process_WAIT, @@ -1071,7 +1071,7 @@ void ODriver::PutParam(const ::rtl::OUString& sDBName, #if OSL_DEBUG_LEVEL > 0 - oslProcesError eError = + oslProcessError eError = #endif osl_executeProcess(sCommand.pData, pArgs, nArgsCount, OPROCESS_ADABAS, @@ -1180,7 +1180,7 @@ int ODriver::X_STOP(const ::rtl::OUString& sDBName) ::rtl::OUString sArg2 = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-NoDBService")); const sal_uInt32 nArgsCount = 3; - rtl_uString* pArgs[nArgsCount] = { sArg1.pData, sDBName.pData, sArg3.pData }; + rtl_uString* pArgs[nArgsCount] = { sArg1.pData, sDBName.pData, sArg2.pData }; sCommand = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("stp.exe")); #else const sal_uInt32 nArgsCount = 1; @@ -1249,7 +1249,7 @@ void ODriver::XUTIL(const ::rtl::OUString& _rParam, #if OSL_DEBUG_LEVEL > 0 - oslProcesError eError = + oslProcessError eError = #endif osl_executeProcess(sCommandFile.pData, NULL, 0, osl_Process_HIDDEN | osl_Process_WAIT, @@ -1311,7 +1311,7 @@ void ODriver::LoadBatch(const ::rtl::OUString& sDBName, #if OSL_DEBUG_LEVEL > 0 - oslProcesError eError = + oslProcessError eError = #endif osl_executeProcess(sCommandFile.pData, NULL, 0, osl_Process_HIDDEN | osl_Process_WAIT, diff --git a/connectivity/source/drivers/ado/makefile.mk b/connectivity/source/drivers/ado/makefile.mk index 8fdae27db992..54bebe6a2824 100644 --- a/connectivity/source/drivers/ado/makefile.mk +++ b/connectivity/source/drivers/ado/makefile.mk @@ -86,6 +86,7 @@ SHL1STDLIBS=\ $(CPPULIB) \ $(CPPUHELPERLIB) \ $(SALLIB) \ + $(SALHELPERLIB) \ $(OLE32LIB) \ $(OLEAUT32LIB) \ $(UUIDLIB) \ diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx index 3cf9abe0934e..c248af3228e5 100644 --- a/cppu/source/typelib/typelib.cxx +++ b/cppu/source/typelib/typelib.cxx @@ -275,6 +275,7 @@ inline void TypeDescriptor_Init_Impl::callChain( //__________________________________________________________________________________________________ TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () ) { +#ifndef CPPU_LEAK_STATIC_DATA if( pCache ) { TypeDescriptionList_Impl::const_iterator aIt = pCache->begin(); @@ -354,6 +355,7 @@ TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () ) #endif delete pCallbacks; pCallbacks = 0; +#endif // CPPU_LEAK_STATIC_DATA if( pMutex ) { diff --git a/cppu/source/uno/data.cxx b/cppu/source/uno/data.cxx index 7fb77a81c308..6d2982981d35 100644 --- a/cppu/source/uno/data.cxx +++ b/cppu/source/uno/data.cxx @@ -360,7 +360,8 @@ sal_Bool SAL_CALL uno_type_isAssignableFromData( #endif #if defined(INTEL) \ - && (defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OS2)) || defined(MACOSX) \ + && (defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OS2) || \ + defined(OPENBSD)) || defined(MACOSX) \ || defined(__SUNPRO_CC) && defined(SOLARIS)) #define MAX_ALIGNMENT_4 #endif @@ -373,7 +374,8 @@ sal_Bool SAL_CALL uno_type_isAssignableFromData( if (OFFSET_OF(s, m) != n) { fprintf( stderr, "### OFFSET_OF(" #s ", " #m ") = %d instead of expected %d!!!\n", OFFSET_OF(s, m), n ); abort(); } #if OSL_DEBUG_LEVEL > 1 -#if defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD)) && (defined(INTEL) || defined(POWERPC) || defined(X86_64) || defined(S390)) +#if defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OPENBSD)) && \ + (defined(INTEL) || defined(POWERPC) || defined(X86_64) || defined(S390)) #define BINTEST_VERIFYSIZE( s, n ) \ fprintf( stderr, "> sizeof(" #s ") = %d; __alignof__ (" #s ") = %d\n", sizeof(s), __alignof__ (s) ); \ if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %d instead of expected %d!!!\n", sizeof(s), n ); abort(); } diff --git a/cppu/util/makefile.mk b/cppu/util/makefile.mk index 2e52c28b5193..f86835309323 100644 --- a/cppu/util/makefile.mk +++ b/cppu/util/makefile.mk @@ -60,7 +60,7 @@ SHL1STDLIBS = $(SALLIB) SHL1DEPN= SHL1IMPLIB=i$(TARGET) -.IF "$(OS)"!="FREEBSD" +.IF "$(OS)"!="FREEBSD" && "$(OS)"!="OPENBSD" SHL1DEF=$(MISC)$/$(SHL1TARGET).def .ENDIF diff --git a/cppu/util/target.pmk b/cppu/util/target.pmk index 3befcb154753..70be64b8e3f4 100644 --- a/cppu/util/target.pmk +++ b/cppu/util/target.pmk @@ -45,9 +45,16 @@ CFLAGS += -O .ELSE -# msvc++: no inlining .IF "$(COM)" == "MSC" +# msvc++: no inlining CFLAGS += -Ob0 +.IF "$(cppu_no_leak)" == "" +.IF "$(bndchk)" == "" +# msvc++: workaround for strange crash at exit: just don't do the +# cleanup of types and whatnot... +CFLAGS += -DCPPU_LEAK_STATIC_DATA +.ENDIF +.ENDIF .ENDIF .ENDIF diff --git a/cppunit/makefile.mk b/cppunit/makefile.mk index 50d489322d31..26e68450277a 100644 --- a/cppunit/makefile.mk +++ b/cppunit/makefile.mk @@ -142,7 +142,7 @@ OOO_STLPORT_LIBS += -lstdc++ # execute that program; however, the program would fail to locate the STLport # library (another work-around might be to add something like --as-needed around # $(LIBSTLPORT)): -.IF "$(OS)" == "FREEBSD" || "$(OS)" == "LINUX" || "$(OS)" == "SOLARIS" +.IF "$(OS)" == "FREEBSD" || "$(OS)" == "LINUX" || "$(OS)" == "SOLARIS" || "$(OS)" == "OPENBSD" .IF "$(LD_LIBRARY_PATH)" == "" LD_LIBRARY_PATH := $(SOLARLIBDIR) # strictly speaking, this is incorrect if the LD_LIBRARY_PATH environment @@ -183,6 +183,8 @@ OUT2LIB = ooo-install/lib/libcppunit-1.12.1.dylib EXTRPATH = NONE .ELIF "$(OS)" == "AIX" OUT2LIB = ooo-install/lib/libcppunit-1.12.a +.ELIF "$(OS)" == "OPENBSD" +OUT2LIB = ooo-install/lib/libcppunit-1.12.so.1.0 .ELSE OUT2LIB = ooo-install/lib/libcppunit-1.12.so.1 .END diff --git a/cppunit/prj/d.lst b/cppunit/prj/d.lst index e881e4a2d033..3e30ad21bbf0 100644 --- a/cppunit/prj/d.lst +++ b/cppunit/prj/d.lst @@ -24,6 +24,9 @@ symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.1.dylib %_DEST%\lib%_EXT%\libcppunit. ..\%__SRC%\lib\libcppunit-1.12.so.1 %_DEST%\lib%_EXT%\libcppunit-1.12.so.1 symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.so.1 %_DEST%\lib%_EXT%\libcppunit.so +..\%__SRC%\lib\libcppunit-1.12.so.1.0 %_DEST%\lib%_EXT%\libcppunit-1.12.so.1.0 +symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.so.1.0 %_DEST%\lib%_EXT%\libcppunit.so + ..\%__SRC%\lib\libcppunit-1.12.a %_DEST%\lib%_EXT%\libcppunit-1.12.a symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.a %_DEST%\lib%_EXT%\libcppunit.a diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx index 3287aa61072b..d035d1480648 100644 --- a/dbaccess/source/core/api/RowSet.cxx +++ b/dbaccess/source/core/api/RowSet.cxx @@ -1665,7 +1665,7 @@ Reference< XResultSet > ORowSet::impl_prepareAndExecute_throw() catch( const SQLException& ) { SQLExceptionInfo aError( ::cppu::getCaughtException() ); - OSL_ENSURE( aError.is(), "ORowSet::impl_prepareAndExecute_throw: caught an SQLException which we cannot analyze!" ); + OSL_ENSURE( aError.isValid(), "ORowSet::impl_prepareAndExecute_throw: caught an SQLException which we cannot analyze!" ); // append information about what we were actually going to execute try diff --git a/dbaccess/source/ui/querydesign/QTableWindow.cxx b/dbaccess/source/ui/querydesign/QTableWindow.cxx index 405bd8870fab..45135346cde9 100644 --- a/dbaccess/source/ui/querydesign/QTableWindow.cxx +++ b/dbaccess/source/ui/querydesign/QTableWindow.cxx @@ -188,7 +188,7 @@ void OQueryTableWindow::OnEntryDoubleClicked(SvLBoxEntry* pEntry) sal_Bool OQueryTableWindow::ExistsField(const ::rtl::OUString& strFieldName, OTableFieldDescRef& rInfo) { DBG_ASSERT(m_pListBox != NULL, "OQueryTableWindow::ExistsField : habe keine ::com::sun::star::form::ListBox !"); - OSL_ENSURE(rInfo.isValid(),"OQueryTableWindow::ExistsField: invlid argument for OTableFieldDescRef!"); + OSL_ENSURE(rInfo.is(),"OQueryTableWindow::ExistsField: invlid argument for OTableFieldDescRef!"); Reference< XConnection> xConnection = getTableView()->getDesignView()->getController().getConnection(); sal_Bool bExists = sal_False; if(xConnection.is()) diff --git a/default_images/brand/about-pt_BR.png b/default_images/brand/about-pt_BR.png Binary files differindex 2c024598a5e7..2c024598a5e7 100755..100644 --- a/default_images/brand/about-pt_BR.png +++ b/default_images/brand/about-pt_BR.png diff --git a/default_images/brand/shell/backing_hc-pt_BR.png b/default_images/brand/shell/backing_hc-pt_BR.png Binary files differindex 0549dda178ee..c023ea7759f8 100644 --- a/default_images/brand/shell/backing_hc-pt_BR.png +++ b/default_images/brand/shell/backing_hc-pt_BR.png diff --git a/default_images/brand/shell/backing_left-pt_BR.png b/default_images/brand/shell/backing_left-pt_BR.png Binary files differindex bbaf0ef2bc57..c023ea7759f8 100644 --- a/default_images/brand/shell/backing_left-pt_BR.png +++ b/default_images/brand/shell/backing_left-pt_BR.png diff --git a/default_images/brand/shell/backing_left-pt_BR.svg b/default_images/brand/shell/backing_left-pt_BR.svg new file mode 100644 index 000000000000..402f0951a39d --- /dev/null +++ b/default_images/brand/shell/backing_left-pt_BR.svg @@ -0,0 +1,1054 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="569" + height="582" + id="svg3365" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="Start Center (start_OOo_left, start_OOo_middle, start_OOo_right).svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <defs + id="defs3367"> + <linearGradient + id="linearGradient7426"> + <stop + id="stop7428" + offset="0" + style="stop-color:#f2f2f2;stop-opacity:1" /> + <stop + id="stop7430" + offset="1" + style="stop-color:#ffffff;stop-opacity:1" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3373" /> + <inkscape:perspective + id="perspective2777" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2588" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,-750.5598)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2591" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,250.4502)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4800" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3742" /> + <inkscape:perspective + id="perspective3744" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2870" /> + <inkscape:perspective + id="perspective2557" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2531" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2854" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective4034" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3939" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3852" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + id="perspective3771" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective59" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3532" /> + <inkscape:perspective + id="perspective2543" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2818" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2521" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4715" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4717" /> + <inkscape:perspective + id="perspective4719" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4721" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4723" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4725" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4727" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4729" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4731" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4733" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4735" /> + <inkscape:perspective + id="perspective4737" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4739" /> + <inkscape:perspective + id="perspective4741" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4743" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4211" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="391.03 : 12.41 : 1" + inkscape:persp3d-origin="195.515 : 8.2733332 : 1" + id="perspective3301" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="399.49701 : 12.41 : 1" + inkscape:persp3d-origin="199.7485 : 8.2733332 : 1" + id="perspective3226" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3158" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3146" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2742" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2740" /> + <inkscape:perspective + id="perspective2738" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2736" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2734" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2732" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2730" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2728" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2726" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2724" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2753" /> + <inkscape:perspective + id="perspective2721" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2719" /> + <inkscape:perspective + id="perspective2717" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2715" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="401.944 : 18.512501 : 1" + inkscape:persp3d-origin="200.972 : 12.341667 : 1" + id="perspective2645" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="385.51999 : 18.512501 : 1" + inkscape:persp3d-origin="192.75999 : 12.341667 : 1" + id="perspective2633" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2474" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2426" /> + <inkscape:perspective + id="perspective2709" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2567" + inkscape:persp3d-origin="116.447 : 10.698667 : 1" + inkscape:vp_z="232.894 : 16.048 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16.048 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2664" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,-750.5598)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2667" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,250.4502)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.6224435" + inkscape:cx="640.79795" + inkscape:cy="255.59842" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1264" + inkscape:window-height="750" + inkscape:window-x="0" + inkscape:window-y="14" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="0,1" + position="70.744936,429.98395" + id="guide2449" /> + <sodipodi:guide + orientation="1,0" + position="75.990283,486.6068" + id="guide2451" /> + <sodipodi:guide + orientation="0,1" + position="62.002691,482.57192" + id="guide2453" /> + <sodipodi:guide + orientation="1,0" + position="363.67739,427.83202" + id="guide2455" /> + </sodipodi:namedview> + <metadata + id="metadata3370"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Camada 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-86.928567,-218.505)"> + <text + transform="scale(1.0168078,0.98347)" + font-size="103.091" + id="text43" + style="font-size:48.89245605px;font-family:Vegur-Regular" + x="2379.1858" + y="704.18951" /> + <text + transform="scale(0.9979479,1.0020563)" + font-size="103.091" + id="text3748" + style="font-size:91.03964996px;font-family:Vegur-Regular" + x="2273.7813" + y="577.92413" /> + <g + id="g2673" + inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Start Center (start_OOo_left, start_OOo_middle, start_OOo_right).png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <image + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_left.png" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWkAAAJGCAYAAACZaXQwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAALc5JREFUeNrs3QuYVXW9//HfmgEEAQHlJigK QagUapqGaV5OebwValImR9O//sfHjj1qHbtZmp20TpbHjv31gb8ePZq3LInUtLygadrxL2l4QAwF L4ggyB25KOz/fJasYc3av99av7X23jN7D+/X8+xnhj179szsYT7ru76/ywpaWlpMo5o6dWpgAKAL 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 " + width="361" + height="582" + id="image10968" + x="86.928566" + y="218.505" + style="display:inline" /> + <image + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_right.png" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAAJGCAYAAAD1SnEcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAAQxBJREFUeNrsnQeQXMl53/9vZnZmZ3NEBg44 XMYdLvN4JimSoo4iqWSppJIt2bJluY7loLJKLsmqkmyZtlWUqVCiaYviWYEWJZVIiqIiRfEYdTwe LycSB9whZ2Cxi81hwmv3193vzZvZCW8CsAvs/398nNnJM+jf+0J//XUKgAeKukp69NFH1bX62T3C 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 irBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFooiLBRFERaKIiwURVgoirBQFGGhKMJCURRhoSjCQlGE haIIC0URFooiLBRFWCiKIiwURVgoirBQFGGhKMJCUYSFoggLRVGEhaIIC0URFooiLBRFWCiKsFAU RVgoirBQFGGhKMJCUYSFoggLRREWiqIIC0URFooiLBRFWCiKsFAUYaEoirBQFGGhKMJCUYSFoggL RREWiiIsFEURFooiLBRFWCiKsFAUYaEowkJRhIWiKMJCUYSFoggLRREWiiIsFEVYKIoiLBRFWCiK sFAUYaEowkJRhIWiCAtFUYSFoggLRREWiiIsFEVYKIqwUBRhoSiKsFAUYaEowkJRhIWiCAtFERaK oggLRREWiiIsFEVYKIqwUBRhoSjCQlEUYaEowkJRhIWiCAtFERaKIiwURREWiiIsFEVYKIqwUBRh oSjCQlGEhaIowkJRhIWiCAtFERaKIiwURVgoirBQFEVYKIqwUBRhoSjCQlGEhaIIC0VRhIWiCAtF ERaKIiwURVgoirBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFoqiCAtFERaKIiwURVgoirBQFGGhKMJC URRhoSjCQlGEhaIIC0URFooiLBRFWCiKIiwURVgoirBQFGGhKMJCUYSFoijCQlGEhaIIC0URFooi LBRFWCiKsFAURVgoirBQFGGhKMJCUYSFoggLRREWiqIIC0URFooiLBRFWCiKsFAUYaEoirBQFGGh KMJCUYSFoggLRREWiiIsFEURFooiLBRFWCiKsFAUYaEowkJRFGGhKMJCUYSFoggLRREWiiIsFEVY KIoiLBRFWCiKsFAUYaEowkJRhIWiCAtFUYSFoggLRREWiiIsFEVYKIqwUBRFWCiKsFAUYaEowkJR hIWiCAtFERaKoggLRREWiiIsFEVYKIqwUBRhoSiKsFAUYaEowkJRhIWiCAtFERaKIiwURREWiiIs FEVYKIqwUBRhoSjCQlGEhaIowkJRhIWiCAtFERaKIiwURVgoiiIsFEVYKIqwUBRhoSjCQlGEhaII C0VRhIWiCAtFERaKIiwURVgoirBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFoqiCAtFERaKIiwURVgo irBQFGGhKMJCURRhoSjCQlGEhaIIC0URFooiLBRFERaKIiwURVgoirBQFGGhKMJCUYSFoijCQlGE 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 TkSuQmCC " + width="203" + height="582" + id="image10982" + x="452.92856" + y="218.505" + style="display:inline" /> + <image + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/test.png" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAJGCAYAAACTPE8OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAAAK5JREFUeNrs2jEOgzAMhWEn4XK9SHIKBs4N IaVrMJLBFTD8llg+PdsMiMlBRIJ0FUUpFQet3Y7nZkZze7w+81zSieqiZG5Pvu3pZZhz/vQY2lbX v08QBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBMFHcCilTD3+TkfHXXJ7Fg2rOenE2bx9vuuV 6l0zX4irGasv2Xzb7dj+nDy8IbfNVNuTKKfdh+j4M3wFGADTUDWBAr7xEgAAAABJRU5ErkJggg== " + width="5" + height="582" + id="image11010" + x="447.92856" + y="218.505" + style="display:inline" /> + <rect + y="250.505" + x="122.92857" + height="500" + width="487" + id="rect11032" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + y="250.505" + x="122.92857" + height="40" + width="487" + id="rect11255" + style="fill:url(#linearGradient2667);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + transform="scale(1,-1)" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + style="fill:url(#linearGradient2664);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect11303" + width="487" + height="40" + x="122.92857" + y="-750.505" /> + <g + transform="matrix(0.6722998,0,0,0.6722996,239.51336,-664.5004)" + id="g11259" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_right.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z" + id="path11261" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z" + id="path11263" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11265" + d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z" + id="path11267" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11269" + d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z" + id="path11271" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11273" + d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z" + id="path11275" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11277" + d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z" + id="path11279" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11281" + d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z" + id="path11283" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11285" + d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z" + id="path11287" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11289" + d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z" + id="path11291" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z" + id="path11293" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11295" + d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z" + id="path11297" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11299" + d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z" + id="path11301" + sodipodi:nodetypes="csccscccc" /> + </g> + <g + transform="matrix(0.6723,0,0,0.6723,122.92857,-918.4395)" + id="g11124" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_left.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + sodipodi:nodetypes="csccscccc" + id="path11126" + d="M 101.93612,1738.725 C 101.18148,1738.706 100.43803,1739.1779 100.14306,1739.8632 C 99.848073,1740.5485 100.02025,1741.4039 100.55836,1741.9261 L 116.75462,1758.1736 C 117.27697,1758.6968 118.12749,1758.8703 118.81733,1758.5942 C 119.50718,1758.3182 119.99483,1757.6092 119.99999,1756.875 L 119.99999,1740.5974 C 120.00199,1739.6166 119.09611,1738.7233 118.10176,1738.725 L 101.93612,1738.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11128" + d="M 1.9361232,1838.725 C 1.1814832,1838.706 0.4380332,1839.1779 0.1430632,1839.8632 C -0.1519268,1840.5485 0.0202532,1841.4039 0.5583632,1841.9261 L 16.754623,1858.1736 C 17.276973,1858.6968 18.127493,1858.8703 18.817333,1858.5942 C 19.507183,1858.3182 19.994833,1857.6092 19.999993,1856.875 L 19.999993,1840.5974 C 20.001993,1839.6166 19.096113,1838.7233 18.101763,1838.725 L 1.9361232,1838.725 L 1.9361232,1838.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,1738.725 C 1.1814832,1738.706 0.4380332,1739.1779 0.1430632,1739.8632 C -0.1519268,1740.5485 0.0202532,1741.4039 0.5583632,1741.9261 L 16.754623,1758.1736 C 17.276973,1758.6968 18.127493,1758.8703 18.817333,1758.5942 C 19.507183,1758.3182 19.994833,1757.6092 19.999993,1756.875 L 19.999993,1740.5974 C 20.001993,1739.6166 19.096113,1738.7233 18.101763,1738.725 L 1.9361232,1738.725 L 1.9361232,1738.725 z" + id="path11130" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11132" + d="M 21.936123,1738.725 C 21.181483,1738.706 20.438033,1739.1779 20.143063,1739.8632 C 19.848073,1740.5485 20.020253,1741.4039 20.558363,1741.9261 L 36.754623,1758.1736 C 37.276973,1758.6968 38.127493,1758.8703 38.817333,1758.5942 C 39.507183,1758.3182 39.994833,1757.6092 39.999993,1756.875 L 39.999993,1740.5974 C 40.001993,1739.6166 39.096113,1738.7233 38.101763,1738.725 L 21.936123,1738.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 41.936123,1738.725 C 41.181483,1738.706 40.438033,1739.1779 40.143063,1739.8632 C 39.848073,1740.5485 40.020253,1741.4039 40.558363,1741.9261 L 56.754623,1758.1736 C 57.276973,1758.6968 58.127493,1758.8703 58.817333,1758.5942 C 59.507183,1758.3182 59.994833,1757.6092 59.999993,1756.875 L 59.999993,1740.5974 C 60.001993,1739.6166 59.096113,1738.7233 58.101763,1738.725 L 41.936123,1738.725 L 41.936123,1738.725 z" + id="path11134" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11136" + d="M 61.936123,1738.725 C 61.181483,1738.706 60.438033,1739.1779 60.143063,1739.8632 C 59.848073,1740.5485 60.020253,1741.4039 60.558363,1741.9261 L 76.754623,1758.1736 C 77.276973,1758.6968 78.127493,1758.8703 78.817333,1758.5942 C 79.507183,1758.3182 79.994833,1757.6092 79.999993,1756.875 L 79.999993,1740.5974 C 80.001993,1739.6166 79.096113,1738.7233 78.101763,1738.725 L 61.936123,1738.725 L 61.936123,1738.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 81.936123,1738.725 C 81.181483,1738.706 80.438033,1739.1779 80.143063,1739.8632 C 79.848073,1740.5485 80.020253,1741.4039 80.558363,1741.9261 L 96.754623,1758.1736 C 97.276973,1758.6968 98.127493,1758.8703 98.817333,1758.5942 C 99.50718,1758.3182 99.99483,1757.6092 99.99999,1756.875 L 99.99999,1740.5974 C 100.00199,1739.6166 99.09611,1738.7233 98.101763,1738.725 L 81.936123,1738.725 z" + id="path11138" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11140" + d="M 1.9361232,1758.725 C 1.1814832,1758.706 0.4380332,1759.1779 0.1430632,1759.8632 C -0.1519268,1760.5485 0.0202532,1761.4039 0.5583632,1761.9261 L 16.754623,1778.1736 C 17.276973,1778.6968 18.127493,1778.8703 18.817333,1778.5942 C 19.507183,1778.3182 19.994833,1777.6092 19.999993,1776.875 L 19.999993,1760.5974 C 20.001993,1759.6166 19.096113,1758.7233 18.101763,1758.725 L 1.9361232,1758.725 L 1.9361232,1758.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 21.936123,1758.725 C 21.181483,1758.706 20.438033,1759.1779 20.143063,1759.8632 C 19.848073,1760.5485 20.020253,1761.4039 20.558363,1761.9261 L 36.754623,1778.1736 C 37.276973,1778.6968 38.127493,1778.8703 38.817333,1778.5942 C 39.507183,1778.3182 39.994833,1777.6092 39.999993,1776.875 L 39.999993,1760.5974 C 40.001993,1759.6166 39.096113,1758.7233 38.101763,1758.725 L 21.936123,1758.725 z" + id="path11142" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11144" + d="M 41.936123,1758.725 C 41.181483,1758.706 40.438033,1759.1779 40.143063,1759.8632 C 39.848073,1760.5485 40.020253,1761.4039 40.558363,1761.9261 L 56.754623,1778.1736 C 57.276973,1778.6968 58.127493,1778.8703 58.817333,1778.5942 C 59.507183,1778.3182 59.994833,1777.6092 59.999993,1776.875 L 59.999993,1760.5974 C 60.001993,1759.6166 59.096113,1758.7233 58.101763,1758.725 L 41.936123,1758.725 L 41.936123,1758.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 61.936123,1758.725 C 61.181483,1758.706 60.438033,1759.1779 60.143063,1759.8632 C 59.848073,1760.5485 60.020253,1761.4039 60.558363,1761.9261 L 76.754623,1778.1736 C 77.276973,1778.6968 78.127493,1778.8703 78.817333,1778.5942 C 79.507183,1778.3182 79.994833,1777.6092 79.999993,1776.875 L 79.999993,1760.5974 C 80.001993,1759.6166 79.096113,1758.7233 78.101763,1758.725 L 61.936123,1758.725 L 61.936123,1758.725 z" + id="path11146" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11148" + d="M 81.936123,1758.725 C 81.181483,1758.706 80.438033,1759.1779 80.143063,1759.8632 C 79.848073,1760.5485 80.020253,1761.4039 80.558363,1761.9261 L 96.754623,1778.1736 C 97.276973,1778.6968 98.127493,1778.8703 98.817333,1778.5942 C 99.50718,1778.3182 99.99483,1777.6092 99.99999,1776.875 L 99.99999,1760.5974 C 100.00199,1759.6166 99.09611,1758.7233 98.101763,1758.725 L 81.936123,1758.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,1778.725 C 1.1814832,1778.706 0.4380332,1779.1779 0.1430632,1779.8632 C -0.1519268,1780.5485 0.0202532,1781.4039 0.5583632,1781.9261 L 16.754623,1798.1736 C 17.276973,1798.6968 18.127493,1798.8703 18.817333,1798.5942 C 19.507183,1798.3182 19.994833,1797.6092 19.999993,1796.875 L 19.999993,1780.5974 C 20.001993,1779.6166 19.096113,1778.7233 18.101763,1778.725 L 1.9361232,1778.725 L 1.9361232,1778.725 z" + id="path11150" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11152" + d="M 21.936123,1778.725 C 21.181483,1778.706 20.438033,1779.1779 20.143063,1779.8632 C 19.848073,1780.5485 20.020253,1781.4039 20.558363,1781.9261 L 36.754623,1798.1736 C 37.276973,1798.6968 38.127493,1798.8703 38.817333,1798.5942 C 39.507183,1798.3182 39.994833,1797.6092 39.999993,1796.875 L 39.999993,1780.5974 C 40.001993,1779.6166 39.096113,1778.7233 38.101763,1778.725 L 21.936123,1778.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 41.936123,1778.725 C 41.181483,1778.706 40.438033,1779.1779 40.143063,1779.8632 C 39.848073,1780.5485 40.020253,1781.4039 40.558363,1781.9261 L 56.754623,1798.1736 C 57.276973,1798.6968 58.127493,1798.8703 58.817333,1798.5942 C 59.507183,1798.3182 59.994833,1797.6092 59.999993,1796.875 L 59.999993,1780.5974 C 60.001993,1779.6166 59.096113,1778.7233 58.101763,1778.725 L 41.936123,1778.725 L 41.936123,1778.725 z" + id="path11154" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11156" + d="M 61.936123,1778.725 C 61.181483,1778.706 60.438033,1779.1779 60.143063,1779.8632 C 59.848073,1780.5485 60.020253,1781.4039 60.558363,1781.9261 L 76.754623,1798.1736 C 77.276973,1798.6968 78.127493,1798.8703 78.817333,1798.5942 C 79.507183,1798.3182 79.994833,1797.6092 79.999993,1796.875 L 79.999993,1780.5974 C 80.001993,1779.6166 79.096113,1778.7233 78.101763,1778.725 L 61.936123,1778.725 L 61.936123,1778.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11158" + d="M 1.9361232,1798.725 C 1.1814832,1798.706 0.4380332,1799.1779 0.1430632,1799.8632 C -0.1519268,1800.5485 0.0202532,1801.4039 0.5583632,1801.9261 L 16.754623,1818.1736 C 17.276973,1818.6968 18.127493,1818.8703 18.817333,1818.5942 C 19.507183,1818.3182 19.994833,1817.6092 19.999993,1816.875 L 19.999993,1800.5974 C 20.001993,1799.6166 19.096113,1798.7233 18.101763,1798.725 L 1.9361232,1798.725 L 1.9361232,1798.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 21.936123,1798.725 C 21.181483,1798.706 20.438033,1799.1779 20.143063,1799.8632 C 19.848073,1800.5485 20.020253,1801.4039 20.558363,1801.9261 L 36.754623,1818.1736 C 37.276973,1818.6968 38.127493,1818.8703 38.817333,1818.5942 C 39.507183,1818.3182 39.994833,1817.6092 39.999993,1816.875 L 39.999993,1800.5974 C 40.001993,1799.6166 39.096113,1798.7233 38.101763,1798.725 L 21.936123,1798.725 z" + id="path11160" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11162" + d="M 41.936123,1798.725 C 41.181483,1798.706 40.438033,1799.1779 40.143063,1799.8632 C 39.848073,1800.5485 40.020253,1801.4039 40.558363,1801.9261 L 56.754623,1818.1736 C 57.276973,1818.6968 58.127493,1818.8703 58.817333,1818.5942 C 59.507183,1818.3182 59.994833,1817.6092 59.999993,1816.875 L 59.999993,1800.5974 C 60.001993,1799.6166 59.096113,1798.7233 58.101763,1798.725 L 41.936123,1798.725 L 41.936123,1798.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,1818.725 C 1.1814832,1818.706 0.4380332,1819.1779 0.1430632,1819.8632 C -0.1519268,1820.5485 0.0202532,1821.4039 0.5583632,1821.9261 L 16.754623,1838.1736 C 17.276973,1838.6968 18.127493,1838.8703 18.817333,1838.5942 C 19.507183,1838.3182 19.994833,1837.6092 19.999993,1836.875 L 19.999993,1820.5974 C 20.001993,1819.6166 19.096113,1818.7233 18.101763,1818.725 L 1.9361232,1818.725 L 1.9361232,1818.725 z" + id="path11164" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11166" + d="M 21.936123,1818.725 C 21.181483,1818.706 20.438033,1819.1779 20.143063,1819.8632 C 19.848073,1820.5485 20.020253,1821.4039 20.558363,1821.9261 L 36.754623,1838.1736 C 37.276973,1838.6968 38.127493,1838.8703 38.817333,1838.5942 C 39.507183,1838.3182 39.994833,1837.6092 39.999993,1836.875 L 39.999993,1820.5974 C 40.001993,1819.6166 39.096113,1818.7233 38.101763,1818.725 L 21.936123,1818.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <g + transform="matrix(0.4001674,0,0,0.4001674,131.63303,218.47696)" + id="g4513"> + <g + id="g3252" + transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)" + style="fill:#000000"> + <path + id="path3254" + d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z" + style="fill:#000000" /> + <path + id="path3256" + d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z" + style="fill:#000000" /> + <path + id="path3258" + d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z" + style="fill:#000000" /> + <path + id="path3260" + d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z" + style="fill:#000000" /> + <path + id="path3262" + d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z" + style="fill:#000000" /> + <path + id="path3264" + d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z" + style="fill:#000000" /> + <path + id="path3266" + d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z" + style="fill:#000000" /> + <path + id="path3268" + d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z" + style="fill:#000000" /> + <path + id="path3270" + d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z" + style="fill:#000000" /> + <path + id="path3272" + d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z" + style="fill:#000000" /> + <path + id="path3274" + d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z" + style="fill:#000000" /> + <path + id="path3276" + d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z" + style="fill:#000000" /> + <path + id="path3278" + d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z" + style="fill:#000000" /> + <path + id="path3280" + d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z" + style="fill:#000000" /> + <path + id="path3282" + d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z" + style="fill:#000000" /> + <path + id="path3284" + d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z" + style="fill:#000000" /> + <path + id="path3286" + d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z" + style="fill:#000000" /> + <path + id="path3288" + d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z" + style="fill:#000000" /> + <path + id="path3290" + d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z" + style="fill:#000000" /> + <path + id="path3292" + d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z" + style="fill:#000000" /> + <path + id="path3294" + d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z" + style="fill:#000000" /> + </g> + <g + id="g2496" + transform="translate(0,-8.52e-3)" + style="fill:#000000"> + <path + id="path2451" + d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2453" + d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2455" + d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z" + style="fill:#000000" /> + <path + id="path2457" + d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z" + style="fill:#000000" /> + <path + id="path2459" + d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z" + style="fill:#000000" /> + <path + id="path2461" + d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z" + style="fill:#000000" /> + <path + id="path2463" + d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z" + style="fill:#000000" /> + <path + id="path2465" + d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z" + style="fill:#000000" /> + <path + id="path2467" + d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z" + style="fill:#18a303;fill-opacity:1" /> + </g> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + sodipodi:nodetypes="csccscccc" + id="path3908" + d="M 156.43842,248.57158 C 155.16781,248.53958 153.91607,249.33412 153.41943,250.48796 C 152.92276,251.64181 153.21267,253.08203 154.11868,253.96126 L 181.38831,281.31717 C 182.26779,282.19808 183.6998,282.49021 184.8613,282.02534 C 186.0228,281.56063 186.84384,280.36689 186.85253,279.13071 L 186.85253,251.72414 C 186.85591,250.07277 185.33067,248.56872 183.65649,248.57158 L 156.43842,248.57158 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + id="path3910" + d="M 81.45645,248.57056 C 79.689041,248.59615 78.270622,250.0379 78.273691,251.80545 L 78.273691,376.66337 C 78.27071,378.43092 79.689112,379.87251 81.45645,379.89809 L 183.61756,379.89809 C 184.4759,379.89944 185.29952,379.55917 185.90647,378.95219 C 186.51345,378.34539 186.85385,377.52172 186.85248,376.66337 L 186.85248,296.25966 C 186.85748,295.39997 186.51946,294.5736 185.91332,293.96395 L 141.72003,249.56192 C 141.11895,248.9366 140.2916,248.57931 139.42427,248.57056 L 81.45645,248.57056 L 81.45645,248.57056 z M 84.691391,255.04034 L 138.06768,255.04034 L 180.38263,297.5642 L 180.38263,373.42832 L 84.691391,373.42832 L 84.691391,255.04034 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <g + style="fill:#000000" + transform="matrix(0.4499626,0,0,0.4499626,470.6147,716.26539)" + id="g2538"> + <path + style="fill:#000000" + d="M 19.434,22.643 C 19.434,28.666 14.334,31.876 7.167,31.876 C 5.188,31.876 2.595,31.744 1.7763568e-15,31.393 L 1.7763568e-15,2.198 C 2.946,1.802 5.76,1.626 8.046,1.626 C 14.905,1.626 18.642,4.484 18.642,9.232 C 18.642,12.573 16.004,14.992 13.322,15.783 L 13.322,15.871 C 16.927,16.62 19.434,18.862 19.434,22.643 z M 8.09,14.509 C 11.432,14.509 13.278,12.883 13.278,10.025 C 13.278,7.123 11.387,5.54 8.09,5.54 C 6.991,5.54 5.804,5.628 4.837,5.76 L 4.837,14.509 L 8.09,14.509 z M 4.836,18.246 L 4.836,27.831 C 6.023,27.919 7.21,27.963 8.222,27.963 C 11.739,27.963 14.069,26.468 14.069,23.171 C 14.069,20.005 11.915,18.247 7.87,18.247 L 4.836,18.247 L 4.836,18.246 z" + id="path2540" /> + + <path + style="fill:#000000" + d="M 33.558137,28.359 C 35.625137,28.359 37.471137,27.919 39.274137,27.128 L 39.758137,30.777 C 37.559137,31.788 35.537137,32.096 32.679137,32.096 C 26.435137,32.096 22.039137,28.535 22.039137,21.456 C 22.039137,14.641 26.611137,9.849 32.723137,9.849 C 38.219137,9.849 41.340137,14.289 41.340137,19.258 C 41.340137,20.357 41.296137,21.368 41.164137,22.292 L 27.007137,22.292 C 27.271137,26.116 29.469137,28.359 33.558137,28.359 z M 36.636137,18.73 C 36.504137,15.872 35.448137,13.586 32.327137,13.586 C 29.425137,13.586 27.710137,15.565 27.227137,18.73 L 36.636137,18.73 z" + id="path2542" /> + + <path + style="fill:#000000" + d="M 56.943067,14.025 L 51.667067,14.025 L 51.667067,25.325 C 51.667067,27.743 52.898067,28.359 54.613067,28.359 C 55.536067,28.359 56.108067,28.271 57.031067,27.963 L 57.514067,31.525 C 56.239067,31.921 54.744067,32.096 52.810067,32.096 C 49.336067,32.096 46.831067,30.426 46.831067,26.513 L 46.831067,14.025 L 43.357067,14.025 L 43.357067,10.288 L 46.831067,10.288 L 46.831067,5.452 L 51.667067,5.452 L 51.667067,10.288 L 56.943067,10.288 L 56.943067,14.025 z" + id="path2544" /> + + <path + style="fill:#000000" + d="M 77.2581,17.235 L 77.2581,31.656 L 72.5531,31.656 L 72.4211,28.666 L 72.3331,28.666 C 71.1021,30.864 69.0351,32.095 66.2211,32.095 C 62.6601,32.095 59.4941,29.413 59.4941,25.192 C 59.4941,19.96 64.5941,17.894 69.3431,17.894 C 70.5301,17.894 71.5411,18.026 72.4211,18.158 L 72.4211,17.675 C 72.4211,14.949 71.0581,13.586 67.8041,13.586 C 66.2651,13.586 64.2421,13.982 62.3081,14.817 L 61.8251,11.168 C 64.0671,10.245 66.3981,9.849 68.7281,9.849 C 74.3561,9.849 77.2581,12.53 77.2581,17.235 z M 72.4211,21.192 C 71.6291,21.06 70.6621,20.972 69.6511,20.972 C 67.0571,20.972 64.7711,22.159 64.7711,24.929 C 64.7711,27.304 66.0901,28.534 68.1121,28.534 C 70.5301,28.534 72.4211,26.203 72.4211,22.423 L 72.4211,21.192 z" + id="path2546" /> + + <path + style="fill:#000000" + d="M 96.25465,19.213 L 96.25465,31.656 L 91.41865,31.656 L 91.41865,2.55 C 94.45265,1.847 97.22265,1.671 100.08065,1.671 C 106.58765,1.671 110.76465,4.309 110.76465,9.409 C 110.76465,13.586 107.59865,15.784 104.65365,16.796 L 104.65365,16.884 C 106.98365,17.851 108.47865,19.786 109.18165,23.215 C 109.70965,25.853 110.50065,28.843 111.42465,31.657 L 106.01665,31.657 C 105.35665,29.327 104.56565,25.809 104.08165,23.479 C 103.50965,20.797 102.14665,19.214 99.33265,19.214 L 96.25465,19.214 L 96.25465,19.213 z M 99.33265,15.476 C 103.02565,15.476 105.39965,13.718 105.39965,10.112 C 105.39965,7.078 103.06965,5.583 99.64065,5.583 C 98.58465,5.583 97.61765,5.539 96.25465,5.847 L 96.25465,15.475 L 99.33265,15.475 L 99.33265,15.476 z" + id="path2548" /> + + <path + style="fill:#000000" + d="M 124.32589,28.359 C 126.39289,28.359 128.23889,27.919 130.04189,27.128 L 130.52589,30.777 C 128.32789,31.788 126.30489,32.096 123.44689,32.096 C 117.20289,32.096 112.80689,28.535 112.80689,21.456 C 112.80689,14.641 117.37889,9.849 123.49089,9.849 C 128.98689,9.849 132.10789,14.289 132.10789,19.258 C 132.10789,20.357 132.06389,21.368 131.93189,22.292 L 117.77489,22.292 C 118.03889,26.116 120.23689,28.359 124.32589,28.359 z M 127.40389,18.73 C 127.27189,15.872 126.21589,13.586 123.09489,13.586 C 120.19289,13.586 118.47789,15.565 117.99489,18.73 L 127.40389,18.73 z" + id="path2550" /> + + <path + style="fill:#000000" + d="M 136.30461,31.656 L 136.30461,9.1870955e-15 L 141.14061,9.1870955e-15 L 141.14061,31.656 L 136.30461,31.656 z" + id="path2552" /> + + <path + style="fill:#000000" + d="M 156.61054,28.359 C 158.67754,28.359 160.52354,27.919 162.32654,27.128 L 162.81054,30.777 C 160.61254,31.788 158.58954,32.096 155.73154,32.096 C 149.48754,32.096 145.09154,28.535 145.09154,21.456 C 145.09154,14.641 149.66354,9.849 155.77554,9.849 C 161.27154,9.849 164.39354,14.289 164.39354,19.258 C 164.39354,20.357 164.34954,21.368 164.21754,22.292 L 150.05954,22.292 C 150.32354,26.116 152.52154,28.359 156.61054,28.359 z M 159.68854,18.73 C 159.55654,15.872 158.50054,13.586 155.37954,13.586 C 152.47754,13.586 150.76254,15.565 150.27954,18.73 L 159.68854,18.73 z" + id="path2554" /> + + <path + style="fill:#000000" + d="M 184.49768,17.235 L 184.49768,31.656 L 179.79268,31.656 L 179.66068,28.666 L 179.57268,28.666 C 178.34268,30.864 176.27568,32.095 173.46168,32.095 C 169.89968,32.095 166.73468,29.413 166.73468,25.192 C 166.73468,19.96 171.83468,17.894 176.58368,17.894 C 177.77068,17.894 178.78168,18.026 179.66068,18.158 L 179.66068,17.675 C 179.66068,14.949 178.29868,13.586 175.04468,13.586 C 173.50568,13.586 171.48268,13.982 169.54868,14.817 L 169.06568,11.168 C 171.30768,10.245 173.63768,9.849 175.96768,9.849 C 181.59468,9.849 184.49768,12.53 184.49768,17.235 z M 179.66068,21.192 C 178.86968,21.06 177.90168,20.972 176.89068,20.972 C 174.29668,20.972 172.00968,22.159 172.00968,24.929 C 172.00968,27.304 173.32868,28.534 175.35168,28.534 C 177.76968,28.534 179.66068,26.203 179.66068,22.423 L 179.66068,21.192 z" + id="path2556" /> + + <path + style="fill:#000000" + d="M 188.89671,16.355 C 188.89671,12.662 192.01871,9.848 196.67871,9.848 C 198.92071,9.848 200.63571,10.2 201.86671,10.815 L 201.38371,14.464 C 200.06471,13.893 198.83271,13.585 197.16171,13.585 C 195.35971,13.585 193.95271,14.596 193.95271,16.003 C 193.95271,17.586 194.78771,18.289 196.45871,18.817 C 200.50371,20.092 202.74571,21.323 202.74571,25.104 C 202.74571,29.677 198.87671,32.095 194.17271,32.095 C 191.84271,32.095 189.60071,31.699 188.06171,30.952 L 188.54471,27.259 C 190.47971,28.006 192.19371,28.358 193.82071,28.358 C 196.28271,28.358 197.68971,27.479 197.68971,25.896 C 197.68971,24.445 196.80971,23.61 194.78771,22.994 C 191.75471,22.071 188.89671,20.489 188.89671,16.355 z" + id="path2558" /> + + <path + style="fill:#000000" + d="M 216.90675,28.359 C 218.97275,28.359 220.81975,27.919 222.62275,27.128 L 223.10575,30.777 C 220.90775,31.788 218.88475,32.096 216.02675,32.096 C 209.78375,32.096 205.38675,28.535 205.38675,21.456 C 205.38675,14.641 209.95875,9.849 216.07075,9.849 C 221.56675,9.849 224.68875,14.289 224.68875,19.258 C 224.68875,20.357 224.64475,21.368 224.51275,22.292 L 210.35475,22.292 C 210.61875,26.116 212.81775,28.359 216.90675,28.359 z M 219.98375,18.73 C 219.85175,15.872 218.79675,13.586 215.67475,13.586 C 212.77375,13.586 211.05875,15.565 210.57375,18.73 L 219.98375,18.73 z" + id="path2560" /> + +</g> + </g> + </g> +</svg> diff --git a/default_images/brand/shell/backing_right-pt_BR.png b/default_images/brand/shell/backing_right-pt_BR.png Binary files differindex 355f4adf7c6a..e16bf9637f87 100644 --- a/default_images/brand/shell/backing_right-pt_BR.png +++ b/default_images/brand/shell/backing_right-pt_BR.png diff --git a/default_images/brand/shell/backing_right_hc-pt_BR.png b/default_images/brand/shell/backing_right_hc-pt_BR.png Binary files differindex 56736f2fc385..e16bf9637f87 100644 --- a/default_images/brand/shell/backing_right_hc-pt_BR.png +++ b/default_images/brand/shell/backing_right_hc-pt_BR.png diff --git a/default_images/res/mainapp_16.png b/default_images/res/mainapp_16.png Binary files differindex a6d0ad4c6da6..5484fe9bf009 100644 --- a/default_images/res/mainapp_16.png +++ b/default_images/res/mainapp_16.png diff --git a/default_images/res/mainapp_16_8.png b/default_images/res/mainapp_16_8.png Binary files differindex 7123b3e3d852..5484fe9bf009 100644 --- a/default_images/res/mainapp_16_8.png +++ b/default_images/res/mainapp_16_8.png diff --git a/default_images/res/mainapp_16_h.png b/default_images/res/mainapp_16_h.png Binary files differindex 764c4f21a3b5..5484fe9bf009 100644 --- a/default_images/res/mainapp_16_h.png +++ b/default_images/res/mainapp_16_h.png diff --git a/default_images/res/mainapp_32.png b/default_images/res/mainapp_32.png Binary files differindex 7cc7a1652f49..7c474eb0d8bc 100644 --- a/default_images/res/mainapp_32.png +++ b/default_images/res/mainapp_32.png diff --git a/default_images/res/mainapp_32_8.png b/default_images/res/mainapp_32_8.png Binary files differindex 11fbfbba6c6e..7c474eb0d8bc 100644 --- a/default_images/res/mainapp_32_8.png +++ b/default_images/res/mainapp_32_8.png diff --git a/default_images/res/mainapp_32_h.png b/default_images/res/mainapp_32_h.png Binary files differindex bb493c78bef7..3dc3057f7d0c 100644 --- a/default_images/res/mainapp_32_h.png +++ b/default_images/res/mainapp_32_h.png diff --git a/default_images/res/mainapp_48_8.png b/default_images/res/mainapp_48_8.png Binary files differindex 9f80c8ca2c5d..8b5042a34654 100644 --- a/default_images/res/mainapp_48_8.png +++ b/default_images/res/mainapp_48_8.png diff --git a/default_images/res/printeradmin_16.png b/default_images/res/printeradmin_16.png Binary files differindex 413a765efd47..78e272220ada 100644 --- a/default_images/res/printeradmin_16.png +++ b/default_images/res/printeradmin_16.png diff --git a/default_images/res/printeradmin_16_8.png b/default_images/res/printeradmin_16_8.png Binary files differindex b4562630e4ec..78e272220ada 100644 --- a/default_images/res/printeradmin_16_8.png +++ b/default_images/res/printeradmin_16_8.png diff --git a/default_images/res/printeradmin_16_h.png b/default_images/res/printeradmin_16_h.png Binary files differindex e284ef38e481..4d56118df34c 100644 --- a/default_images/res/printeradmin_16_h.png +++ b/default_images/res/printeradmin_16_h.png diff --git a/default_images/res/printeradmin_32.png b/default_images/res/printeradmin_32.png Binary files differindex 25b19eef5409..dc930e0bfa2e 100644 --- a/default_images/res/printeradmin_32.png +++ b/default_images/res/printeradmin_32.png diff --git a/default_images/res/printeradmin_32_8.png b/default_images/res/printeradmin_32_8.png Binary files differindex 25b19eef5409..dc930e0bfa2e 100644 --- a/default_images/res/printeradmin_32_8.png +++ b/default_images/res/printeradmin_32_8.png diff --git a/default_images/res/printeradmin_32_h.png b/default_images/res/printeradmin_32_h.png Binary files differindex 1d9267afdcc2..101c035397ee 100644 --- a/default_images/res/printeradmin_32_h.png +++ b/default_images/res/printeradmin_32_h.png diff --git a/default_images/res/printeradmin_48_8.png b/default_images/res/printeradmin_48_8.png Binary files differindex 71a89955a6cc..05051f6db8fa 100644 --- a/default_images/res/printeradmin_48_8.png +++ b/default_images/res/printeradmin_48_8.png diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh index ad8e6efd4dd6..006f28d5250d 100644 --- a/desktop/scripts/soffice.sh +++ b/desktop/scripts/soffice.sh @@ -84,11 +84,10 @@ done if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then sd_binary="oosplash.bin" - export QSTART_CHECK_ONLY=1 - if "$sd_prog/$sd_binary" -qsend-and-report $*; then + # try to connect to a running instance early + if "$sd_prog/$sd_binary" -qsend-and-report "$@" ; then exit 0 fi - unset QSTART_CHECK_ONLY fi # pagein diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index e34720d43d39..9dd988ba4d49 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -1465,7 +1465,11 @@ USHORT Desktop::Exception(USHORT nError) OfficeIPCThread::DisableOfficeIPCThread(); if( pSignalHandler ) osl_removeSignalHandler( pSignalHandler ); + restartOnMac(false); + if ( m_rSplashScreen.is() ) + m_rSplashScreen->reset(); + _exit( ExitHelper::E_CRASH_WITH_RESTART ); } else @@ -1972,6 +1976,9 @@ void Desktop::Main() if ( bRestartRequested ) { restartOnMac(true); + if ( m_rSplashScreen.is() ) + m_rSplashScreen->reset(); + // wouldn't the solution be more clean if SalMain returns the exit code to the system? _exit( ExitHelper::E_NORMAL_RESTART ); } diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx index 7221db791b09..27ab39b60c44 100644 --- a/desktop/source/deployment/misc/dp_platform.cxx +++ b/desktop/source/deployment/misc/dp_platform.cxx @@ -68,6 +68,8 @@ #define PLATFORM_MACOSX_X86 "macosx_x86" #define PLATFORM_MACOSX_PPC "macosx_powerpc" #define PLATFORM_OS2_X86 "os2_x86" +#define PLATFORM_OPENBSD_X86 "openbsd_x86" +#define PLATFORM_OPENBSD_X86_64 "openbsd_x86_64" #define PLATFORM_AIX_POWERPC "aix_powerpc" @@ -187,6 +189,10 @@ namespace ret = checkOSandCPU(OUSTR("OS2"), OUSTR("x86")); else if (token.equals(OUSTR(PLATFORM_AIX_POWERPC))) ret = checkOSandCPU(OUSTR("AIX"), OUSTR("PowerPC")); + else if (token.equals(OUSTR(PLATFORM_OPENBSD_X86))) + ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("x86")); + else if (token.equals(OUSTR(PLATFORM_OPENBSD_X86_64))) + ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("X86_64")); else { OSL_ENSURE(0, "Extension Manager: The extension supports an unknown platform. " diff --git a/desktop/unx/source/start.c b/desktop/unx/source/start.c index 022046abcd4f..84f80d457630 100644 --- a/desktop/unx/source/start.c +++ b/desktop/unx/source/start.c @@ -60,6 +60,8 @@ #define PIPEDEFAULTPATH "/tmp" #define PIPEALTERNATEPATH "/var/tmp" +typedef enum { ProgressContinue, ProgressRestart, ProgressExit } ProgressStatus; + /* Easier conversions: rtl_uString to rtl_String */ static rtl_String * ustr_to_str( rtl_uString *pStr ) @@ -531,7 +533,7 @@ load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash ) #define BUFFER_LEN 255 /* Read the percent to show in splash. */ -static sal_Bool +static ProgressStatus read_percent( int status_fd, int *pPercent ) { static char pBuffer[BUFFER_LEN + 1]; @@ -570,16 +572,19 @@ read_percent( int status_fd, int *pPercent ) fprintf( stderr, "Got status: %s\n", pBegin ); #endif if ( !strncasecmp( pBegin, "end", 3 ) ) - return sal_False; + return ProgressExit; + else if ( !strncasecmp( pBegin, "restart", 7 ) ) + return ProgressRestart; else if ( sscanf( pBegin, "%d%%", pPercent ) ) - return sal_True; + return ProgressContinue; - return sal_False; + /* unexpected - let's exit the splash to be safe */ + return ProgressExit; } /* Periodically update the splash & the percent acconding to what status_fd says */ -static void +static ProgressStatus show_splash( int status_fd ) { int nRetval; @@ -587,6 +592,7 @@ show_splash( int status_fd ) int nPercent = 0; sal_Bool bFinish = sal_False; + ProgressStatus eResult; /* we want to watch status_fd */ aPfd.fd = status_fd; @@ -605,10 +611,19 @@ show_splash( int status_fd ) if ( aPfd.revents & ( POLLERR | POLLHUP | POLLNVAL ) ) bFinish = sal_True; else if ( nRetval > 0 ) - bFinish = !read_percent( status_fd, &nPercent ); + { + eResult = read_percent( status_fd, &nPercent ); + bFinish = ( eResult != ProgressContinue ); + } else if ( nRetval < 0 ) bFinish = sal_True; } while ( !bFinish ); + +#if OSL_DEBUG_LEVEL > 0 + fprintf( stderr, "Finishing, result is %s\n", + ( eResult == ProgressContinue )? "continue" : ( ( eResult == ProgressRestart )? "restart" : "exit" ) ); +#endif + return eResult; } /* Simple system check. */ @@ -779,6 +794,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv ) sal_Bool bSentArgs = sal_False; rtl_uString *pAppPath = NULL; rtl_uString *pPipePath = NULL; + ProgressStatus eResult = ProgressExit; /* turn SIGPIPE into an error */ signal( SIGPIPE, SIG_IGN ); @@ -793,7 +809,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv ) } ustr_debug( "App path", pAppPath ); - bSendAndReport = argc > 1 && !strcmp (argv[1], "-qsend-and-report"); + bSendAndReport = argc > 1 && !strcmp (argv[1], QSEND_AND_REPORT); pPipePath = get_pipe_path( pAppPath ); @@ -809,26 +825,28 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv ) ustr_debug( "Failed to connect to pipe", pPipePath ); #endif - if (bSendAndReport) - return !bSentArgs; - - if ( !bSentArgs ) + if ( !bSendAndReport && !bSentArgs ) { - if ( !fork_app( pAppPath, &status_fd ) ) - return 1; + /* we have to exec the binary */ + do { + if ( !fork_app( pAppPath, &status_fd ) ) + return 1; - if ( !bInhibitSplash ) - { - load_splash_image( pAppPath ); - load_splash_defaults( pAppPath, &bInhibitSplash ); - } + if ( !bInhibitSplash ) + { + load_splash_image( pAppPath ); + load_splash_defaults( pAppPath, &bInhibitSplash ); + } - if ( !bInhibitSplash && splash_create_window( argc, argv ) ) - { - splash_draw_progress( 0 ); - show_splash( status_fd ); - splash_close_window(); - } + if ( !bInhibitSplash && splash_create_window( argc, argv ) ) + { + splash_draw_progress( 0 ); + eResult = show_splash( status_fd ); + splash_close_window(); + } + + close( status_fd ); + } while ( eResult == ProgressRestart ); } /* cleanup */ @@ -836,9 +854,8 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv ) rtl_uString_release( pPipePath ); close( fd ); - close( status_fd ); - return 0; + return bSendAndReport? !bSentArgs : 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/desktop/unx/splash/unxsplash.cxx b/desktop/unx/splash/unxsplash.cxx index 7db15a898777..6c1501416322 100644 --- a/desktop/unx/splash/unxsplash.cxx +++ b/desktop/unx/splash/unxsplash.cxx @@ -84,7 +84,12 @@ void SAL_CALL UnxSplashScreen::end() void SAL_CALL UnxSplashScreen::reset() throw ( RuntimeException ) { - // TODO? +#if OSL_DEBUG_LEVEL > 1 + fprintf( stderr, "UnxSplashScreen::reset()\n" ); +#endif + + fprintf( m_pOutFd, "restart\n" ); + fflush( m_pOutFd ); } void SAL_CALL UnxSplashScreen::setText( const OUString& /*aText*/ ) diff --git a/extensions/source/nsplugin/source/makefile.mk b/extensions/source/nsplugin/source/makefile.mk index 4f9be74348ab..1790851bd3d0 100644 --- a/extensions/source/nsplugin/source/makefile.mk +++ b/extensions/source/nsplugin/source/makefile.mk @@ -49,7 +49,7 @@ dummy: @echo GTK disabled - nothing to build .ELSE # "$(ENABLE_GTK)"=="" -.IF "$(OS)"=="LINUX" || "$(OS)"=="FREEBSD" +.IF "$(OS)"=="LINUX" || "$(OS)"=="FREEBSD" || "$(OS)"=="OPENBSD" INC+= -DNP_LINUX .ENDIF PKGCONFIG_MODULES=gtk+-2.0 diff --git a/extensions/source/oooimprovecore/core.cxx b/extensions/source/oooimprovecore/core.cxx index 4510a8fe21af..472d844337a3 100644 --- a/extensions/source/oooimprovecore/core.cxx +++ b/extensions/source/oooimprovecore/core.cxx @@ -131,7 +131,7 @@ namespace oooimprovecore OUString::createFromAscii("HelpUrl"), ::comphelper::ConfigurationHelper::E_READONLY) >>= help_url; else - help_url = OUString::createFromAscii("http://www.openoffice.org"); + help_url = OUString::createFromAscii("http://www.libreoffice.org"); { SolarMutexGuard aGuard; SfxAllItemSet aSet( SFX_APP()->GetPool() ); diff --git a/extensions/source/plugin/unx/makefile.mk b/extensions/source/plugin/unx/makefile.mk index f3b7b480e6b9..0e9b5d454596 100644 --- a/extensions/source/plugin/unx/makefile.mk +++ b/extensions/source/plugin/unx/makefile.mk @@ -77,7 +77,7 @@ APP1STDLIBS+=-lXm -lXt $(X11LINK_DYNAMIC) -ldl .IF "$(DISABLE_XAW)" != "TRUE" APP1STDLIBS+=-lXaw .ENDIF -.IF "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" +.IF "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || "$(OS)"=="OPENBSD" APP1STDLIBS+= -lXt -lXext -lX11 .ELIF "$(OS)"=="AIX" APP1STDLIBS+= -lXpm -lXmu -lXt $(X11LINK_DYNAMIC) -ldl diff --git a/extensions/source/scanner/makefile.mk b/extensions/source/scanner/makefile.mk index 26ed6e70e6a9..baaefdf66e7d 100644 --- a/extensions/source/scanner/makefile.mk +++ b/extensions/source/scanner/makefile.mk @@ -76,13 +76,10 @@ SHL1STDLIBS=\ $(VCLLIB) \ $(SVTOOLLIB) -.IF "$(GUI)"=="UNX" -.IF "$(OS)"!="FREEBSD" -.IF "$(OS)"!="NETBSD" +.IF "$(GUI)"=="UNX" && "$(OS)"!="FREEBSD" && \ + "$(OS)"!="NETBSD" && "$(OS)"!="OPENBSD" SHL1STDLIBS+=$(SVTOOLLIB) -ldl .ENDIF -.ENDIF -.ENDIF SHL1DEF=$(MISC)$/$(SHL1TARGET).def SHL1IMPLIB=i$(TARGET) diff --git a/external/gcc3_specific/makefile.mk b/external/gcc3_specific/makefile.mk index d285fb34166a..dd84b5327234 100644 --- a/external/gcc3_specific/makefile.mk +++ b/external/gcc3_specific/makefile.mk @@ -45,6 +45,7 @@ $(MINGWGXXDLL) : .IF "$(OS)"!="MACOSX" .IF "$(OS)"!="FREEBSD" .IF "$(OS)"!="NETBSD" +.IF "$(OS)"!="OPENBSD" .EXPORT : CC @@ -73,6 +74,7 @@ $(LB)$/libgcc_s.so.$(SHORTSTDC3) : .ENDIF .ENDIF +.ENDIF .ENDIF .ENDIF diff --git a/filter/source/svg/b2dellipse.cxx b/filter/source/svg/b2dellipse.cxx index 0ef755817c20..802b2f4aac4c 100644 --- a/filter/source/svg/b2dellipse.cxx +++ b/filter/source/svg/b2dellipse.cxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #include "b2dellipse.hxx" #include <osl/diagnose.h> diff --git a/filter/source/svg/b2dellipse.hxx b/filter/source/svg/b2dellipse.hxx index a8e4e471a884..dda447d30fc8 100644 --- a/filter/source/svg/b2dellipse.hxx +++ b/filter/source/svg/b2dellipse.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef _BASEGFX_B2DELLIPSE_HXX #define _BASEGFX_B2DELLIPSE_HXX diff --git a/filter/source/svg/gentoken.pl b/filter/source/svg/gentoken.pl index 75bb1e262aab..9229fa7a637c 100644 --- a/filter/source/svg/gentoken.pl +++ b/filter/source/svg/gentoken.pl @@ -1,4 +1,29 @@ -# from oox/source/token - should really put this into solenv +#!/usr/bin/env perl +# +# Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Initial Developer of the Original Code is +# Thorsten Behrens <tbehrens@novell.com> +# All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 3 or later (the "GPLv3+"), or +# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), +# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable +# instead of those above. + $ARGV0 = shift @ARGV; $ARGV1 = shift @ARGV; diff --git a/filter/source/svg/gfxtypes.hxx b/filter/source/svg/gfxtypes.hxx index 2b7187d2e76c..242888f0d7ca 100644 --- a/filter/source/svg/gfxtypes.hxx +++ b/filter/source/svg/gfxtypes.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_GFXTYPES_HXX #define INCLUDED_GFXTYPES_HXX diff --git a/filter/source/svg/parserfragments.cxx b/filter/source/svg/parserfragments.cxx index 44e5fbbcbefd..a85de2fbb6c7 100644 --- a/filter/source/svg/parserfragments.cxx +++ b/filter/source/svg/parserfragments.cxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" diff --git a/filter/source/svg/parserfragments.hxx b/filter/source/svg/parserfragments.hxx index 8770d52a2273..c32af7122b5c 100644 --- a/filter/source/svg/parserfragments.hxx +++ b/filter/source/svg/parserfragments.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_PARSERFRAGMENTS_HXX #define INCLUDED_PARSERFRAGMENTS_HXX diff --git a/filter/source/svg/spirit_supplements.hxx b/filter/source/svg/spirit_supplements.hxx index afa97bf90d3f..968cdacd7ec3 100644 --- a/filter/source/svg/spirit_supplements.hxx +++ b/filter/source/svg/spirit_supplements.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_SPIRIT_SUPPLEMENTS_HXX #define INCLUDED_SPIRIT_SUPPLEMENTS_HXX diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx index 48fa362bde6d..10e152e30dce 100644 --- a/filter/source/svg/svgreader.cxx +++ b/filter/source/svg/svgreader.cxx @@ -1,20 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. - * Parts copyright 2005 by Sun Microsystems, Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" diff --git a/filter/source/svg/svgreader.hxx b/filter/source/svg/svgreader.hxx index 232fc31f122e..67318f366f0d 100644 --- a/filter/source/svg/svgreader.hxx +++ b/filter/source/svg/svgreader.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_SVGREADER_HXX #define INCLUDED_SVGREADER_HXX diff --git a/filter/source/svg/test/parsertest.cxx b/filter/source/svg/test/parsertest.cxx index 024900c9605d..89728fec673f 100644 --- a/filter/source/svg/test/parsertest.cxx +++ b/filter/source/svg/test/parsertest.cxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 31. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" diff --git a/filter/source/svg/tokenmap.hxx b/filter/source/svg/tokenmap.hxx index 15a50abe3485..20a25d96a4be 100644 --- a/filter/source/svg/tokenmap.hxx +++ b/filter/source/svg/tokenmap.hxx @@ -1,19 +1,29 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_TOKENMAP_HXX #define INCLUDED_TOKENMAP_HXX diff --git a/filter/source/svg/units.cxx b/filter/source/svg/units.cxx index af62a1ca1520..96a810dccc8c 100644 --- a/filter/source/svg/units.cxx +++ b/filter/source/svg/units.cxx @@ -1,20 +1,30 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Jan Holesovsky <kendy@suse.cz> - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Jan Holesovsky <kendy@suse.cz> + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" diff --git a/filter/source/svg/units.hxx b/filter/source/svg/units.hxx index d8c0364584dd..9e6cd81014bb 100644 --- a/filter/source/svg/units.hxx +++ b/filter/source/svg/units.hxx @@ -1,20 +1,30 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * - * OpenOffice.org - a multi-platform office productivity suite + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Author: - * Jan Holesovsky <kendy@suse.cz> - * Fridrich Strba <fridrich.strba@bluewin.ch> - * Thorsten Behrens <tbehrens@novell.com> + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * - * Copyright (C) 2008, Novell Inc. + * The Initial Developer of the Original Code is + * Jan Holesovsky <kendy@suse.cz> + * Fridrich Strba <fridrich.strba@bluewin.ch> + * Thorsten Behrens <tbehrens@novell.com> * - * The Contents of this file are made available subject to - * the terms of GNU Lesser General Public License Version 3. + * Contributor(s): * - ************************************************************************/ - + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ #ifndef INCLUDED_UNITS_HXX #define INCLUDED_UNITS_HXX diff --git a/fpicker/source/aqua/SalAquaConstants.h b/fpicker/source/aqua/SalAquaConstants.h index 7610e13363e5..7a1ecd353abe 100644 --- a/fpicker/source/aqua/SalAquaConstants.h +++ b/fpicker/source/aqua/SalAquaConstants.h @@ -29,7 +29,7 @@ #ifndef _SALAQUACONSTANTS_H_ #define _SALAQUACONSTANTS_H_ -#define kAppFourCharCode 'OOo2' +#define kAppFourCharCode 'LibO' #define kControlPropertyTracking 'Trck' #define kControlPropertyLastPartCode 'LsPc' #define kControlPropertySubType 'SuTy' diff --git a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx index 8cbfb7a59b9d..28e081b9f62a 100644 --- a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx +++ b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx @@ -909,6 +909,9 @@ uno::Sequence<rtl::OUString> SAL_CALL SalGtkFilePicker::getSelectedFiles() throw { static const OUString aStarDot = OUString::createFromAscii( "*." ); + ::rtl::OUString aNewFilter; + ::rtl::OUString aOldFilter = getCurrentFilter(); + sal_Bool bChangeFilter = sal_True; for ( FilterList::iterator aListIter = m_pFilterList->begin(); aListIter != m_pFilterList->end(); ++aListIter @@ -916,11 +919,17 @@ uno::Sequence<rtl::OUString> SAL_CALL SalGtkFilePicker::getSelectedFiles() throw { if( aListIter->getFilter().indexOf( aStarDot+sExtension ) >= 0 ) { - setCurrentFilter( aListIter->getTitle() ); + if( !aNewFilter.getLength() ) + aNewFilter = aListIter->getTitle(); + + if( aOldFilter == aListIter->getTitle() ) + bChangeFilter = sal_False; + bExtensionTypedIn = true; - break; } } + if( bChangeFilter && bExtensionTypedIn ) + setCurrentFilter( aNewFilter ); } } diff --git a/framework/uiconfig/startmodule/menubar/menubar.xml b/framework/uiconfig/startmodule/menubar/menubar.xml index b7bcbd51c225..fac0b3c0815c 100644 --- a/framework/uiconfig/startmodule/menubar/menubar.xml +++ b/framework/uiconfig/startmodule/menubar/menubar.xml @@ -76,6 +76,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ShowLicense"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:Credits"/> <menu:menuitem menu:id=".uno:About"/> </menu:menupopup> </menu:menu> diff --git a/hyphen/hyphen-2.4.patch b/hyphen/hyphen-2.4.patch index 33947f550a88..50c859bfec57 100644 --- a/hyphen/hyphen-2.4.patch +++ b/hyphen/hyphen-2.4.patch @@ -166,4 +166,11 @@ diff -u misc/hyphen-2.4/makefile.mk misc/build/hyphen-2.4/makefile.mk +ALL: ALLTAR + +.INCLUDE : target.mk -Common subdirectories: misc/hyphen-2.4/tests and misc/build/hyphen-2.4/tests +--- misc/hyphen-2.4/tests/test.sh Wed Apr 30 14:12:33 2008 ++++ misc/build/hyphen-2.4/tests/test.sh Fri Nov 5 09:05:16 2010 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/env bash + + function check_valgrind_log () { + if [ "$VALGRIND" != "" ]; then diff --git a/idlc/inc/idlc/idlc.hxx b/idlc/inc/idlc/idlc.hxx index 9f8a0f25ede9..8262b26fc095 100644 --- a/idlc/inc/idlc/idlc.hxx +++ b/idlc/inc/idlc/idlc.hxx @@ -103,6 +103,12 @@ public: { m_warningCount++; } sal_uInt32 getLineNumber() { return m_lineNumber; } + sal_uInt32 getOffsetStart() + { return m_offsetStart; } + sal_uInt32 getOffsetEnd() + { return m_offsetEnd; } + void setOffset( sal_uInt32 start, sal_uInt32 end) + { m_offsetStart = start; m_offsetEnd = end; } void setLineNumber(sal_uInt32 lineNumber) { m_lineNumber = lineNumber; } void incLineNumber() @@ -137,6 +143,8 @@ private: sal_uInt32 m_errorCount; sal_uInt32 m_warningCount; sal_uInt32 m_lineNumber; + sal_uInt32 m_offsetStart; + sal_uInt32 m_offsetEnd; ParseState m_parseState; StringSet m_includes; }; diff --git a/idlc/source/errorhandler.cxx b/idlc/source/errorhandler.cxx index 19d328d0e140..30ecd1ef7ca4 100644 --- a/idlc/source/errorhandler.cxx +++ b/idlc/source/errorhandler.cxx @@ -489,7 +489,7 @@ static OString flagToString(sal_uInt32 flag) return flagStr; } -static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber) +static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber, sal_uInt32 start, sal_uInt32 end) { OString file; if ( idlc()->getFileName() == idlc()->getRealFileName() ) @@ -497,14 +497,23 @@ static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber) else file = idlc()->getFileName(); - fprintf(stderr, "%s(%lu) : %s", file.getStr(), + fprintf(stderr, "%s:%lu [%lu:%lu] : %s", file.getStr(), sal::static_int_cast< unsigned long >(lineNumber), + sal::static_int_cast< unsigned long >(start), + sal::static_int_cast< unsigned long >(end), errorCodeToMessage(eCode)); } +static void errorHeader(ErrorCode eCode, sal_uInt32 lineNumber) +{ + errorHeader(eCode, lineNumber, + idlc()->getOffsetStart(), idlc()->getOffsetEnd()); +} + static void errorHeader(ErrorCode eCode) { - errorHeader(eCode, idlc()->getLineNumber()); + errorHeader(eCode, idlc()->getLineNumber(), + idlc()->getOffsetStart(), idlc()->getOffsetEnd()); } static void warningHeader(WarningCode wCode) diff --git a/idlc/source/idlc.cxx b/idlc/source/idlc.cxx index 3717405c7775..d1b3b9587d5b 100644 --- a/idlc/source/idlc.cxx +++ b/idlc/source/idlc.cxx @@ -220,6 +220,8 @@ Idlc::Idlc(Options* pOptions) , m_errorCount(0) , m_warningCount(0) , m_lineNumber(0) + , m_offsetStart(0) + , m_offsetEnd(0) , m_parseState(PS_NoState) { m_pScopes = new AstStack(); diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx index 8527fcab5b01..48c975b280a9 100644 --- a/idlc/source/idlccompile.cxx +++ b/idlc/source/idlccompile.cxx @@ -42,7 +42,8 @@ #ifdef SAL_UNX #include <unistd.h> -#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || defined(AIX) +#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || \ + defined(AIX) || defined(OPENBSD) #include <sys/wait.h> #else #include <wait.h> diff --git a/idlc/source/parser.y b/idlc/source/parser.y index 8da9c7ad63b5..6de66aee9b17 100644 --- a/idlc/source/parser.y +++ b/idlc/source/parser.y @@ -103,8 +103,8 @@ #include <algorithm> #include <vector> - -using namespace ::rtl; + +using namespace rtl; #define YYDEBUG 1 #define YYERROR_VERBOSE 1 diff --git a/idlc/source/scanner.ll b/idlc/source/scanner.ll index bbcc08fae37b..2206297a0ffd 100644 --- a/idlc/source/scanner.ll +++ b/idlc/source/scanner.ll @@ -48,12 +48,19 @@ #include "attributeexceptions.hxx" + class AstExpression; class AstArray; class AstMember; #include <parser.hxx> +/* handle locations */ +int yycolumn = 1; + +#define YY_USER_ACTION idlc()->setOffset(yycolumn, yycolumn+yyleng-1); \ + yycolumn += yyleng; + sal_Int32 beginLine = 0; ::rtl::OString docu; @@ -227,6 +234,7 @@ static void parseLineAndFile(sal_Char* pBuf) for (; *r != '\0' && *r != ' ' && *r != '\t'; r++) ; *r++ = 0; idlc()->setLineNumber((sal_uInt32)atol(h)); + yylineno = atol(h); /* Find file name, if present */ for (; *r != '"'; r++) @@ -283,8 +291,10 @@ IDENTIFIER ("_"?({ALPHA}|{DIGIT})+)* %% [ \t\r]+ ; /* eat up whitespace */ -[\n] { - idlc()->incLineNumber(); +[\n] { + idlc()->incLineNumber(); + yycolumn = 1; + yylineno++; } attribute return IDL_ATTRIBUTE; @@ -349,21 +359,21 @@ published return IDL_PUBLISHED; "..." return IDL_ELLIPSIS; ("-")?{INT_LITERAL}+(l|L|u|U)? { - return asciiToInteger(yytext, &yylval.ival, &yylval.uval); + return asciiToInteger(yytext, &yylval.ival, &yylval.uval); } ("-")?{OCT_LITERAL}+(l|L|u|U)? { - return asciiToInteger(yytext, &yylval.ival, &yylval.uval); + return asciiToInteger(yytext, &yylval.ival, &yylval.uval); } ("-")?{HEX_LITERAL}+(l|L|u|U)? { - return asciiToInteger(yytext, &yylval.ival, &yylval.uval); + return asciiToInteger(yytext, &yylval.ival, &yylval.uval); } ("-")?{DIGIT}+(e|E){1}(("+"|"-")?{DIGIT}+)+(f|F)? | ("-")?"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)? | ("-")?{DIGIT}*"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)? { - yylval.dval = asciiToFloat( yytext ); + yylval.dval = asciiToFloat( yytext ); return IDL_FLOATING_PT_LITERAL; } diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst index 8daf376500c6..836899ce3969 100644 --- a/instsetoo_native/util/openoffice.lst +++ b/instsetoo_native/util/openoffice.lst @@ -56,7 +56,7 @@ LibreOffice PRODUCTVERSION 3.3 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 @@ -121,7 +121,7 @@ LibreOffice_wJRE PRODUCTVERSION 3.3 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 @@ -186,7 +186,7 @@ LibreOffice_Dev PRODUCTVERSION 3.3 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 BASISROOTNAME LibO-dev UNIXBASISROOTNAME lo-dev POSTVERSIONEXTENSION @@ -263,7 +263,7 @@ URE PRODUCTEXTENSION BRANDPACKAGEVERSION 3 LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 LICENSENAME LGPL SERVICESPROJEKT 1 SETSTATICPATH 1 @@ -303,7 +303,7 @@ LibreOffice_SDK PRODUCTVERSION 3.3 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 POSTVERSIONEXTENSION SDK POSTVERSIONEXTENSIONUNIX sdk BRANDPACKAGEVERSION 3 @@ -348,7 +348,7 @@ LibreOffice_Dev_SDK PRODUCTVERSION 3.3 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta3 BASISROOTNAME LibO-dev UNIXBASISROOTNAME lo-dev POSTVERSIONEXTENSION SDK diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx index e1569b1eea31..81355dda210c 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx @@ -89,6 +89,9 @@ char const* const* SunInfo::getLibraryPaths(int* size) static char const * ar[] = { "/lib/" JFW_PLUGIN_ARCH "/client", +#if defined(OPENBSD) + "/lib/" JFW_PLUGIN_ARCH "/server", +#endif "/lib/" JFW_PLUGIN_ARCH "/native_threads", "/lib/" JFW_PLUGIN_ARCH diff --git a/lpsolve/lp_solve_5.5-openbsd.patch b/lpsolve/lp_solve_5.5-openbsd.patch new file mode 100644 index 000000000000..d632d918a1de --- /dev/null +++ b/lpsolve/lp_solve_5.5-openbsd.patch @@ -0,0 +1,20 @@ +--- misc/lp_solve_5.5/lpsolve55/ccc Fri Nov 5 13:51:18 2010 ++++ misc/build/lp_solve_5.5/lpsolve55/ccc Fri Nov 5 13:51:11 2010 +@@ -6,7 +6,7 @@ + if [ "$PLATFORM" = "SCO_UNIX" ] + then def='-dy -K PIC -DNOLONGLONG' + dl=-lc +-else dl=-ldl ++else + so=y + fi + +@@ -19,7 +19,7 @@ + if [ "$so" != "" ] + then + $c -fpic -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src +- $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl ++ $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm + fi + + rm *.o 2>/dev/null diff --git a/lpsolve/makefile.mk b/lpsolve/makefile.mk index 5261bc9b835d..70460646803d 100644 --- a/lpsolve/makefile.mk +++ b/lpsolve/makefile.mk @@ -48,6 +48,10 @@ PATCH_FILES=\ ADDITIONAL_FILES=lpsolve55$/ccc.solaris lpsolve55$/ccc.os2 .ENDIF +.IF "$(OS)"=="OPENBSD" +PATCH_FILES+=lp_solve_5.5-openbsd.patch +.ENDIF + CONFIGURE_DIR= CONFIGURE_ACTION= CONFIGURE_FLAGS= diff --git a/odk/configure.pl b/odk/configure.pl index 11f5987cb94a..c02755c56772 100755 --- a/odk/configure.pl +++ b/odk/configure.pl @@ -636,9 +636,9 @@ sub searchMacOffice sub searchoffice { - my $offset = rindex($main::sdkpath, "/openoffice.org"); + my $offset = rindex($main::sdkpath, "/libreoffice"); my $tmpOffice = substr($main::sdkpath, 0, $offset); - my $officepath = "$tmpOffice/openoffice.org$main::OO_MAJORVERSION"; + my $officepath = "$tmpOffice/libreoffice"; # if ( $main::OO_MINORVERSION > 0) { # $officepath = "$officepath$main::OO_MINORVERSION"; diff --git a/odk/setsdkenv_unix b/odk/setsdkenv_unix index 31e0200eb1b7..6b0dd7c18683 100755 --- a/odk/setsdkenv_unix +++ b/odk/setsdkenv_unix @@ -10,7 +10,7 @@ if [ "$OSTYPE" = "Darwin" ] then OO_SDK_NAME=`basename $OO_SDK_HOME` else - OO_SDK_NAME=openoffice.org${OOVERSION}_sdk + OO_SDK_NAME=libreoffice${OOVERSION}_sdk fi export OO_SDK_HOME diff --git a/officecfg/registry/data/org/openoffice/Office/Labels.xcu b/officecfg/registry/data/org/openoffice/Office/Labels.xcu index 9f92541e60dd..c345e5d54765 100644 --- a/officecfg/registry/data/org/openoffice/Office/Labels.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Labels.xcu @@ -31,6 +31,346 @@ <node oor:name="Manufacturer"> + <node oor:name="Tower" oor:op="replace"> + + <node oor:name="L0" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W100 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;7000;3700;7000;3700;0;0;3;8</value> + </prop> + </node> + <node oor:name="L1" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W101 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10500;3700;10500;3700;0;0;2;8</value> + </prop> + </node> + <node oor:name="L2" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W102 Freight Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10500;4720;10100;4600;200;420;2;6</value> + </prop> + </node> + <node oor:name="L3" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W103 Freight Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10300;7000;10100;7000;300;420;2;4</value> + </prop> + </node> + <node oor:name="L4" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W104 Freight Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10800;14400;9800;13900;200;420;2;2</value> + </prop> + </node> + <node oor:name="L5" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W105 Freight Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;19960;14500;19960;14500;500;400;1;2</value> + </prop> + </node> + <node oor:name="L6" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W106 Freight Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;21000;29600;21000;29600;0;0;1;1</value> + </prop> + </node> + <node oor:name="L7" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W107 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;4060;2120;3810;2120;470;1160;5;13</value> + </prop> + </node> + <node oor:name="L8" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W108 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;6600;3810;6350;3810;720;1590;3;7</value> + </prop> + </node> + <node oor:name="L9" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W110 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;7000;3500;7000;3500;0;420;3;8</value> + </prop> + </node> + <node oor:name="L10" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W111 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10500;3500;10500;3500;0;420;2;8</value> + </prop> + </node> + <node oor:name="L11" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W115 Mailing Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;4050;2990;3850;2990;500;1450;5;9</value> + </prop> + </node> + <node oor:name="L12" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W116 (32mm dia) Round</value> + </prop> + <prop oor:name="Measure"> + + <value>S;3340;3520;3200;3200;500;1000;6;8</value> + </prop> + </node> + <node oor:name="L13" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W117 (50mm dia) Round</value> + </prop> + <prop oor:name="Measure"> + + <value>S;6450;5810;5000;5000;1500;800;3;5</value> + </prop> + </node> + <node oor:name="L14" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W118 (80mm dia) Round</value> + </prop> + <prop oor:name="Measure"> + + <value>S;9500;9500;8000;8000;1750;1450;2;3</value> + </prop> + </node> + <node oor:name="L15" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W221 Wrap-around Disk Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10400;7000;7000;7000;1800;420;2;4</value> + </prop> + </node> + <node oor:name="L16" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W222 Video Spine Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;14500;1693;14500;1693;3260;1380;1;16</value> + </prop> + </node> + <node oor:name="L17" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W223 Video Face Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;7870;4660;7620;4660;2750;950;2;6</value> + </prop> + </node> + <node oor:name="L18" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W224 Audio Cassette</value> + </prop> + <prop oor:name="Measure"> + + <value>S;9150;4200;8900;4200;1470;2320;2;6</value> + </prop> + </node> + <node oor:name="L19" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W225 Slide Mount</value> + </prop> + <prop oor:name="Measure"> + + <value>S;5080;1270;4600;1110;560;1670;4;21</value> + </prop> + </node> + <node oor:name="L20" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W227 Diskette Face</value> + </prop> + <prop oor:name="Measure"> + + <value>S;9310;5200;7000;5200;2330;1920;2;5</value> + </prop> + </node> + <node oor:name="L21" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-P229 ID Photos</value> + </prop> + <prop oor:name="Measure"> + + <value>S;3800;4800;3500;4500;1100;3050;5;5</value> + </prop> + </node> + <node oor:name="L22" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-B440 Business Cards</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10000;5500;8500;5500;1500;1000;2;5</value> + </prop> + </node> + <node oor:name="L23" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W330 Lever Arch</value> + </prop> + <prop oor:name="Measure"> + + <value>S;20000;6000;20000;6000;500;2960;1;4</value> + </prop> + </node> + <node oor:name="L24" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-P230 CD Business Card (78 x 59)</value> + </prop> + <prop oor:name="Measure"> + + <value>S;10275;6956;7800;5900;1465;1500;2;4</value> + </prop> + </node> + <node oor:name="L25" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W228 CD Label for CD Labeller</value> + </prop> + <prop oor:name="Measure"> + + <value>S;11700;12800;11700;11700;4650;2800;1;2</value> + </prop> + </node> + <node oor:name="L26" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W250 Full Face CD Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;11700;13700;11700;11700;4650;2200;1;2</value> + </prop> + </node> + <node oor:name="L27" oor:op="replace" oor:finalized="true"> + + <prop oor:name="Name"> + + <value xml:lang="x-no-translate">true</value> + <value xml:lang="en-US">CIL-W251 Mini CD Label</value> + </prop> + <prop oor:name="Measure"> + + <value>S;9800;9800;7800;7800;1700;1200;2;3</value> + </prop> + </node> + </node> + <node oor:name="Avery A4" oor:op="replace"> <node oor:name="L0" oor:op="replace" oor:finalized="true"> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu index 3c2584126a0b..634e026c8f9a 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu @@ -1205,12 +1205,11 @@ <value xml:lang="en-US">~Remove Filter</value> </prop> </node> - <node oor:name=".uno:DataForm" oor:op="replace"> - <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="de">D~atenForm...</value> - <value xml:lang="en-US">D~ataForm...</value> - </prop> - </node> + <node oor:name=".uno:DataForm" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">F~orm...</value> + </prop> + </node> <node oor:name=".uno:DataSubTotals" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Sub~totals...</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 440da5c2af88..01ce2a378484 100755 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -4145,6 +4145,11 @@ <value xml:lang="en-US">License Information...</value> </prop> </node> + <node oor:name=".uno:Credits" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">%PRODUCTNAME Credits...</value> + </prop> + </node> <node oor:name=".uno:StatusBarVisible" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Status ~Bar</value> diff --git a/oox/inc/oox/export/drawingml.hxx b/oox/inc/oox/export/drawingml.hxx index d3cabe63998d..0451f2c9cbb5 100644 --- a/oox/inc/oox/export/drawingml.hxx +++ b/oox/inc/oox/export/drawingml.hxx @@ -26,7 +26,7 @@ namespace text { class XTextRange; } namespace io { - struct XOutputStream; + class XOutputStream; } }}} diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 1d07ebad64ed..524b728bc106 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -218,7 +218,7 @@ Reference< chart2::data::XLabeledDataSequence > lcl_getCategories( const Referen catch( uno::Exception & ex ) { (void)ex; // avoid warning for pro build - OSL_ENSURE( false, OUStringToOString( + OSL_ENSURE( false, rtl::OUStringToOString( OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) + OUString::createFromAscii( typeid( ex ).name()) + OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) + @@ -354,7 +354,7 @@ bool lcl_isSeriesAttachedToFirstAxis( catch( uno::Exception & ex ) { (void)ex; // avoid warning for pro build - OSL_ENSURE( false, OUStringToOString( + OSL_ENSURE( false, rtl::OUStringToOString( OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) + OUString::createFromAscii( typeid( ex ).name()) + OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) + @@ -374,7 +374,7 @@ OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< char xDoc->getDataProvider(), uno::UNO_QUERY ); if( xConversion.is()) aResult = xConversion->convertRangeToXML( rRange ); - OSL_TRACE("lcl_ConvertRange, the originla formula is %s, the new formula is %s ", OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr()); + OSL_TRACE("lcl_ConvertRange, the originla formula is %s, the new formula is %s ", rtl::OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), rtl::OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr()); return aResult; } @@ -673,7 +673,7 @@ OUString ChartExport::parseFormula( const OUString& rRange ) aResult = aRange; } - OSL_TRACE("ChartExport::parseFormula, the originla formula is %s, the new formula is %s ", OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr()); + OSL_TRACE("ChartExport::parseFormula, the originla formula is %s, the new formula is %s ", rtl::OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), rtl::OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr()); return aResult; } @@ -831,7 +831,7 @@ void ChartExport::InitRangeSegmentationProperties( const Reference< chart2::XCha catch( uno::Exception & ex ) { (void)ex; // avoid warning for pro build - OSL_ENSURE( false, OUStringToOString( + OSL_ENSURE( false, rtl::OUStringToOString( OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) + OUString::createFromAscii( typeid( ex ).name()) + OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) + @@ -2645,7 +2645,7 @@ void ChartExport::exportDataPoints( { (void)rEx; // avoid warning for pro build DBG_ERROR1( "Exception caught during Export of data point: %s", - OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); + rtl::OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); } } else diff --git a/packimages/pack/makefile.mk b/packimages/pack/makefile.mk index 471f5b585403..59611774b750 100644 --- a/packimages/pack/makefile.mk +++ b/packimages/pack/makefile.mk @@ -93,7 +93,7 @@ $(MISC)$/oxygen.flag : $(OXYGEN_TARBALL) # unpack the classic icon set $(MISC)$/classic.flag : $(CLASSIC_TARBALL) - cd $(MISC) && gunzip -d -c $(CLASSIC_TARBALL) | ( tar -xf - ) && $(TOUCH) $(@:f) + cd $(MISC) && gzip -d -c $(CLASSIC_TARBALL) | ( tar -xf - ) && $(TOUCH) $(@:f) .IF "$(GUI)"=="UNX" chmod -R g+w $(MISC)$/classic .ENDIF diff --git a/python/makefile.mk b/python/makefile.mk index 22cbe082e8cf..6f4b7ee5623c 100644 --- a/python/makefile.mk +++ b/python/makefile.mk @@ -137,7 +137,7 @@ BUILD_DIR=PC/VC6 # solver during registration in insetoo_native .IF "$(CCNUMVER)" >= "001600000000" BUILD_ACTION=MSBuild.exe pcbuild.sln /t:Build /p:Configuration=Release /ToolsVersion:4.0 -.ELIF +.ELSE BUILD_ACTION=$(COMPATH)$/vcpackages$/vcbuild.exe pcbuild.sln "Release|Win32" .ENDIF .ENDIF diff --git a/pyuno/source/module/makefile.mk b/pyuno/source/module/makefile.mk index c928cc6f8e4c..06f9b4262d15 100644 --- a/pyuno/source/module/makefile.mk +++ b/pyuno/source/module/makefile.mk @@ -144,6 +144,8 @@ $(PYUNO_MODULE) : $(SLO)$/pyuno_dlopenwrapper.obj @echo ld -shared -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd .ELIF "$(OS)" == "NETBSD" @echo $(LINK) $(LINKFLAGSSHLCUI) -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd +.ELIF "$(OS)" == "OPENBSD" + @echo ld -shared -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd .ELIF "$(OS)" == "MACOSX" @echo $(CC) -bundle -ldl -o $@ $(SLO)$/pyuno_dlopenwrapper.o $(EXTRA_LINKFLAGS) $(EXTRA_FRAMEWORK_FLAG) > $(MISC)$/$(@:b).cmd .ELSE diff --git a/sal/inc/osl/endian.h b/sal/inc/osl/endian.h index 9314c7fcfe5e..c9004bdab642 100644 --- a/sal/inc/osl/endian.h +++ b/sal/inc/osl/endian.h @@ -154,9 +154,9 @@ extern "C" { /** Check supported platform. */ -#if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ - !defined(LINUX) && !defined(NETBSD) && !defined(SCO) && \ - !defined(AIX) && !defined(HPUX) && \ +#if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ + !defined(LINUX) && !defined(NETBSD) && !defined(SCO) && \ + !defined(AIX) && !defined(HPUX) && !defined(OPENBSD) && \ !defined(SOLARIS) && !defined(MACOSX) && !defined(FREEBSD) # error "Target platform not specified !" #endif diff --git a/sal/inc/rtl/uuid.h b/sal/inc/rtl/uuid.h index fa3883989231..d17c328fe638 100644 --- a/sal/inc/rtl/uuid.h +++ b/sal/inc/rtl/uuid.h @@ -201,6 +201,8 @@ void SAL_CALL rtl_createNamedUuid( #define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 100000 #elif AIX #define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10 +#elif OPENBSD +#define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10 #else #error "System time resolution must be calculated!" #endif diff --git a/sal/inc/sal/alloca.h b/sal/inc/sal/alloca.h index 8e1dec305b1f..0580a1faa42f 100644 --- a/sal/inc/sal/alloca.h +++ b/sal/inc/sal/alloca.h @@ -36,7 +36,7 @@ #define INCLUDED_ALLOCA_H #endif -#elif defined (FREEBSD) || defined(NETBSD) +#elif defined (FREEBSD) || defined(NETBSD) || defined(OPENBSD) #ifndef INCLUDED_STDLIB_H #include <stdlib.h> diff --git a/sal/inc/sal/config.h b/sal/inc/sal/config.h index cd4e10b71a56..9cdf2ac3fd18 100644 --- a/sal/inc/sal/config.h +++ b/sal/inc/sal/config.h @@ -92,7 +92,8 @@ #define SAL_SYSCONFIGFILE( name ) name ".ini" #endif -#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(SCO) || defined(AIX) +#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || \ + defined(SCO) || defined(AIX) || defined(OPENBSD) #define SAL_UNX #define SAL_DLLEXTENSION ".so" #define SAL_DLLPREFIX "lib" diff --git a/sal/inc/sal/types.h b/sal/inc/sal/types.h index 36b45009667a..9fac15ad319e 100644 --- a/sal/inc/sal/types.h +++ b/sal/inc/sal/types.h @@ -345,7 +345,9 @@ typedef struct _sal_Sequence lack RTTI support, dynamic_cast is not included here). */ #ifdef __cplusplus -#if defined SAL_W32 || defined SOLARIS || defined LINUX || defined MACOSX || defined FREEBSD || defined NETBSD || defined AIX || defined OS2 +#if defined SAL_W32 || defined SOLARIS || defined LINUX || defined MACOSX || \ + defined FREEBSD || defined NETBSD || defined AIX || defined OS2 || \ + defined OPENBSD #define SAL_CONST_CAST(type, expr) (const_cast< type >(expr)) #define SAL_REINTERPRET_CAST(type, expr) (reinterpret_cast< type >(expr)) #define SAL_STATIC_CAST(type, expr) (static_cast< type >(expr)) diff --git a/sal/osl/unx/backtrace.c b/sal/osl/unx/backtrace.c index 69dafac3b3dc..7787ee997c52 100644 --- a/sal/osl/unx/backtrace.c +++ b/sal/osl/unx/backtrace.c @@ -140,7 +140,7 @@ void backtrace_symbols_fd( void **buffer, int size, int fd ) #endif /* defined SOLARIS */ -#if defined FREEBSD || defined NETBSD +#if defined FREEBSD || defined NETBSD || defined OPENBSD #include <dlfcn.h> #include <pthread.h> #include <setjmp.h> diff --git a/sal/osl/unx/backtrace.h b/sal/osl/unx/backtrace.h index 4e35afe5d986..63b5fd33f93b 100644 --- a/sal/osl/unx/backtrace.h +++ b/sal/osl/unx/backtrace.h @@ -27,7 +27,8 @@ ************************************************************************/ -#if defined (SOLARIS) || defined (FREEBSD) || defined (NETBSD) +#if defined (SOLARIS) || defined (FREEBSD) || defined (NETBSD) || \ + defined (OPENBSD) #ifdef __cplusplus extern "C" { @@ -40,7 +41,7 @@ int backtrace( void **buffer, int max_frames ); void backtrace_symbols_fd( void **buffer, int size, int fd ); /* no frame.h on FreeBSD */ -#if defined (FREEBSD) || defined (NETBSD) +#if defined (FREEBSD) || defined (NETBSD) || defined (OPENBSD) struct frame { long arg0[8]; long arg1[6]; @@ -54,7 +55,7 @@ struct frame { } /* extern "C" */ #endif -#endif /* defined SOLARIS || FREEBSD */ +#endif /* defined SOLARIS || FREEBSD || OPENBSD */ #if defined (LINUX) && defined (SPARC) #ifdef __cplusplus diff --git a/sal/osl/unx/file.cxx b/sal/osl/unx/file.cxx index 83185749bff9..c18960f4d872 100644 --- a/sal/osl/unx/file.cxx +++ b/sal/osl/unx/file.cxx @@ -272,7 +272,8 @@ void FileHandle_Impl::operator delete (void * p, size_t) size_t FileHandle_Impl::getpagesize() { -#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) +#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) || \ + defined(OPENBSD) return sal::static_int_cast< size_t >(::getpagesize()); #else /* POSIX */ return sal::static_int_cast< size_t >(::sysconf(_SC_PAGESIZE)); diff --git a/sal/osl/unx/file_error_transl.cxx b/sal/osl/unx/file_error_transl.cxx index 6d81c107f750..f9c858078c1d 100644 --- a/sal/osl/unx/file_error_transl.cxx +++ b/sal/osl/unx/file_error_transl.cxx @@ -217,19 +217,19 @@ oslFileError oslTranslateFileError(sal_Bool bIsError, int Errno) osl_error = osl_File_E_LOOP; break; -#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD)) +#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)) case EILSEQ: osl_error = osl_File_E_ILSEQ; break; #endif /* MACOSX */ -#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD)) +#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)) case ENOLINK: osl_error = osl_File_E_NOLINK; break; #endif /* MACOSX */ -#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD)) +#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)) case EMULTIHOP: osl_error = osl_File_E_MULTIHOP; break; diff --git a/sal/osl/unx/file_volume.cxx b/sal/osl/unx/file_volume.cxx index 5e916846e712..bc3812839979 100644 --- a/sal/osl/unx/file_volume.cxx +++ b/sal/osl/unx/file_volume.cxx @@ -70,7 +70,7 @@ static const sal_Char* MOUNTTAB="/etc/mnttab"; #include <sys/quota.h> static const sal_Char* MOUNTTAB="/etc/mtab"; -#elif defined(NETBSD) || defined(FREEBSD) +#elif defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) #include <sys/param.h> #include <sys/ucred.h> @@ -180,19 +180,23 @@ oslFileError osl_getVolumeInformation( rtl_uString* ustrDirectoryURL, oslVolumeI #ifdef HAVE_STATFS_H -#if defined(FREEBSD) || defined(MACOSX) +#if defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD) # define __OSL_STATFS_STRUCT struct statfs # define __OSL_STATFS(dir, sfs) statfs((dir), (sfs)) # define __OSL_STATFS_BLKSIZ(a) ((sal_uInt64)((a).f_bsize)) # define __OSL_STATFS_TYPENAME(a) ((a).f_fstypename) +#if defined(OPENBSD) +# define __OSL_STATFS_ISREMOTE(a) (rtl_str_compare((a).f_fstypename, "nfs") == 0) +#else # define __OSL_STATFS_ISREMOTE(a) (((a).f_type & MNT_LOCAL) == 0) +#endif /* always return true if queried for the properties of the file system. If you think this is wrong under any of the target platforms fix it!!!! */ # define __OSL_STATFS_IS_CASE_SENSITIVE_FS(a) (1) # define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) (1) -#endif /* FREEBSD || MACOSX */ +#endif /* FREEBSD || MACOSX || OPENBSD */ #if defined(NETBSD) @@ -1118,7 +1122,8 @@ osl_isFloppyMounted (oslVolumeDeviceHandleImpl* pDevice) * *****************************************************************************/ -#if (defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX)) +#if (defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \ + defined(AIX) || defined(OPENBSD)) static oslVolumeDeviceHandle osl_isFloppyDrive(const sal_Char* pszPath) { (void)pszPath; @@ -1126,7 +1131,8 @@ static oslVolumeDeviceHandle osl_isFloppyDrive(const sal_Char* pszPath) } #endif /* MACOSX */ -#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX)) +#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \ + defined(AIX) || defined(OPENBSD)) static oslFileError osl_mountFloppy(oslVolumeDeviceHandle hFloppy) { (void)hFloppy; @@ -1134,7 +1140,8 @@ static oslFileError osl_mountFloppy(oslVolumeDeviceHandle hFloppy) } #endif /* MACOSX */ -#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX)) +#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \ + defined(AIX) || defined(OPENBSD)) static oslFileError osl_unmountFloppy(oslVolumeDeviceHandle hFloppy) { (void)hFloppy; @@ -1142,19 +1149,19 @@ static oslFileError osl_unmountFloppy(oslVolumeDeviceHandle hFloppy) } #endif /* MACOSX */ -#if ( defined(NETBSD) || defined(FREEBSD) ) +#if ( defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) ) static sal_Bool osl_getFloppyMountEntry(const sal_Char* pszPath, oslVolumeDeviceHandleImpl* pItem) { return sal_False; } -#endif /* NETBSD || FREEBSD */ +#endif /* NETBSD || FREEBSD || OPENBSD */ -#if ( defined(NETBSD) || defined(FREEBSD) ) +#if ( defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) ) static sal_Bool osl_isFloppyMounted(oslVolumeDeviceHandleImpl* pDevice) { return sal_False; } -#endif /* NETBSD || FREEBSD */ +#endif /* NETBSD || FREEBSD || OPENBSD */ #ifdef DEBUG_OSL_FILE diff --git a/sal/osl/unx/makefile.mk b/sal/osl/unx/makefile.mk index 4344e04aac38..8c27831db580 100644 --- a/sal/osl/unx/makefile.mk +++ b/sal/osl/unx/makefile.mk @@ -118,7 +118,9 @@ OBJFILES= $(OBJ)$/conditn.obj \ SLOFILES += $(SLO)$/osxlocale.obj .ENDIF -.IF "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || "$(OS)$(CPU)"=="LINUXS" || "$(OS)"=="MACOSX" || "$(OS)"=="AIX" +.IF "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || \ + "$(OS)$(CPU)"=="LINUXS" || "$(OS)"=="MACOSX" || \ + "$(OS)"=="AIX" || "$(OS)"=="OPENBSD" SLOFILES += $(SLO)$/backtrace.obj OBJFILES += $(OBJ)$/backtrace.obj .ENDIF diff --git a/sal/osl/unx/nlsupport.c b/sal/osl/unx/nlsupport.c index 6ae8abd18e00..f78aa92c25dd 100644 --- a/sal/osl/unx/nlsupport.c +++ b/sal/osl/unx/nlsupport.c @@ -31,7 +31,8 @@ #include <osl/process.h> #include <rtl/memory.h> -#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) +#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || \ + defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD) #include <pthread.h> #ifndef MACOSX #include <locale.h> @@ -232,7 +233,8 @@ static rtl_Locale * _parse_locale( const char * locale ) return NULL; } -#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD) +#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || \ + defined(FREEBSD) || defined(OPENBSD) /* * This implementation of osl_getTextEncodingFromLocale maps @@ -543,7 +545,31 @@ const _pair _nl_language_list[] = { { "UTF-8", RTL_TEXTENCODING_UTF8 } /* ISO-10646/UTF-8 */ }; -#endif /* ifdef SOLARIS LINUX FREEBSD NETBSD */ +#elif defined(OPENBSD) + +const _pair _nl_language_list[] = { + { "ASCII", RTL_TEXTENCODING_ASCII_US }, /* US-ASCII */ + { "BIG5", RTL_TEXTENCODING_BIG5 }, /* China - Traditional Chinese */ + { "CP1251", RTL_TEXTENCODING_MS_1251 }, /* MS-CYRL */ + { "CP866", RTL_TEXTENCODING_IBM_866 }, /* CP866 866 */ + { "EUCCN", RTL_TEXTENCODING_EUC_CN }, /* China - Simplified Chinese */ + { "EUCJP", RTL_TEXTENCODING_EUC_JP }, /* Japan */ + { "EUCKR", RTL_TEXTENCODING_EUC_KR }, /* Korea */ + { "ISO8859-1", RTL_TEXTENCODING_ISO_8859_1 }, /* Western */ + { "ISO8859-15", RTL_TEXTENCODING_ISO_8859_15 }, /* Western Updated (w/Euro sign) */ + { "ISO8859-2", RTL_TEXTENCODING_ISO_8859_2 }, /* Central European */ + { "ISO8859-4", RTL_TEXTENCODING_ISO_8859_4 }, /* LATIN4 L4 */ + { "ISO8859-5", RTL_TEXTENCODING_ISO_8859_5 }, /* Cyrillic */ + { "ISO8859-7", RTL_TEXTENCODING_ISO_8859_7 }, /* Greek */ + { "ISO8859-9", RTL_TEXTENCODING_ISO_8859_9 }, /* Turkish */ + { "KOI8-R", RTL_TEXTENCODING_KOI8_R }, /* KOI8-R */ + { "KOI8-U", RTL_TEXTENCODING_KOI8_U }, /* KOI8-U */ + { "SJIS", RTL_TEXTENCODING_SHIFT_JIS }, /* Japan */ + { "US-ASCII", RTL_TEXTENCODING_ASCII_US }, /* US-ASCII */ + { "UTF-8", RTL_TEXTENCODING_UTF8 } /* ISO-10646/UTF-8 */ +}; + +#endif /* ifdef SOLARIS LINUX FREEBSD NETBSD OPENBSD */ static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER; @@ -925,7 +951,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) { /* only change env vars that exist already */ if( getenv( "LC_ALL" ) ) { -#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined ( AIX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \ + defined( AIX ) || defined( OPENBSD ) setenv( "LC_ALL", locale_buf, 1); #else setenv( "LC_ALL", locale_buf ); @@ -933,7 +960,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LC_CTYPE" ) ) { -#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined ( AIX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \ + defined( AIX ) || defined( OPENBSD ) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LC_CTYPE", locale_buf ); @@ -941,7 +969,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LANG" ) ) { -#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined (AIX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \ + defined( AIX ) || defined( OPENBSD) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LANG", locale_buf ); diff --git a/sal/osl/unx/process.c b/sal/osl/unx/process.c index 1c4454c96092..5a94380f0020 100644 --- a/sal/osl/unx/process.c +++ b/sal/osl/unx/process.c @@ -476,7 +476,7 @@ static void ChildStatusProc(void *pData) if (! INIT_GROUPS(data.m_name, data.m_gid) || (setuid(data.m_uid) != 0)) OSL_TRACE("Failed to change uid and guid, errno=%d (%s)\n", errno, strerror(errno)); -#if defined(LINUX) || defined (FREEBSD) || defined(NETBSD) +#if defined(LINUX) || defined (FREEBSD) || defined(NETBSD) || defined(OPENBSD) unsetenv("HOME"); #else putenv("HOME="); diff --git a/sal/osl/unx/socket.c b/sal/osl/unx/socket.c index bf6e4d633ac0..e736e7c52e85 100644 --- a/sal/osl/unx/socket.c +++ b/sal/osl/unx/socket.c @@ -46,7 +46,8 @@ #undef HAVE_POLL_H #endif -#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX) +#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || \ + defined (MACOSX) || defined (OPENBSD) #include <sys/poll.h> #define HAVE_POLL_H #endif /* HAVE_POLL_H */ diff --git a/sal/osl/unx/system.h b/sal/osl/unx/system.h index d066878772f6..3a61f67aec40 100644 --- a/sal/osl/unx/system.h +++ b/sal/osl/unx/system.h @@ -200,6 +200,32 @@ # define NO_PTHREAD_RTL #endif +#ifdef OPENBSD +# define ETIME ETIMEDOUT +# define _POSIX_THREAD_SYSCALL_SOFT 1 +# include <pthread.h> +# include <sys/sem.h> +# include <semaphore.h> +# include <dlfcn.h> +# include <sys/filio.h> +# include <sys/ioctl.h> +# include <sys/param.h> +# include <sys/time.h> +# include <sys/uio.h> +# include <sys/exec.h> +# include <sys/un.h> +# include <netinet/tcp.h> +# define IORESOURCE_TRANSFER_BSD +# include <machine/endian.h> +# define PTR_SIZE_T(s) ((size_t *)&(s)) +# define IORESOURCE_TRANSFER_BSD +# define IOCHANNEL_TRANSFER_BSD_RENO +# define pthread_testcancel() +# define NO_PTHREAD_PRIORITY +# define NO_PTHREAD_RTL +# define PTHREAD_SIGACTION pthread_sigaction +#endif + #ifdef SCO # define AF_IPX -1 # include <strings.h> @@ -349,7 +375,8 @@ int macxp_resolveAlias(char *path, int buflen); #if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO) && \ !defined(AIX) && !defined(HPUX) && \ - !defined(SOLARIS) && !defined(MACOSX) + !defined(SOLARIS) && !defined(MACOSX) && \ + !defined(OPENBSD) # error "Target platform not specified!" #endif diff --git a/sal/osl/unx/thread.c b/sal/osl/unx/thread.c index 1c8fdad8f643..689b78dc748a 100644 --- a/sal/osl/unx/thread.c +++ b/sal/osl/unx/thread.c @@ -28,6 +28,9 @@ #include "system.h" #include <string.h> +#if defined(OPENBSD) +#include <sched.h> +#endif #include <osl/diagnose.h> #include <osl/thread.h> #include <osl/nlsupport.h> @@ -280,6 +283,9 @@ static oslThread osl_thread_create_Impl ( short nFlags) { Thread_Impl* pImpl; +#if defined(OPENBSD) + pthread_attr_t attr; +#endif int nRet=0; pImpl = osl_thread_construct_Impl(); @@ -292,9 +298,23 @@ static oslThread osl_thread_create_Impl ( pthread_mutex_lock (&(pImpl->m_Lock)); +#if defined(OPENBSD) + if (pthread_attr_init(&attr) != 0) + return (0); + + if (pthread_attr_setstacksize(&attr, 262144) != 0) { + pthread_attr_destroy(&attr); + return (0); + } +#endif + if ((nRet = pthread_create ( &(pImpl->m_hThread), +#if defined(OPENBSD) + &attr, +#else PTHREAD_ATTR_DEFAULT, +#endif osl_thread_start_Impl, (void*)(pImpl))) != 0) { @@ -307,6 +327,10 @@ static oslThread osl_thread_create_Impl ( return (0); } +#if defined(OPENBSD) + pthread_attr_destroy(&attr); +#endif + /* wait for change from STARTUP to ACTIVE state */ while (pImpl->m_Flags & THREADIMPL_FLAGS_STARTUP) { diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c index 22440f9660f1..bc0931bd4ce5 100644 --- a/sal/osl/unx/time.c +++ b/sal/osl/unx/time.c @@ -33,7 +33,8 @@ #include <osl/time.h> /* FIXME: detection should be done in configure script */ -#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || defined(LINUX) +#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || \ + defined(LINUX) || defined(OPENBSD) #define STRUCT_TM_HAS_GMTOFF 1 #elif defined(SOLARIS) diff --git a/sal/rtl/source/alloc.c b/sal/rtl/source/alloc.c index 759aacfaf8b2..fb4f8767106f 100644 --- a/sal/rtl/source/alloc.c +++ b/sal/rtl/source/alloc.c @@ -70,7 +70,8 @@ typedef pthread_mutex_t mutex_type; #define RTL_MUTEX_ACQUIRE(a) pthread_mutex_lock((a)) #define RTL_MUTEX_RELEASE(a) pthread_mutex_unlock((a)) -#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) +#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) || \ + defined(OPENBSD) static sal_Size __rtl_memory_vmpagesize (void) { /* xBSD */ @@ -88,7 +89,7 @@ static sal_Size __rtl_memory_vmpagesize (void) /* other */ return (sal_Size)(0x2000); } -#endif /* FREEBSD || NETBSD || MACOSX || LINUX || SOLARIS || AIX */ +#endif /* FREEBSD || NETBSD || MACOSX || LINUX || SOLARIS || AIX || OPENBSD*/ #ifndef PROT_HEAP #define PROT_HEAP (PROT_READ | PROT_WRITE | PROT_EXEC) diff --git a/sal/rtl/source/macro.hxx b/sal/rtl/source/macro.hxx index 8ae03eab2aec..bb86b7d9ae39 100644 --- a/sal/rtl/source/macro.hxx +++ b/sal/rtl/source/macro.hxx @@ -53,6 +53,8 @@ #define THIS_OS "FreeBSD" #elif defined AIX #define THIS_OS "AIX" +#elif defined OPENBSD +#define THIS_OS "OpenBSD" #endif #if ! defined THIS_OS diff --git a/sal/workben/makefile.mk b/sal/workben/makefile.mk index c93d756ba132..99795f6fbe16 100644 --- a/sal/workben/makefile.mk +++ b/sal/workben/makefile.mk @@ -366,7 +366,8 @@ APP4DEPN= $(SLB)$/sal.lib # tgetpwnam # .IF "$(TESTAPP)" == "tgetpwnam" -.IF "$(OS)"=="SCO" || "$(OS)"=="NETBSD" || "$(OS)"=="FREEBSD" +.IF "$(OS)"=="SCO" || "$(OS)"=="NETBSD" || "$(OS)"=="FREEBSD" || \ + "$(OS)"=="OPENBSD" CXXFILES= tgetpwnam.cxx OBJFILES= $(OBJ)$/tgetpwnam.obj diff --git a/salhelper/inc/salhelper/simplereferenceobject.hxx b/salhelper/inc/salhelper/simplereferenceobject.hxx index a7ae201fb3fa..c5ef6dbbd070 100644 --- a/salhelper/inc/salhelper/simplereferenceobject.hxx +++ b/salhelper/inc/salhelper/simplereferenceobject.hxx @@ -121,6 +121,12 @@ private: */ void operator =(SimpleReferenceObject); +#ifdef _MSC_VER +/* We can't now have these private with MSVC2008 at least, it leads to + compilation errors in xmloff and other places. +*/ +protected: +#endif /** not implemented (see general class documentation) @internal */ diff --git a/salhelper/source/msci.map b/salhelper/source/msci.map index 737513c93d04..b0359e0c7166 100644 --- a/salhelper/source/msci.map +++ b/salhelper/source/msci.map @@ -19,6 +19,7 @@ GetVersionInfo UDK_3.1 { global: + ??_VSimpleReferenceObject@salhelper@@KAXPAX@Z; ??_7SimpleReferenceObject@salhelper@@6B@; ??0Condition@salhelper@@QAE@AAVMutex@osl@@@Z; @@ -35,4 +36,15 @@ UDK_3.1 { ??0timedout@ConditionWaiter@salhelper@@QAE@ABU012@@Z; ??1timedout@ConditionWaiter@salhelper@@UAE@XZ; ??4timedout@ConditionWaiter@salhelper@@QAEAAU012@ABU012@@Z; + + ??0Timer@salhelper@@QAE@XZ; + ??0Timer@salhelper@@QAE@ABUTTimeValue@1@@Z; + ??0Timer@salhelper@@QAE@ABUTTimeValue@1@0@Z; + ??1Timer@salhelper@@MAE@XZ; + + ?isExpired@Timer@salhelper@@QBAEXZ; + ?isTicking@Timer@salhelper@@QBAEXZ; + ?setRemainingTime@Timer@salhelper@@QAAXABUTTimeValue@2@@Z; + ?start@Timer@salhelper@@QAAXXZ; + ?stop@Timer@salhelper@@QAAXXZ; } UDK_3_0_0; diff --git a/salhelper/source/simplereferenceobject.cxx b/salhelper/source/simplereferenceobject.cxx index 0125e13198be..6df42cc1c930 100644 --- a/salhelper/source/simplereferenceobject.cxx +++ b/salhelper/source/simplereferenceobject.cxx @@ -74,4 +74,19 @@ void SimpleReferenceObject::operator delete(void * pPtr, std::nothrow_t const &) #endif // WNT } +#ifdef _MSC_VER + +/* This operator is supposed to be unimplemented, but that now leads + * to compilation and/or linking errors with MSVC2008. (Don't know + * about MSVC2010.) As it can be left unimplemented just fine with + * gcc, presumably it is never called. So do implement it then to + * avoid the compilation and/or linking errors, but make it crash + * intentionally if called. + */ +void SimpleReferenceObject::operator delete[](void * /* pPtr */) +{ + free(NULL); +} +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 307b9745be2b..7d42a218f854 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -16,6 +16,13 @@ // the need for manually calling regcomp and knowing what // services we need, and in what .so they are implemented +#ifdef WNT +# include <tools/prewin.h> +# include <windows.h> +# include <tools/postwin.h> +# undef ERROR +#endif + #include "sal/config.h" #include <cppuhelper/bootstrap.hxx> diff --git a/sc/source/core/tool/docoptio.cxx b/sc/source/core/tool/docoptio.cxx index e905cbe7f24d..6c89ba675049 100644 --- a/sc/source/core/tool/docoptio.cxx +++ b/sc/source/core/tool/docoptio.cxx @@ -452,7 +452,8 @@ ScDocCfg::ScDocCfg() : { case SCFORMULAOPT_GRAMMAR: { - ::formula::FormulaGrammar::Grammar eGram = ::formula::FormulaGrammar::GRAM_DEFAULT; + // Get default value in case this option is not set. + ::formula::FormulaGrammar::Grammar eGram = GetFormulaSyntax(); do { @@ -471,6 +472,8 @@ ScDocCfg::ScDocCfg() : case 2: // Excel R1C1 eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1; break; + default: + ; } } while (false); diff --git a/sc/source/filter/excel/frmbase.cxx b/sc/source/filter/excel/frmbase.cxx index 721ebb72f1b4..89d7c7423b68 100644 --- a/sc/source/filter/excel/frmbase.cxx +++ b/sc/source/filter/excel/frmbase.cxx @@ -104,7 +104,7 @@ void _ScRangeListTabs::Append( ScSingleRefData a, SCsTAB nTab, const BOOL b ) if( nTab < 0) nTab = a.nTab; - if( nTab >= 0 ) + if( nTab >= 0 && nTab <= MAXTAB) { _ScRangeList* p = ppTabLists[ nTab ]; @@ -169,7 +169,7 @@ void _ScRangeListTabs::Append( ScComplexRefData a, SCsTAB nTab, const BOOL b ) if( nTab < -1) nTab = a.Ref1.nTab; - if( nTab >= 0 ) + if( nTab >= 0 && nTab <= MAXTAB) { _ScRangeList* p = ppTabLists[ nTab ]; diff --git a/scp2/source/ooo/ure.scp b/scp2/source/ooo/ure.scp index f0f294a4edfd..48c1b3fd91b5 100755 --- a/scp2/source/ooo/ure.scp +++ b/scp2/source/ooo/ure.scp @@ -1002,7 +1002,7 @@ File gid_File_Dl_Stlport End #endif -#if defined _gcc3 && !(defined FREEBSD || defined NETBSD \ +#if defined _gcc3 && !(defined FREEBSD || defined NETBSD || defined OPENBSD \ || defined MACOSX || defined SYSTEM_STDLIBS || defined(WNT)) File gid_File_Dl_GccS TXT_FILE_BODY; @@ -1017,7 +1017,7 @@ File gid_File_Dl_GccS End #endif -#if defined _gcc3 && !(defined FREEBSD || defined NETBSD \ +#if defined _gcc3 && !(defined FREEBSD || defined NETBSD || defined OPENBSD \ || defined MACOSX || defined SYSTEM_STDLIBS || defined(WNT)) File gid_File_Dl_Stdcpp Dir = SCP2_URE_DL_DIR; @@ -1262,15 +1262,15 @@ Module gid_Module_Root_Ure_Hidden gid_Unixlink_File_Dl_Salhelper, gid_File_Dl_Profile_Uno, gid_File_Dl_Reg, - gid_Unixlink_File_Dl_Reg + gid_Unixlink_File_Dl_Reg, gid_File_Dl_Rmcxt, - gid_Unixlink_File_Dl_Rmcxt + gid_Unixlink_File_Dl_Rmcxt, gid_File_Dl_Store, - gid_Unixlink_File_Dl_Store + gid_Unixlink_File_Dl_Store, gid_File_Dl_Jvmaccess, - gid_Unixlink_File_Dl_Jvmaccess + gid_Unixlink_File_Dl_Jvmaccess, gid_File_Dl_Jvmfwk, - gid_Unixlink_File_Dl_Jvmfwk + gid_Unixlink_File_Dl_Jvmfwk, gid_File_Dl_Sunjavaplugin, gid_File_Dl_JrepropertiesClass, gid_File_Dl_Profile_Jvmfwk3rc, @@ -1330,7 +1330,7 @@ Module gid_Module_Root_Ure_Hidden gid_Unixlink_File_Dl_Salhelper, gid_Unixlink_File_Dl_Cppu, gid_Unixlink_File_Dl_Cppuhelper, - gid_Unixlink_File_Dl_PurpEnvHelper + gid_Unixlink_File_Dl_PurpEnvHelper, gid_Unixlink_File_Dl_Reg, gid_Unixlink_File_Dl_Rmcxt, gid_Unixlink_File_Dl_Store, diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk index 8e4815577160..818ecd1014c8 100755 --- a/sdext/source/presenter/makefile.mk +++ b/sdext/source/presenter/makefile.mk @@ -33,7 +33,7 @@ EXTNAME=PresenterScreen ENABLE_EXCEPTIONS=TRUE # survive zip dependencies -MAXLINELENGTH:=80000 +MAXLINELENGTH:=100000 # --- Settings ---------------------------------- diff --git a/set_soenv.in b/set_soenv.in index 1ae3d6615480..dbaada48110f 100644 --- a/set_soenv.in +++ b/set_soenv.in @@ -393,6 +393,45 @@ elsif ( $platform =~ m/freebsd/ ) } $INPATH = $OUTPATH.$PROEXT; } +elsif ( $platform =~ m/openbsd/ ) +{ $BIG_SVX = "TRUE"; + $COM = "GCC"; + $COMPATH = '@COMPATH@'; + $CVER = "C300"; + $GUI = "UNX"; + $GUIBASE = "unx"; + $GVER = "VCL"; + $OS = "OPENBSD"; + $PATH_SEPERATOR = $ps; + $OSVERSION = '@OSVERSION@'; + $OUTPATH = "unxobsd"; + $outfile = "OpenBSDEnv.Set"; + if ($platform =~ m/^amd64/) + { + print "Setting OpenBSD AMD64 specific values... "; + $CPU = "X"; + $CPUNAME = "X86_64"; + $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64"; + $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."server"; + $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."native_threads"; + } + elsif ($platform =~ m/^i386/) + { print "Setting OpenBSD x86 specific values... "; + $CPU = "I"; + $CPUNAME = "INTEL"; + $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386"; + $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."client"; + $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."native_threads"; + } + else + { print "Unsupported OpenBSD architecture: $platform \n"; + exit 1; + } + if( @GCCVER@ >= 30401 ) { + $CVER = "C341"; + } + $INPATH = $OUTPATH.$PROEXT; +} elsif ( $platform =~ m/linux/ ) { # General Linux settings: @@ -1044,7 +1083,7 @@ if ($platform =~ m/solaris/) $L.$USR_DT.$LIB. $L.$USR_OPENWIN.$LIB; } -elsif ($platform =~ m/linux|netbsd|osf1|freebsd|aix/) +elsif ($platform =~ m/linux|netbsd|osf1|freebsd|aix|openbsd/) { $SOLAREXTRALIB = $L.$par_dir.$LIB64; } @@ -1110,7 +1149,7 @@ if ($platform =~ m/cygwin|os2/) } # The general environment path. -if ($platform =~ m/linux|netbsd|odf1|freebsd|aix|solaris/) +if ($platform =~ m/linux|netbsd|odf1|freebsd|aix|solaris|openbsd/) { $PATH = $cur_dir. # $ps.'$SOLARVER'.$ds.'$INPATH'.$BIN. $ps.'$SOLARENV'.$ds.'$OUTPATH'.$BIN. @@ -1336,17 +1375,23 @@ if ($platform =~ m/solaris/) $L_STLPORT_LIB. $L.$XLIB; } -elsif ($platform =~ m/linux|netbsd|osf1|aix|freebsd/) +elsif ($platform =~ m/linux|netbsd|osf1|aix|freebsd|openbsd/) { $SOLARLIB = $L.$par_dir.$LIB. $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB. $L.'$SOLARVER'.$ds.'$INPATH'.$LIB. - $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB. - $L.'$JAVA_HOME'.$LIB64. + $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB; + if ($platform =~ m/openbsd/) { + $SOLARLIB .= $L.$USR_LOCAL.$LIB; + } + $SOLARLIB .= $L.'$JAVA_HOME'.$LIB64. $L.$JRELIBDIR. $L.$JRETOOLKITDIR. $L.$JRETHREADDIR. - $L_STLPORT_LIB. - $L.$XLIB; + $L_STLPORT_LIB; + + if ( $XLIB ne "/usr/lib" && $XLIB ne "/usr/lib64" ) { + $SOLARLIB .= $L.$XLIB; + } } elsif ($platform =~ m/cygwin|os2/) { $SOLARLIB = $L.'$SOLARVER'.$ds.'$INPATH'.$LIB. @@ -1379,10 +1424,10 @@ $SOLARINC = $I.$cur_dir. $I.'$SOLARENV'.$INC. $I.'$SRC_ROOT'.$ds."res"; -if ($platform =~ m/solaris|linux|osf1|freebsd|netbsd|aix/) +if ($platform =~ m/solaris|linux|osf1|freebsd|netbsd|aix|openbsd/) { $SOLARINC .= $STLPORT_stlport; -if ($platform =~ m/linux|freebsd|netbsd/) +if ($platform =~ m/linux|freebsd|netbsd|openbsd/) { # This simply adds an include path, so even cases that break the FHS work $SOLARINC .= $STLPORT_inc_stlport; @@ -1403,8 +1448,14 @@ if ($platform =~ m/linux/) } - $SOLARINC .= $I.'$SOLARENV'.$INC.$ds."Xp31". - $I.'$JAVA_HOME'.$INCLUDE; + $SOLARINC .= $I.'$SOLARENV'.$INC.$ds."Xp31"; + + # pickup system jpeg over java jpeg on OpenBSD + if ($platform =~ m/openbsd/) + { $SOLARINC .= $I.$USR_LOCAL.$INCLUDE; + } + { $SOLARINC .= $I.'$JAVA_HOME'.$INCLUDE; + } #include system dependent Java include directory if (!($JDK eq "gcj")) @@ -1427,13 +1478,16 @@ if ($platform =~ m/linux/) elsif ( $platform =~ m/aix/ ) { $SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."aix"; } + elsif ($platform =~ m/openbsd/) + { $SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."openbsd"; + } #java threads include path $SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."native_threads".$ds."include"; } #The tail, if needed - if ($platform =~ m/linux|freebsd|netbsd|aix/) + if ($platform =~ m/linux|freebsd|netbsd|aix|openbsd/) { $SOLARINC .= $I.$XINC; } elsif ($platform =~ m/osf1/) diff --git a/setup_native/source/mac/Info.plist.langpack b/setup_native/source/mac/Info.plist.langpack index 3c1eb2c6f369..92933205ff4b 100644 --- a/setup_native/source/mac/Info.plist.langpack +++ b/setup_native/source/mac/Info.plist.langpack @@ -18,7 +18,7 @@ <key>CFBundleShortVersionString</key> <string>9</string> <key>CFBundleIdentifier</key> - <string>org.openoffice.script</string> + <string>org.libreoffice.script</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> diff --git a/setup_native/source/mac/broffice/osxdndinstall.png b/setup_native/source/mac/broffice/osxdndinstall.png Binary files differindex 233d4bbc84b9..966f9f7bcffc 100644 --- a/setup_native/source/mac/broffice/osxdndinstall.png +++ b/setup_native/source/mac/broffice/osxdndinstall.png diff --git a/setup_native/source/mac/broffice/osxdndinstall.svg b/setup_native/source/mac/broffice/osxdndinstall.svg new file mode 100644 index 000000000000..7b7c6c6d72da --- /dev/null +++ b/setup_native/source/mac/broffice/osxdndinstall.svg @@ -0,0 +1,1765 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="550" + height="442" + id="svg3134" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="Installation (OOo3_refresh_mac_install_image).svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <defs + id="defs3136"> + <linearGradient + id="linearGradient7426"> + <stop + id="stop7428" + offset="0" + style="stop-color:#f2f2f2;stop-opacity:1" /> + <stop + id="stop7430" + offset="1" + style="stop-color:#ffffff;stop-opacity:1" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3142" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2570" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2572" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2694" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2696" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2818" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2820" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2942" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2944" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <inkscape:perspective + id="perspective2777" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3076" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3079" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4800" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3742" /> + <inkscape:perspective + id="perspective3744" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2870" /> + <inkscape:perspective + id="perspective2802" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2531" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2854" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective4034" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3939" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3852" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + id="perspective3771" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective59" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3532" /> + <inkscape:perspective + id="perspective2543" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2818" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3379" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3381" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3383" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3385" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3387" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3389" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3391" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3393" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3395" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3397" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3752" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3754" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3819" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3821" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3886" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3888" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3953" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3955" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3092" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3095" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2521" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4715" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4717" /> + <inkscape:perspective + id="perspective4719" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4721" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4723" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4725" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4727" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4729" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4731" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4733" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4735" /> + <inkscape:perspective + id="perspective4737" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4739" /> + <inkscape:perspective + id="perspective4741" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4743" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4211" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="391.03 : 12.41 : 1" + inkscape:persp3d-origin="195.515 : 8.2733332 : 1" + id="perspective3301" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="399.49701 : 12.41 : 1" + inkscape:persp3d-origin="199.7485 : 8.2733332 : 1" + id="perspective3226" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3158" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3146" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2902" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2900" /> + <inkscape:perspective + id="perspective2898" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2896" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2894" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2892" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2890" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2888" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2886" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2884" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2753" /> + <inkscape:perspective + id="perspective2881" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2879" /> + <inkscape:perspective + id="perspective2877" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2875" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="401.944 : 18.512501 : 1" + inkscape:persp3d-origin="200.972 : 12.341667 : 1" + id="perspective2645" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="385.51999 : 18.512501 : 1" + inkscape:persp3d-origin="192.75999 : 12.341667 : 1" + id="perspective2633" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2474" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2426" /> + <inkscape:perspective + id="perspective2869" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2869" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.71518,979.02157)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2922" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.7152,577.0947)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2982" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2985" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3045" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient3048" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.90030045" + inkscape:cx="258.99473" + inkscape:cy="241.49108" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1264" + inkscape:window-height="750" + inkscape:window-x="0" + inkscape:window-y="14" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="0,1" + position="74.144094,396.21835" + id="guide2444" /> + <sodipodi:guide + orientation="1,0" + position="74.504535,396.63219" + id="guide2446" /> + <sodipodi:guide + orientation="0,1" + position="71.833579,326.0027" + id="guide2448" /> + <sodipodi:guide + orientation="1,0" + position="474.05203,326.11834" + id="guide2946" /> + </sodipodi:namedview> + <metadata + id="metadata3139"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Camada 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-150.71429,-577.0765)"> + <g + id="g4297" + style="fill:#800000" + transform="translate(-30.90885,443.41812)" /> + <text + transform="scale(1.0168078,0.98347)" + font-size="103.091" + id="text43" + style="font-size:48.89245605px;font-family:Vegur-Regular" + x="2415.6145" + y="514.5885" /> + <text + transform="scale(0.9979479,1.0020563)" + font-size="103.091" + id="text3748" + style="font-size:91.03964996px;font-family:Vegur-Regular" + x="2310.8984" + y="391.8399" /> + <g + id="g3200" + inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (OOo3_refresh_mac_install_image).png" + inkscape:export-xdpi="89.916817" + inkscape:export-ydpi="89.916817"> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + y="577.07648" + x="150.71429" + height="442" + width="550" + id="rect13743" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <image + xlink:href="data:image/png;base64,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 " + width="550" + height="442" + id="image13745" + x="150.71429" + y="577.07648" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + style="display:inline" /> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2452" + width="550" + height="442" + x="150.71429" + y="577.07648" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <image + style="display:inline" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + y="577.07648" + x="150.71429" + id="image2454" + height="442" + width="550" + xlink:href="data:image/png;base64,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 " /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient3095);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2456" + width="549" + height="40" + x="150.71429" + y="577.07648" /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient3092);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2458" + width="549" + height="40" + x="150.71429" + y="979.07648" /> + <g + transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + id="g2526"> + <path + sodipodi:nodetypes="csccscccc" + id="path2528" + d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2530" + d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z" + id="path2532" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2534" + d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z" + id="path2536" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2538" + d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z" + id="path2540" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2542" + d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z" + id="path2544" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2546" + d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z" + id="path2548" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2550" + d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z" + id="path2552" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2554" + d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z" + id="path2556" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2558" + d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2560" + d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z" + id="path2562" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2564" + d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z" + id="path2566" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2568" + d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2576" + width="550" + height="442" + x="150.71429" + y="577.07648" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <image + style="display:inline" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + y="577.07648" + x="150.71429" + id="image2578" + height="442" + width="550" + xlink:href="data:image/png;base64,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 " /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient3048);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2580" + width="549" + height="40" + x="150.71429" + y="577.07648" /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient3045);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2582" + width="549" + height="40" + x="150.71429" + y="979.07648" /> + <g + transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + id="g2650"> + <path + sodipodi:nodetypes="csccscccc" + id="path2652" + d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2654" + d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z" + id="path2656" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2658" + d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z" + id="path2660" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2662" + d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z" + id="path2664" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2666" + d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z" + id="path2668" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2670" + d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z" + id="path2672" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2674" + d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z" + id="path2676" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2678" + d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z" + id="path2680" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2682" + d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2684" + d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z" + id="path2686" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2688" + d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z" + id="path2690" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2692" + d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2700" + width="550" + height="442" + x="150.71429" + y="577.07648" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <image + style="display:inline" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + y="577.07648" + x="150.71429" + id="image2702" + height="442" + width="550" + xlink:href="data:image/png;base64,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 " /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient2985);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2704" + width="549" + height="40" + x="150.71429" + y="577.07648" /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient2982);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2706" + width="549" + height="40" + x="150.71429" + y="979.07648" /> + <g + transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + id="g2774"> + <path + sodipodi:nodetypes="csccscccc" + id="path2776" + d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2778" + d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z" + id="path2780" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2782" + d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z" + id="path2784" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2786" + d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z" + id="path2788" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2790" + d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z" + id="path2792" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2794" + d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z" + id="path2796" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2798" + d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z" + id="path2800" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2802" + d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z" + id="path2804" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2806" + d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2808" + d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z" + id="path2810" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2812" + d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z" + id="path2814" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path2816" + d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2824" + width="550" + height="442" + x="149.20457" + y="577.1496" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <image + style="display:inline" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + y="577.07648" + x="150.71429" + id="image2826" + height="442" + width="550" + xlink:href="data:image/png;base64,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 " /> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + style="fill:url(#linearGradient2922);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2828" + width="549" + height="40" + x="151.21429" + y="577.1496" /> + <rect + y="979.07648" + x="151.21429" + height="40" + width="549" + id="rect13863" + style="fill:url(#linearGradient2869);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <g + transform="translate(1.7025045e-5,8.7443773e-5)" + id="g3133"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 594.45679,1001.077 C 593.77761,1001.0599 593.10851,1001.4846 592.84303,1002.1014 C 592.57754,1002.7181 592.73251,1003.488 593.2168,1003.958 L 607.79343,1018.5807 C 608.26355,1019.0516 609.02902,1019.2077 609.64987,1018.9592 C 610.27074,1018.7108 610.70962,1018.0727 610.71427,1017.412 L 610.71427,1002.7621 C 610.71607,1001.8794 609.90077,1001.0754 609.00586,1001.077 L 594.45679,1001.077 L 594.45679,1001.077 z" + id="path13935" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,911.07691 C 683.77762,911.05981 683.10851,911.48452 682.84304,912.10129 C 682.57755,912.71806 682.73251,913.48792 683.21681,913.9579 L 697.79344,928.58065 C 698.26355,929.05153 699.02902,929.20768 699.64988,928.95919 C 700.27074,928.71079 700.70963,928.07269 700.71427,927.41191 L 700.71427,912.76207 C 700.71607,911.87935 699.90078,911.07538 699.00587,911.07691 L 684.45679,911.07691 L 684.45679,911.07691 z" + id="path13937" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13939" + d="M 684.45679,1001.0769 C 683.77762,1001.0598 683.10851,1001.4845 682.84304,1002.1013 C 682.57755,1002.718 682.73251,1003.4879 683.21681,1003.9579 L 697.79344,1018.5806 C 698.26355,1019.0515 699.02902,1019.2076 699.64988,1018.9592 C 700.27074,1018.7108 700.70963,1018.0727 700.71427,1017.4119 L 700.71427,1002.762 C 700.71607,1001.8793 699.90078,1001.0754 699.00587,1001.0769 L 684.45679,1001.0769 L 684.45679,1001.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 666.4568,1001.0769 C 665.77762,1001.0598 665.10852,1001.4845 664.84305,1002.1013 C 664.57756,1002.718 664.73252,1003.4879 665.21682,1003.9579 L 679.79345,1018.5806 C 680.26356,1019.0515 681.02903,1019.2076 681.64988,1018.9592 C 682.27075,1018.7108 682.70963,1018.0727 682.71428,1017.4119 L 682.71428,1002.762 C 682.71608,1001.8793 681.90079,1001.0754 681.00587,1001.0769 L 666.4568,1001.0769 L 666.4568,1001.0769 z" + id="path13941" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13943" + d="M 648.45681,1001.0769 C 647.77763,1001.0598 647.10853,1001.4845 646.84305,1002.1013 C 646.57756,1002.718 646.73252,1003.4879 647.21682,1003.9579 L 661.79345,1018.5806 C 662.26357,1019.0515 663.02903,1019.2076 663.64989,1018.9592 C 664.27075,1018.7108 664.70964,1018.0727 664.71428,1017.4119 L 664.71428,1002.762 C 664.71608,1001.8793 663.90079,1001.0754 663.00588,1001.0769 L 648.45681,1001.0769 L 648.45681,1001.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 630.45681,1001.0769 C 629.77764,1001.0598 629.10853,1001.4845 628.84306,1002.1013 C 628.57757,1002.718 628.73253,1003.4879 629.21683,1003.9579 L 643.79346,1018.5806 C 644.26357,1019.0515 645.02904,1019.2076 645.6499,1018.9592 C 646.27076,1018.7108 646.70965,1018.0727 646.71429,1017.4119 L 646.71429,1002.762 C 646.71609,1001.8793 645.9008,1001.0754 645.00588,1001.0769 L 630.45681,1001.0769 L 630.45681,1001.0769 z" + id="path13945" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13947" + d="M 612.45682,1001.0769 C 611.77764,1001.0598 611.10854,1001.4845 610.84306,1002.1013 C 610.57757,1002.718 610.73254,1003.4879 611.21683,1003.9579 L 625.79346,1018.5806 C 626.26358,1019.0515 627.02905,1019.2076 627.6499,1018.9592 C 628.27077,1018.7108 628.70965,1018.0727 628.7143,1017.4119 L 628.7143,1002.762 C 628.7161,1001.8793 627.9008,1001.0754 627.00589,1001.0769 L 612.45682,1001.0769 L 612.45682,1001.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,983.07689 C 683.77762,983.05979 683.10851,983.4845 682.84304,984.10127 C 682.57755,984.71804 682.73251,985.4879 683.21681,985.95788 L 697.79344,1000.5806 C 698.26355,1001.0515 699.02902,1001.2077 699.64988,1000.9592 C 700.27074,1000.7108 700.70963,1000.0727 700.71427,999.41189 L 700.71427,984.76205 C 700.71607,983.87933 699.90078,983.07536 699.00587,983.07689 L 684.45679,983.07689 L 684.45679,983.07689 z" + id="path13949" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13951" + d="M 666.4568,983.07689 C 665.77762,983.05979 665.10852,983.4845 664.84305,984.10127 C 664.57756,984.71804 664.73252,985.4879 665.21682,985.95788 L 679.79345,1000.5806 C 680.26356,1001.0515 681.02903,1001.2077 681.64988,1000.9592 C 682.27075,1000.7108 682.70963,1000.0727 682.71428,999.41189 L 682.71428,984.76205 C 682.71608,983.87933 681.90079,983.07536 681.00587,983.07689 L 666.4568,983.07689 L 666.4568,983.07689 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 648.45681,983.07689 C 647.77763,983.05979 647.10853,983.4845 646.84305,984.10127 C 646.57756,984.71804 646.73252,985.4879 647.21682,985.95788 L 661.79345,1000.5806 C 662.26357,1001.0515 663.02903,1001.2077 663.64989,1000.9592 C 664.27075,1000.7108 664.70964,1000.0727 664.71428,999.41189 L 664.71428,984.76205 C 664.71608,983.87933 663.90079,983.07536 663.00588,983.07689 L 648.45681,983.07689 L 648.45681,983.07689 z" + id="path13953" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13955" + d="M 630.45681,983.07689 C 629.77764,983.05979 629.10853,983.4845 628.84306,984.10127 C 628.57757,984.71804 628.73253,985.4879 629.21683,985.95788 L 643.79346,1000.5806 C 644.26357,1001.0515 645.02904,1001.2077 645.6499,1000.9592 C 646.27076,1000.7108 646.70965,1000.0727 646.71429,999.41189 L 646.71429,984.76205 C 646.71609,983.87933 645.9008,983.07536 645.00588,983.07689 L 630.45681,983.07689 L 630.45681,983.07689 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 612.45682,983.07689 C 611.77764,983.05979 611.10854,983.4845 610.84306,984.10127 C 610.57757,984.71804 610.73254,985.4879 611.21683,985.95788 L 625.79346,1000.5806 C 626.26358,1001.0515 627.02905,1001.2077 627.6499,1000.9592 C 628.27077,1000.7108 628.70965,1000.0727 628.7143,999.41189 L 628.7143,984.76205 C 628.7161,983.87933 627.9008,983.07536 627.00589,983.07689 L 612.45682,983.07689 L 612.45682,983.07689 z" + id="path13957" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13959" + d="M 684.45679,965.0769 C 683.77762,965.0598 683.10851,965.48451 682.84304,966.10128 C 682.57755,966.71805 682.73251,967.48791 683.21681,967.95789 L 697.79344,982.58063 C 698.26355,983.05151 699.02902,983.20766 699.64988,982.95917 C 700.27074,982.71077 700.70963,982.07267 700.71427,981.41189 L 700.71427,966.76206 C 700.71607,965.87934 699.90078,965.07537 699.00587,965.0769 L 684.45679,965.0769 L 684.45679,965.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 666.4568,965.0769 C 665.77762,965.0598 665.10852,965.48451 664.84305,966.10128 C 664.57756,966.71805 664.73252,967.48791 665.21682,967.95789 L 679.79345,982.58063 C 680.26356,983.05151 681.02903,983.20766 681.64988,982.95917 C 682.27075,982.71077 682.70963,982.07267 682.71428,981.41189 L 682.71428,966.76206 C 682.71608,965.87934 681.90079,965.07537 681.00587,965.0769 L 666.4568,965.0769 z" + id="path13961" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13963" + d="M 648.45681,965.0769 C 647.77763,965.0598 647.10853,965.48451 646.84305,966.10128 C 646.57756,966.71805 646.73252,967.48791 647.21682,967.95789 L 661.79345,982.58063 C 662.26357,983.05151 663.02903,983.20766 663.64989,982.95917 C 664.27075,982.71077 664.70964,982.07267 664.71428,981.41189 L 664.71428,966.76206 C 664.71608,965.87934 663.90079,965.07537 663.00588,965.0769 L 648.45681,965.0769 L 648.45681,965.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 630.45681,965.0769 C 629.77764,965.0598 629.10853,965.48451 628.84306,966.10128 C 628.57757,966.71805 628.73253,967.48791 629.21683,967.95789 L 643.79346,982.58063 C 644.26357,983.05151 645.02904,983.20766 645.6499,982.95917 C 646.27076,982.71077 646.70965,982.07267 646.71429,981.41189 L 646.71429,966.76206 C 646.71609,965.87934 645.9008,965.07537 645.00588,965.0769 L 630.45681,965.0769 L 630.45681,965.0769 z" + id="path13965" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,947.0769 C 683.77762,947.0598 683.10851,947.48451 682.84304,948.10128 C 682.57755,948.71805 682.73251,949.48791 683.21681,949.95789 L 697.79344,964.58064 C 698.26355,965.05152 699.02902,965.20767 699.64988,964.95918 C 700.27074,964.71078 700.70963,964.07268 700.71427,963.4119 L 700.71427,948.76206 C 700.71607,947.87934 699.90078,947.07537 699.00587,947.0769 L 684.45679,947.0769 L 684.45679,947.0769 z" + id="path13967" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13969" + d="M 666.4568,947.0769 C 665.77762,947.0598 665.10852,947.48451 664.84305,948.10128 C 664.57756,948.71805 664.73252,949.48791 665.21682,949.95789 L 679.79345,964.58064 C 680.26356,965.05152 681.02903,965.20767 681.64988,964.95918 C 682.27075,964.71078 682.70963,964.07268 682.71428,963.4119 L 682.71428,948.76206 C 682.71608,947.87934 681.90079,947.07537 681.00587,947.0769 L 666.4568,947.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 648.45681,947.0769 C 647.77763,947.0598 647.10853,947.48451 646.84305,948.10128 C 646.57756,948.71805 646.73252,949.48791 647.21682,949.95789 L 661.79345,964.58064 C 662.26357,965.05152 663.02903,965.20767 663.64989,964.95918 C 664.27075,964.71078 664.70964,964.07268 664.71428,963.4119 L 664.71428,948.76206 C 664.71608,947.87934 663.90079,947.07537 663.00588,947.0769 L 648.45681,947.0769 L 648.45681,947.0769 z" + id="path13971" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path13973" + d="M 684.45679,929.07691 C 683.77762,929.05981 683.10851,929.48452 682.84304,930.10129 C 682.57755,930.71806 682.73251,931.48792 683.21681,931.9579 L 697.79344,946.58064 C 698.26355,947.05152 699.02902,947.20767 699.64988,946.95918 C 700.27074,946.71078 700.70963,946.07268 700.71427,945.4119 L 700.71427,930.76207 C 700.71607,929.87935 699.90078,929.07538 699.00587,929.07691 L 684.45679,929.07691 L 684.45679,929.07691 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 666.4568,929.07691 C 665.77762,929.05981 665.10852,929.48452 664.84305,930.10129 C 664.57756,930.71806 664.73252,931.48792 665.21682,931.9579 L 679.79345,946.58064 C 680.26356,947.05152 681.02903,947.20767 681.64988,946.95918 C 682.27075,946.71078 682.70963,946.07268 682.71428,945.4119 L 682.71428,930.76207 C 682.71608,929.87935 681.90079,929.07538 681.00587,929.07691 L 666.4568,929.07691 z" + id="path13975" + sodipodi:nodetypes="csccscccc" /> + </g> + <g + transform="matrix(0.5346023,0,0,0.5346023,226.78329,489.97176)" + id="g4513"> + <g + id="g3252" + transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)" + style="fill:#000000"> + <path + id="path3254" + d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z" + style="fill:#000000" /> + <path + id="path3256" + d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z" + style="fill:#000000" /> + <path + id="path3258" + d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z" + style="fill:#000000" /> + <path + id="path3260" + d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z" + style="fill:#000000" /> + <path + id="path3262" + d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z" + style="fill:#000000" /> + <path + id="path3264" + d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z" + style="fill:#000000" /> + <path + id="path3266" + d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z" + style="fill:#000000" /> + <path + id="path3268" + d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z" + style="fill:#000000" /> + <path + id="path3270" + d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z" + style="fill:#000000" /> + <path + id="path3272" + d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z" + style="fill:#000000" /> + <path + id="path3274" + d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z" + style="fill:#000000" /> + <path + id="path3276" + d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z" + style="fill:#000000" /> + <path + id="path3278" + d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z" + style="fill:#000000" /> + <path + id="path3280" + d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z" + style="fill:#000000" /> + <path + id="path3282" + d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z" + style="fill:#000000" /> + <path + id="path3284" + d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z" + style="fill:#000000" /> + <path + id="path3286" + d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z" + style="fill:#000000" /> + <path + id="path3288" + d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z" + style="fill:#000000" /> + <path + id="path3290" + d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z" + style="fill:#000000" /> + <path + id="path3292" + d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z" + style="fill:#000000" /> + <path + id="path3294" + d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z" + style="fill:#000000" /> + </g> + <g + id="g2496" + transform="translate(0,-8.52e-3)" + style="fill:#000000"> + <path + id="path2451" + d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2453" + d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2455" + d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z" + style="fill:#000000" /> + <path + id="path2457" + d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z" + style="fill:#000000" /> + <path + id="path2459" + d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z" + style="fill:#000000" /> + <path + id="path2461" + d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z" + style="fill:#000000" /> + <path + id="path2463" + d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z" + style="fill:#000000" /> + <path + id="path2465" + d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z" + style="fill:#000000" /> + <path + id="path2467" + d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z" + style="fill:#18a303;fill-opacity:1" /> + </g> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + sodipodi:nodetypes="csccscccc" + id="path3908" + d="M 156.43842,248.57158 C 155.16781,248.53958 153.91607,249.33412 153.41943,250.48796 C 152.92276,251.64181 153.21267,253.08203 154.11868,253.96126 L 181.38831,281.31717 C 182.26779,282.19808 183.6998,282.49021 184.8613,282.02534 C 186.0228,281.56063 186.84384,280.36689 186.85253,279.13071 L 186.85253,251.72414 C 186.85591,250.07277 185.33067,248.56872 183.65649,248.57158 L 156.43842,248.57158 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + id="path3910" + d="M 81.45645,248.57056 C 79.689041,248.59615 78.270622,250.0379 78.273691,251.80545 L 78.273691,376.66337 C 78.27071,378.43092 79.689112,379.87251 81.45645,379.89809 L 183.61756,379.89809 C 184.4759,379.89944 185.29952,379.55917 185.90647,378.95219 C 186.51345,378.34539 186.85385,377.52172 186.85248,376.66337 L 186.85248,296.25966 C 186.85748,295.39997 186.51946,294.5736 185.91332,293.96395 L 141.72003,249.56192 C 141.11895,248.9366 140.2916,248.57931 139.42427,248.57056 L 81.45645,248.57056 L 81.45645,248.57056 z M 84.691391,255.04034 L 138.06768,255.04034 L 180.38263,297.5642 L 180.38263,373.42832 L 84.691391,373.42832 L 84.691391,255.04034 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + <g + id="g3156" + transform="matrix(-1,0,0,-1,851.42856,1596.1529)"> + <path + sodipodi:nodetypes="csccscccc" + id="path3158" + d="M 594.45679,1001.077 C 593.77761,1001.0599 593.10851,1001.4846 592.84303,1002.1014 C 592.57754,1002.7181 592.73251,1003.488 593.2168,1003.958 L 607.79343,1018.5807 C 608.26355,1019.0516 609.02902,1019.2077 609.64987,1018.9592 C 610.27074,1018.7108 610.70962,1018.0727 610.71427,1017.412 L 610.71427,1002.7621 C 610.71607,1001.8794 609.90077,1001.0754 609.00586,1001.077 L 594.45679,1001.077 L 594.45679,1001.077 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3160" + d="M 684.45679,911.07691 C 683.77762,911.05981 683.10851,911.48452 682.84304,912.10129 C 682.57755,912.71806 682.73251,913.48792 683.21681,913.9579 L 697.79344,928.58065 C 698.26355,929.05153 699.02902,929.20768 699.64988,928.95919 C 700.27074,928.71079 700.70963,928.07269 700.71427,927.41191 L 700.71427,912.76207 C 700.71607,911.87935 699.90078,911.07538 699.00587,911.07691 L 684.45679,911.07691 L 684.45679,911.07691 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,1001.0769 C 683.77762,1001.0598 683.10851,1001.4845 682.84304,1002.1013 C 682.57755,1002.718 682.73251,1003.4879 683.21681,1003.9579 L 697.79344,1018.5806 C 698.26355,1019.0515 699.02902,1019.2076 699.64988,1018.9592 C 700.27074,1018.7108 700.70963,1018.0727 700.71427,1017.4119 L 700.71427,1002.762 C 700.71607,1001.8793 699.90078,1001.0754 699.00587,1001.0769 L 684.45679,1001.0769 L 684.45679,1001.0769 z" + id="path3162" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3164" + d="M 666.4568,1001.0769 C 665.77762,1001.0598 665.10852,1001.4845 664.84305,1002.1013 C 664.57756,1002.718 664.73252,1003.4879 665.21682,1003.9579 L 679.79345,1018.5806 C 680.26356,1019.0515 681.02903,1019.2076 681.64988,1018.9592 C 682.27075,1018.7108 682.70963,1018.0727 682.71428,1017.4119 L 682.71428,1002.762 C 682.71608,1001.8793 681.90079,1001.0754 681.00587,1001.0769 L 666.4568,1001.0769 L 666.4568,1001.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 648.45681,1001.0769 C 647.77763,1001.0598 647.10853,1001.4845 646.84305,1002.1013 C 646.57756,1002.718 646.73252,1003.4879 647.21682,1003.9579 L 661.79345,1018.5806 C 662.26357,1019.0515 663.02903,1019.2076 663.64989,1018.9592 C 664.27075,1018.7108 664.70964,1018.0727 664.71428,1017.4119 L 664.71428,1002.762 C 664.71608,1001.8793 663.90079,1001.0754 663.00588,1001.0769 L 648.45681,1001.0769 L 648.45681,1001.0769 z" + id="path3166" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3168" + d="M 630.45681,1001.0769 C 629.77764,1001.0598 629.10853,1001.4845 628.84306,1002.1013 C 628.57757,1002.718 628.73253,1003.4879 629.21683,1003.9579 L 643.79346,1018.5806 C 644.26357,1019.0515 645.02904,1019.2076 645.6499,1018.9592 C 646.27076,1018.7108 646.70965,1018.0727 646.71429,1017.4119 L 646.71429,1002.762 C 646.71609,1001.8793 645.9008,1001.0754 645.00588,1001.0769 L 630.45681,1001.0769 L 630.45681,1001.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 612.45682,1001.0769 C 611.77764,1001.0598 611.10854,1001.4845 610.84306,1002.1013 C 610.57757,1002.718 610.73254,1003.4879 611.21683,1003.9579 L 625.79346,1018.5806 C 626.26358,1019.0515 627.02905,1019.2076 627.6499,1018.9592 C 628.27077,1018.7108 628.70965,1018.0727 628.7143,1017.4119 L 628.7143,1002.762 C 628.7161,1001.8793 627.9008,1001.0754 627.00589,1001.0769 L 612.45682,1001.0769 L 612.45682,1001.0769 z" + id="path3170" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3172" + d="M 684.45679,983.07689 C 683.77762,983.05979 683.10851,983.4845 682.84304,984.10127 C 682.57755,984.71804 682.73251,985.4879 683.21681,985.95788 L 697.79344,1000.5806 C 698.26355,1001.0515 699.02902,1001.2077 699.64988,1000.9592 C 700.27074,1000.7108 700.70963,1000.0727 700.71427,999.41189 L 700.71427,984.76205 C 700.71607,983.87933 699.90078,983.07536 699.00587,983.07689 L 684.45679,983.07689 L 684.45679,983.07689 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 666.4568,983.07689 C 665.77762,983.05979 665.10852,983.4845 664.84305,984.10127 C 664.57756,984.71804 664.73252,985.4879 665.21682,985.95788 L 679.79345,1000.5806 C 680.26356,1001.0515 681.02903,1001.2077 681.64988,1000.9592 C 682.27075,1000.7108 682.70963,1000.0727 682.71428,999.41189 L 682.71428,984.76205 C 682.71608,983.87933 681.90079,983.07536 681.00587,983.07689 L 666.4568,983.07689 L 666.4568,983.07689 z" + id="path3174" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3176" + d="M 648.45681,983.07689 C 647.77763,983.05979 647.10853,983.4845 646.84305,984.10127 C 646.57756,984.71804 646.73252,985.4879 647.21682,985.95788 L 661.79345,1000.5806 C 662.26357,1001.0515 663.02903,1001.2077 663.64989,1000.9592 C 664.27075,1000.7108 664.70964,1000.0727 664.71428,999.41189 L 664.71428,984.76205 C 664.71608,983.87933 663.90079,983.07536 663.00588,983.07689 L 648.45681,983.07689 L 648.45681,983.07689 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 630.45681,983.07689 C 629.77764,983.05979 629.10853,983.4845 628.84306,984.10127 C 628.57757,984.71804 628.73253,985.4879 629.21683,985.95788 L 643.79346,1000.5806 C 644.26357,1001.0515 645.02904,1001.2077 645.6499,1000.9592 C 646.27076,1000.7108 646.70965,1000.0727 646.71429,999.41189 L 646.71429,984.76205 C 646.71609,983.87933 645.9008,983.07536 645.00588,983.07689 L 630.45681,983.07689 L 630.45681,983.07689 z" + id="path3178" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3180" + d="M 612.45682,983.07689 C 611.77764,983.05979 611.10854,983.4845 610.84306,984.10127 C 610.57757,984.71804 610.73254,985.4879 611.21683,985.95788 L 625.79346,1000.5806 C 626.26358,1001.0515 627.02905,1001.2077 627.6499,1000.9592 C 628.27077,1000.7108 628.70965,1000.0727 628.7143,999.41189 L 628.7143,984.76205 C 628.7161,983.87933 627.9008,983.07536 627.00589,983.07689 L 612.45682,983.07689 L 612.45682,983.07689 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,965.0769 C 683.77762,965.0598 683.10851,965.48451 682.84304,966.10128 C 682.57755,966.71805 682.73251,967.48791 683.21681,967.95789 L 697.79344,982.58063 C 698.26355,983.05151 699.02902,983.20766 699.64988,982.95917 C 700.27074,982.71077 700.70963,982.07267 700.71427,981.41189 L 700.71427,966.76206 C 700.71607,965.87934 699.90078,965.07537 699.00587,965.0769 L 684.45679,965.0769 L 684.45679,965.0769 z" + id="path3182" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3184" + d="M 666.4568,965.0769 C 665.77762,965.0598 665.10852,965.48451 664.84305,966.10128 C 664.57756,966.71805 664.73252,967.48791 665.21682,967.95789 L 679.79345,982.58063 C 680.26356,983.05151 681.02903,983.20766 681.64988,982.95917 C 682.27075,982.71077 682.70963,982.07267 682.71428,981.41189 L 682.71428,966.76206 C 682.71608,965.87934 681.90079,965.07537 681.00587,965.0769 L 666.4568,965.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 648.45681,965.0769 C 647.77763,965.0598 647.10853,965.48451 646.84305,966.10128 C 646.57756,966.71805 646.73252,967.48791 647.21682,967.95789 L 661.79345,982.58063 C 662.26357,983.05151 663.02903,983.20766 663.64989,982.95917 C 664.27075,982.71077 664.70964,982.07267 664.71428,981.41189 L 664.71428,966.76206 C 664.71608,965.87934 663.90079,965.07537 663.00588,965.0769 L 648.45681,965.0769 L 648.45681,965.0769 z" + id="path3186" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3188" + d="M 630.45681,965.0769 C 629.77764,965.0598 629.10853,965.48451 628.84306,966.10128 C 628.57757,966.71805 628.73253,967.48791 629.21683,967.95789 L 643.79346,982.58063 C 644.26357,983.05151 645.02904,983.20766 645.6499,982.95917 C 646.27076,982.71077 646.70965,982.07267 646.71429,981.41189 L 646.71429,966.76206 C 646.71609,965.87934 645.9008,965.07537 645.00588,965.0769 L 630.45681,965.0769 L 630.45681,965.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3190" + d="M 684.45679,947.0769 C 683.77762,947.0598 683.10851,947.48451 682.84304,948.10128 C 682.57755,948.71805 682.73251,949.48791 683.21681,949.95789 L 697.79344,964.58064 C 698.26355,965.05152 699.02902,965.20767 699.64988,964.95918 C 700.27074,964.71078 700.70963,964.07268 700.71427,963.4119 L 700.71427,948.76206 C 700.71607,947.87934 699.90078,947.07537 699.00587,947.0769 L 684.45679,947.0769 L 684.45679,947.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 666.4568,947.0769 C 665.77762,947.0598 665.10852,947.48451 664.84305,948.10128 C 664.57756,948.71805 664.73252,949.48791 665.21682,949.95789 L 679.79345,964.58064 C 680.26356,965.05152 681.02903,965.20767 681.64988,964.95918 C 682.27075,964.71078 682.70963,964.07268 682.71428,963.4119 L 682.71428,948.76206 C 682.71608,947.87934 681.90079,947.07537 681.00587,947.0769 L 666.4568,947.0769 z" + id="path3192" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3194" + d="M 648.45681,947.0769 C 647.77763,947.0598 647.10853,947.48451 646.84305,948.10128 C 646.57756,948.71805 646.73252,949.48791 647.21682,949.95789 L 661.79345,964.58064 C 662.26357,965.05152 663.02903,965.20767 663.64989,964.95918 C 664.27075,964.71078 664.70964,964.07268 664.71428,963.4119 L 664.71428,948.76206 C 664.71608,947.87934 663.90079,947.07537 663.00588,947.0769 L 648.45681,947.0769 L 648.45681,947.0769 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 684.45679,929.07691 C 683.77762,929.05981 683.10851,929.48452 682.84304,930.10129 C 682.57755,930.71806 682.73251,931.48792 683.21681,931.9579 L 697.79344,946.58064 C 698.26355,947.05152 699.02902,947.20767 699.64988,946.95918 C 700.27074,946.71078 700.70963,946.07268 700.71427,945.4119 L 700.71427,930.76207 C 700.71607,929.87935 699.90078,929.07538 699.00587,929.07691 L 684.45679,929.07691 L 684.45679,929.07691 z" + id="path3196" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path3198" + d="M 666.4568,929.07691 C 665.77762,929.05981 665.10852,929.48452 664.84305,930.10129 C 664.57756,930.71806 664.73252,931.48792 665.21682,931.9579 L 679.79345,946.58064 C 680.26356,947.05152 681.02903,947.20767 681.64988,946.95918 C 682.27075,946.71078 682.70963,946.07268 682.71428,945.4119 L 682.71428,930.76207 C 682.71608,929.87935 681.90079,929.07538 681.00587,929.07691 L 666.4568,929.07691 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + </g> + </g> + </g> +</svg> diff --git a/setup_native/source/mac/broffice/osxdndinstall_nologo.png b/setup_native/source/mac/broffice/osxdndinstall_nologo.png Binary files differindex 8c5636ec05ca..966f9f7bcffc 100644 --- a/setup_native/source/mac/broffice/osxdndinstall_nologo.png +++ b/setup_native/source/mac/broffice/osxdndinstall_nologo.png diff --git a/setup_native/source/win32/nsis/brobanner.bmp b/setup_native/source/win32/nsis/brobanner.bmp Binary files differindex 7ab14d2a6245..0a2961accbda 100644 --- a/setup_native/source/win32/nsis/brobanner.bmp +++ b/setup_native/source/win32/nsis/brobanner.bmp diff --git a/setup_native/source/win32/nsis/brobanner.svg b/setup_native/source/win32/nsis/brobanner.svg new file mode 100644 index 000000000000..041386d7cea9 --- /dev/null +++ b/setup_native/source/win32/nsis/brobanner.svg @@ -0,0 +1,667 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="103" + height="58" + id="svg3229" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="Installation (banner_OOorg_standard).svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <defs + id="defs3231"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3237" /> + <inkscape:perspective + id="perspective2777" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4800" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3742" /> + <inkscape:perspective + id="perspective3744" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2870" /> + <inkscape:perspective + id="perspective2500" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2531" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2854" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective4034" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3939" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3852" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + id="perspective3771" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective59" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3532" /> + <inkscape:perspective + id="perspective2543" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2818" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2521" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4715" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4717" /> + <inkscape:perspective + id="perspective4719" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4721" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4723" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4725" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4727" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4729" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4731" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4733" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4735" /> + <inkscape:perspective + id="perspective4737" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4739" /> + <inkscape:perspective + id="perspective4741" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4743" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4211" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="391.03 : 12.41 : 1" + inkscape:persp3d-origin="195.515 : 8.2733332 : 1" + id="perspective3301" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="399.49701 : 12.41 : 1" + inkscape:persp3d-origin="199.7485 : 8.2733332 : 1" + id="perspective3226" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3158" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3146" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2625" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2623" /> + <inkscape:perspective + id="perspective2621" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2619" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2617" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2615" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2613" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2611" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2609" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2607" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2753" /> + <inkscape:perspective + id="perspective2604" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2602" /> + <inkscape:perspective + id="perspective2600" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2598" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="401.944 : 18.512501 : 1" + inkscape:persp3d-origin="200.972 : 12.341667 : 1" + id="perspective2645" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="385.51999 : 18.512501 : 1" + inkscape:persp3d-origin="192.75999 : 12.341667 : 1" + id="perspective2633" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2474" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2426" /> + <inkscape:perspective + id="perspective2592" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.8135634" + inkscape:cx="47.884284" + inkscape:cy="27.859947" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1264" + inkscape:window-height="750" + inkscape:window-x="0" + inkscape:window-y="14" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="0,1" + position="6.203125,39.566406" + id="guide2462" /> + <sodipodi:guide + orientation="1,0" + position="6.4960938,39.835938" + id="guide2464" /> + <sodipodi:guide + orientation="0,1" + position="7.8046875,17.640625" + id="guide2466" /> + <sodipodi:guide + orientation="1,0" + position="98.285156,17.5" + id="guide2468" /> + </sodipodi:namedview> + <metadata + id="metadata3234"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Camada 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-565.64286,-466.2193)"> + <text + transform="scale(1.0168078,0.98347)" + font-size="103.091" + id="text43" + style="font-size:48.89245605px;font-family:Vegur-Regular" + x="1429.27" + y="552.60571" /> + <text + transform="scale(0.9979479,1.0020563)" + font-size="103.091" + id="text3748" + style="font-size:91.03964996px;font-family:Vegur-Regular" + x="1305.9132" + y="429.15198" /> + <g + id="g2905" + inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (banner_OOorg_standard).png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/banner_OOorg_standard.bmp.png" + y="466.2193" + x="565.64288" + height="58" + width="103" + id="rect12423" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <g + transform="matrix(0.1694148,0,0,0.1694148,607.63264,451.4171)" + id="g2870"> + <g + id="g4513" + transform="translate(-397.1353,-52.392239)"> + <g + style="fill:#000000" + transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)" + id="g3252"> + <path + style="fill:#000000" + d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z" + id="path3254" /> + <path + style="fill:#000000" + d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z" + id="path3256" /> + <path + style="fill:#000000" + d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z" + id="path3258" /> + <path + style="fill:#000000" + d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z" + id="path3260" /> + <path + style="fill:#000000" + d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z" + id="path3262" /> + <path + style="fill:#000000" + d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z" + id="path3264" /> + <path + style="fill:#000000" + d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z" + id="path3266" /> + <path + style="fill:#000000" + d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z" + id="path3268" /> + <path + style="fill:#000000" + d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z" + id="path3270" /> + <path + style="fill:#000000" + d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z" + id="path3272" /> + <path + style="fill:#000000" + d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z" + id="path3274" /> + <path + style="fill:#000000" + d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z" + id="path3276" /> + <path + style="fill:#000000" + d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z" + id="path3278" /> + <path + style="fill:#000000" + d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z" + id="path3280" /> + <path + style="fill:#000000" + d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z" + id="path3282" /> + <path + style="fill:#000000" + d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z" + id="path3284" /> + <path + style="fill:#000000" + d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z" + id="path3286" /> + <path + style="fill:#000000" + d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z" + id="path3288" /> + <path + style="fill:#000000" + d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z" + id="path3290" /> + <path + style="fill:#000000" + d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z" + id="path3292" /> + <path + style="fill:#000000" + d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z" + id="path3294" /> + </g> + <g + style="fill:#000000" + transform="translate(0,-8.52e-3)" + id="g2496"> + <path + style="fill:#18a303;fill-opacity:1" + d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z" + id="path2451" /> + <path + style="fill:#18a303;fill-opacity:1" + d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z" + id="path2453" /> + <path + style="fill:#000000" + d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z" + id="path2455" /> + <path + style="fill:#000000" + d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z" + id="path2457" /> + <path + style="fill:#000000" + d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z" + id="path2459" /> + <path + style="fill:#000000" + d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z" + id="path2461" /> + <path + style="fill:#000000" + d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z" + id="path2463" /> + <path + style="fill:#000000" + d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z" + id="path2465" /> + <path + style="fill:#18a303;fill-opacity:1" + d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z" + id="path2467" /> + </g> + </g> + </g> + </g> + <g + id="g4297" + style="fill:#800000" + transform="translate(-1144.4568,291.80656)" /> + <text + transform="scale(1.0168078,0.98347)" + font-size="103.091" + id="text2722" + style="font-size:48.89245605px;font-family:Vegur-Regular" + x="1320.4735" + y="360.42868" /> + <text + transform="scale(0.9979479,1.0020563)" + font-size="103.091" + id="text2724" + style="font-size:91.03964996px;font-family:Vegur-Regular" + x="1195.0607" + y="240.53946" /> + </g> +</svg> diff --git a/setup_native/source/win32/nsis/brobitmap.bmp b/setup_native/source/win32/nsis/brobitmap.bmp Binary files differindex f9e9e9b2d44b..680c643bff56 100644 --- a/setup_native/source/win32/nsis/brobitmap.bmp +++ b/setup_native/source/win32/nsis/brobitmap.bmp diff --git a/setup_native/source/win32/nsis/brobitmap.svg b/setup_native/source/win32/nsis/brobitmap.svg new file mode 100644 index 000000000000..084b5cea73fe --- /dev/null +++ b/setup_native/source/win32/nsis/brobitmap.svg @@ -0,0 +1,1011 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="163" + height="312.00006" + id="svg3270" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="Installation (install_OOorg3_standard).svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <defs + id="defs3272"> + <linearGradient + id="linearGradient7426"> + <stop + id="stop7428" + offset="0" + style="stop-color:#f2f2f2;stop-opacity:1" /> + <stop + id="stop7430" + offset="1" + style="stop-color:#ffffff;stop-opacity:1" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3278" /> + <inkscape:perspective + id="perspective2777" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2551" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2576" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2648" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2650" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2687" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2712" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4800" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3742" /> + <inkscape:perspective + id="perspective3744" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2870" /> + <inkscape:perspective + id="perspective2558" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2531" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2854" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective4034" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3939" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective3852" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + id="perspective3771" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + id="perspective59" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3532" /> + <inkscape:perspective + id="perspective2543" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2818" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2557" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)" + x1="286.08203" + y1="-1.6191231" + x2="286.08203" + y2="357.27634" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7426" + id="linearGradient2582" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)" + x1="275.5" + y1="369.22446" + x2="275.5" + y2="-3.224514" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2521" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4715" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4717" /> + <inkscape:perspective + id="perspective4719" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4721" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4723" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4725" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4727" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4729" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4731" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4733" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4735" /> + <inkscape:perspective + id="perspective4737" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4739" /> + <inkscape:perspective + id="perspective4741" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4743" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective4211" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="391.03 : 12.41 : 1" + inkscape:persp3d-origin="195.515 : 8.2733332 : 1" + id="perspective3301" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 12.41 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="399.49701 : 12.41 : 1" + inkscape:persp3d-origin="199.7485 : 8.2733332 : 1" + id="perspective3226" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3158" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="393.207 : 18.512501 : 1" + inkscape:persp3d-origin="196.6035 : 12.341667 : 1" + id="perspective3146" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2738" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2736" /> + <inkscape:perspective + id="perspective2734" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2732" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2730" + inkscape:persp3d-origin="31.18 : 14.173333 : 1" + inkscape:vp_z="62.360001 : 21.26 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 21.26 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2728" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2726" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2724" + inkscape:persp3d-origin="420.94501 : 198.42668 : 1" + inkscape:vp_z="841.89001 : 297.64001 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 297.64001 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2722" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2720" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2753" /> + <inkscape:perspective + id="perspective2717" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2715" /> + <inkscape:perspective + id="perspective2713" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2711" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="401.944 : 18.512501 : 1" + inkscape:persp3d-origin="200.972 : 12.341667 : 1" + id="perspective2645" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 18.512501 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="385.51999 : 18.512501 : 1" + inkscape:persp3d-origin="192.75999 : 12.341667 : 1" + id="perspective2633" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2474" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 48.070499 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="212.035 : 48.070499 : 1" + inkscape:persp3d-origin="106.0175 : 32.047 : 1" + id="perspective2426" /> + <inkscape:perspective + id="perspective2705" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.86454968" + inkscape:cx="61.810684" + inkscape:cy="115.50357" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1264" + inkscape:window-height="750" + inkscape:window-x="0" + inkscape:window-y="14" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="0,1" + position="19.710938,118.07812" + id="guide2516" /> + <sodipodi:guide + orientation="1,0" + position="20,118.55078" + id="guide2518" /> + <sodipodi:guide + orientation="0,1" + position="21.710938,88.113281" + id="guide2520" /> + <sodipodi:guide + orientation="1,0" + position="145.44141,87.875" + id="guide2522" /> + </sodipodi:namedview> + <metadata + id="metadata3275"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Camada 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-464.21428,-256.36217)"> + <g + id="g3083" + inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (install_OOorg3_standard).png" + inkscape:export-xdpi="89.956017" + inkscape:export-ydpi="89.956017"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect11604" + width="163" + height="312" + x="464.29398" + y="256.65631" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <g + transform="matrix(0.2304648,0,0,0.2304648,294.59926,364.26495)" + id="g3049"> + <g + id="g3252" + transform="matrix(1.1041871,0,0,1.1275051,876.92792,475.41355)" + style="fill:#000000"> + <path + id="path3254" + d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z" + style="fill:#000000" /> + <path + id="path3256" + d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z" + style="fill:#000000" /> + <path + id="path3258" + d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z" + style="fill:#000000" /> + <path + id="path3260" + d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z" + style="fill:#000000" /> + <path + id="path3262" + d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z" + style="fill:#000000" /> + <path + id="path3264" + d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z" + style="fill:#000000" /> + <path + id="path3266" + d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z" + style="fill:#000000" /> + <path + id="path3268" + d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z" + style="fill:#000000" /> + <path + id="path3270" + d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z" + style="fill:#000000" /> + <path + id="path3272" + d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z" + style="fill:#000000" /> + <path + id="path3274" + d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z" + style="fill:#000000" /> + <path + id="path3276" + d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z" + style="fill:#000000" /> + <path + id="path3278" + d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z" + style="fill:#000000" /> + <path + id="path3280" + d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z" + style="fill:#000000" /> + <path + id="path3282" + d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z" + style="fill:#000000" /> + <path + id="path3284" + d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z" + style="fill:#000000" /> + <path + id="path3286" + d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z" + style="fill:#000000" /> + <path + id="path3288" + d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z" + style="fill:#000000" /> + <path + id="path3290" + d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z" + style="fill:#000000" /> + <path + id="path3292" + d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z" + style="fill:#000000" /> + <path + id="path3294" + d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z" + style="fill:#000000" /> + </g> + <g + id="g2496" + transform="translate(636.32843,125.00871)" + style="fill:#000000"> + <path + id="path2451" + d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2453" + d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z" + style="fill:#18a303;fill-opacity:1" /> + <path + id="path2455" + d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z" + style="fill:#000000" /> + <path + id="path2457" + d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z" + style="fill:#000000" /> + <path + id="path2459" + d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z" + style="fill:#000000" /> + <path + id="path2461" + d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z" + style="fill:#000000" /> + <path + id="path2463" + d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z" + style="fill:#000000" /> + <path + id="path2465" + d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z" + style="fill:#000000" /> + <path + id="path2467" + d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z" + style="fill:#18a303;fill-opacity:1" /> + </g> + </g> + <rect + y="527.36218" + x="464.21429" + height="40" + width="163" + id="rect11610" + style="fill:url(#linearGradient2582);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <g + transform="translate(76.21425,-1536.3622)" + id="g11680" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z" + id="path11682" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z" + id="path11684" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11686" + d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z" + id="path11688" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11690" + d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z" + id="path11692" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11694" + d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z" + id="path11696" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11698" + d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z" + id="path11700" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11702" + d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z" + id="path11704" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11706" + d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z" + id="path11708" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11710" + d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z" + id="path11712" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z" + id="path11714" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11716" + d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z" + id="path11718" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11720" + d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z" + id="path11722" + sodipodi:nodetypes="csccscccc" /> + </g> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + style="fill:url(#linearGradient2557);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect11741" + width="163" + height="40" + x="464.21429" + y="256.36215" /> + <g + transform="translate(464.21428,-2776.3622)" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + id="g11959"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 101.93612,3032.725 C 101.18148,3032.706 100.43803,3033.1779 100.14306,3033.8632 C 99.848073,3034.5485 100.02025,3035.4039 100.55836,3035.9261 L 116.75462,3052.1736 C 117.27697,3052.6968 118.12749,3052.8703 118.81733,3052.5942 C 119.50718,3052.3182 119.99483,3051.6092 119.99999,3050.875 L 119.99999,3034.5974 C 120.00199,3033.6166 119.09611,3032.7233 118.10176,3032.725 L 101.93612,3032.725 L 101.93612,3032.725 z" + id="path11745" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,3132.725 C 1.1814832,3132.706 0.4380332,3133.1779 0.1430632,3133.8632 C -0.1519268,3134.5485 0.0202532,3135.4039 0.5583632,3135.9261 L 16.754623,3152.1736 C 17.276973,3152.6968 18.127493,3152.8703 18.817333,3152.5942 C 19.507183,3152.3182 19.994833,3151.6092 19.999993,3150.875 L 19.999993,3134.5974 C 20.001993,3133.6166 19.096113,3132.7233 18.101763,3132.725 L 1.9361232,3132.725 L 1.9361232,3132.725 z" + id="path11747" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11749" + d="M 1.9361232,3032.725 C 1.1814832,3032.706 0.4380332,3033.1779 0.1430632,3033.8632 C -0.1519268,3034.5485 0.0202532,3035.4039 0.5583632,3035.9261 L 16.754623,3052.1736 C 17.276973,3052.6968 18.127493,3052.8703 18.817333,3052.5942 C 19.507183,3052.3182 19.994833,3051.6092 19.999993,3050.875 L 19.999993,3034.5974 C 20.001993,3033.6166 19.096113,3032.7233 18.101763,3032.725 L 1.9361232,3032.725 L 1.9361232,3032.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 21.936123,3032.725 C 21.181483,3032.706 20.438033,3033.1779 20.143063,3033.8632 C 19.848073,3034.5485 20.020253,3035.4039 20.558363,3035.9261 L 36.754623,3052.1736 C 37.276973,3052.6968 38.127493,3052.8703 38.817333,3052.5942 C 39.507183,3052.3182 39.994833,3051.6092 39.999993,3050.875 L 39.999993,3034.5974 C 40.001993,3033.6166 39.096113,3032.7233 38.101763,3032.725 L 21.936123,3032.725 L 21.936123,3032.725 z" + id="path11751" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11753" + d="M 41.936123,3032.725 C 41.181483,3032.706 40.438033,3033.1779 40.143063,3033.8632 C 39.848073,3034.5485 40.020253,3035.4039 40.558363,3035.9261 L 56.754623,3052.1736 C 57.276973,3052.6968 58.127493,3052.8703 58.817333,3052.5942 C 59.507183,3052.3182 59.994833,3051.6092 59.999993,3050.875 L 59.999993,3034.5974 C 60.001993,3033.6166 59.096113,3032.7233 58.101763,3032.725 L 41.936123,3032.725 L 41.936123,3032.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 61.936123,3032.725 C 61.181483,3032.706 60.438033,3033.1779 60.143063,3033.8632 C 59.848073,3034.5485 60.020253,3035.4039 60.558363,3035.9261 L 76.754623,3052.1736 C 77.276973,3052.6968 78.127493,3052.8703 78.817333,3052.5942 C 79.507183,3052.3182 79.994833,3051.6092 79.999993,3050.875 L 79.999993,3034.5974 C 80.001993,3033.6166 79.096113,3032.7233 78.101763,3032.725 L 61.936123,3032.725 L 61.936123,3032.725 z" + id="path11755" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11757" + d="M 81.936123,3032.725 C 81.181483,3032.706 80.438033,3033.1779 80.143063,3033.8632 C 79.848073,3034.5485 80.020253,3035.4039 80.558363,3035.9261 L 96.754623,3052.1736 C 97.276973,3052.6968 98.127493,3052.8703 98.817333,3052.5942 C 99.50718,3052.3182 99.99483,3051.6092 99.99999,3050.875 L 99.99999,3034.5974 C 100.00199,3033.6166 99.09611,3032.7233 98.101763,3032.725 L 81.936123,3032.725 L 81.936123,3032.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,3052.725 C 1.1814832,3052.706 0.4380332,3053.1779 0.1430632,3053.8632 C -0.1519268,3054.5485 0.0202532,3055.4039 0.5583632,3055.9261 L 16.754623,3072.1736 C 17.276973,3072.6968 18.127493,3072.8703 18.817333,3072.5942 C 19.507183,3072.3182 19.994833,3071.6092 19.999993,3070.875 L 19.999993,3054.5974 C 20.001993,3053.6166 19.096113,3052.7233 18.101763,3052.725 L 1.9361232,3052.725 L 1.9361232,3052.725 z" + id="path11759" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11761" + d="M 21.936123,3052.725 C 21.181483,3052.706 20.438033,3053.1779 20.143063,3053.8632 C 19.848073,3054.5485 20.020253,3055.4039 20.558363,3055.9261 L 36.754623,3072.1736 C 37.276973,3072.6968 38.127493,3072.8703 38.817333,3072.5942 C 39.507183,3072.3182 39.994833,3071.6092 39.999993,3070.875 L 39.999993,3054.5974 C 40.001993,3053.6166 39.096113,3052.7233 38.101763,3052.725 L 21.936123,3052.725 L 21.936123,3052.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 41.936123,3052.725 C 41.181483,3052.706 40.438033,3053.1779 40.143063,3053.8632 C 39.848073,3054.5485 40.020253,3055.4039 40.558363,3055.9261 L 56.754623,3072.1736 C 57.276973,3072.6968 58.127493,3072.8703 58.817333,3072.5942 C 59.507183,3072.3182 59.994833,3071.6092 59.999993,3070.875 L 59.999993,3054.5974 C 60.001993,3053.6166 59.096113,3052.7233 58.101763,3052.725 L 41.936123,3052.725 L 41.936123,3052.725 z" + id="path11763" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11765" + d="M 61.936123,3052.725 C 61.181483,3052.706 60.438033,3053.1779 60.143063,3053.8632 C 59.848073,3054.5485 60.020253,3055.4039 60.558363,3055.9261 L 76.754623,3072.1736 C 77.276973,3072.6968 78.127493,3072.8703 78.817333,3072.5942 C 79.507183,3072.3182 79.994833,3071.6092 79.999993,3070.875 L 79.999993,3054.5974 C 80.001993,3053.6166 79.096113,3052.7233 78.101763,3052.725 L 61.936123,3052.725 L 61.936123,3052.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 81.936123,3052.725 C 81.181483,3052.706 80.438033,3053.1779 80.143063,3053.8632 C 79.848073,3054.5485 80.020253,3055.4039 80.558363,3055.9261 L 96.754623,3072.1736 C 97.276973,3072.6968 98.127493,3072.8703 98.817333,3072.5942 C 99.50718,3072.3182 99.99483,3071.6092 99.99999,3070.875 L 99.99999,3054.5974 C 100.00199,3053.6166 99.09611,3052.7233 98.101763,3052.725 L 81.936123,3052.725 L 81.936123,3052.725 z" + id="path11767" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11769" + d="M 1.9361232,3072.725 C 1.1814832,3072.706 0.4380332,3073.1779 0.1430632,3073.8632 C -0.1519268,3074.5485 0.0202532,3075.4039 0.5583632,3075.9261 L 16.754623,3092.1736 C 17.276973,3092.6968 18.127493,3092.8703 18.817333,3092.5942 C 19.507183,3092.3182 19.994833,3091.6092 19.999993,3090.875 L 19.999993,3074.5974 C 20.001993,3073.6166 19.096113,3072.7233 18.101763,3072.725 L 1.9361232,3072.725 L 1.9361232,3072.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 21.936123,3072.725 C 21.181483,3072.706 20.438033,3073.1779 20.143063,3073.8632 C 19.848073,3074.5485 20.020253,3075.4039 20.558363,3075.9261 L 36.754623,3092.1736 C 37.276973,3092.6968 38.127493,3092.8703 38.817333,3092.5942 C 39.507183,3092.3182 39.994833,3091.6092 39.999993,3090.875 L 39.999993,3074.5974 C 40.001993,3073.6166 39.096113,3072.7233 38.101763,3072.725 L 21.936123,3072.725 L 21.936123,3072.725 z" + id="path11771" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11773" + d="M 41.936123,3072.725 C 41.181483,3072.706 40.438033,3073.1779 40.143063,3073.8632 C 39.848073,3074.5485 40.020253,3075.4039 40.558363,3075.9261 L 56.754623,3092.1736 C 57.276973,3092.6968 58.127493,3092.8703 58.817333,3092.5942 C 59.507183,3092.3182 59.994833,3091.6092 59.999993,3090.875 L 59.999993,3074.5974 C 60.001993,3073.6166 59.096113,3072.7233 58.101763,3072.725 L 41.936123,3072.725 L 41.936123,3072.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 61.936123,3072.725 C 61.181483,3072.706 60.438033,3073.1779 60.143063,3073.8632 C 59.848073,3074.5485 60.020253,3075.4039 60.558363,3075.9261 L 76.754623,3092.1736 C 77.276973,3092.6968 78.127493,3092.8703 78.817333,3092.5942 C 79.507183,3092.3182 79.994833,3091.6092 79.999993,3090.875 L 79.999993,3074.5974 C 80.001993,3073.6166 79.096113,3072.7233 78.101763,3072.725 L 61.936123,3072.725 L 61.936123,3072.725 z" + id="path11775" + sodipodi:nodetypes="csccscccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 1.9361232,3092.725 C 1.1814832,3092.706 0.4380332,3093.1779 0.1430632,3093.8632 C -0.1519268,3094.5485 0.0202532,3095.4039 0.5583632,3095.9261 L 16.754623,3112.1736 C 17.276973,3112.6968 18.127493,3112.8703 18.817333,3112.5942 C 19.507183,3112.3182 19.994833,3111.6092 19.999993,3110.875 L 19.999993,3094.5974 C 20.001993,3093.6166 19.096113,3092.7233 18.101763,3092.725 L 1.9361232,3092.725 L 1.9361232,3092.725 z" + id="path11777" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11779" + d="M 21.936123,3092.725 C 21.181483,3092.706 20.438033,3093.1779 20.143063,3093.8632 C 19.848073,3094.5485 20.020253,3095.4039 20.558363,3095.9261 L 36.754623,3112.1736 C 37.276973,3112.6968 38.127493,3112.8703 38.817333,3112.5942 C 39.507183,3112.3182 39.994833,3111.6092 39.999993,3110.875 L 39.999993,3094.5974 C 40.001993,3093.6166 39.096113,3092.7233 38.101763,3092.725 L 21.936123,3092.725 L 21.936123,3092.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 41.936123,3092.725 C 41.181483,3092.706 40.438033,3093.1779 40.143063,3093.8632 C 39.848073,3094.5485 40.020253,3095.4039 40.558363,3095.9261 L 56.754623,3112.1736 C 57.276973,3112.6968 58.127493,3112.8703 58.817333,3112.5942 C 59.507183,3112.3182 59.994833,3111.6092 59.999993,3110.875 L 59.999993,3094.5974 C 60.001993,3093.6166 59.096113,3092.7233 58.101763,3092.725 L 41.936123,3092.725 L 41.936123,3092.725 z" + id="path11781" + sodipodi:nodetypes="csccscccc" /> + <path + sodipodi:nodetypes="csccscccc" + id="path11783" + d="M 1.9361232,3112.725 C 1.1814832,3112.706 0.4380332,3113.1779 0.1430632,3113.8632 C -0.1519268,3114.5485 0.0202532,3115.4039 0.5583632,3115.9261 L 16.754623,3132.1736 C 17.276973,3132.6968 18.127493,3132.8703 18.817333,3132.5942 C 19.507183,3132.3182 19.994833,3131.6092 19.999993,3130.875 L 19.999993,3114.5974 C 20.001993,3113.6166 19.096113,3112.7233 18.101763,3112.725 L 1.9361232,3112.725 L 1.9361232,3112.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 21.936123,3112.725 C 21.181483,3112.706 20.438033,3113.1779 20.143063,3113.8632 C 19.848073,3114.5485 20.020253,3115.4039 20.558363,3115.9261 L 36.754623,3132.1736 C 37.276973,3132.6968 38.127493,3132.8703 38.817333,3132.5942 C 39.507183,3132.3182 39.994833,3131.6092 39.999993,3130.875 L 39.999993,3114.5974 C 40.001993,3113.6166 39.096113,3112.7233 38.101763,3112.725 L 21.936123,3112.725 L 21.936123,3112.725 z" + id="path11785" + sodipodi:nodetypes="csccscccc" /> + </g> + <g + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png" + transform="translate(456.21428,-2742.3622)" + id="g11984"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 101.93612,3074.7256 C 101.18148,3074.7066 100.43803,3075.1785 100.14306,3075.8638 C 99.84807,3076.5491 100.02025,3077.4045 100.55836,3077.9267 L 116.75462,3094.1742 C 117.27697,3094.6974 118.12749,3094.8709 118.81733,3094.5948 C 119.50718,3094.3188 119.99483,3093.6098 119.99999,3092.8756 L 119.99999,3076.598 C 120.00199,3075.6172 119.09611,3074.7239 118.10176,3074.7256 L 101.93612,3074.7256 L 101.93612,3074.7256 z" + id="path11734" + sodipodi:nodetypes="csccscccc" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + id="path11895" + d="M 57.40206,3074.725 C 56.405981,3074.74 55.509994,3075.6501 55.51173,3076.6463 L 55.51173,3150.8032 C 55.51003,3151.7993 56.406014,3152.7099 57.40206,3152.7244 L 118.07864,3152.7244 C 119.08505,3152.7244 120.00156,3151.8096 119.99996,3150.8032 L 119.99996,3103.049 C 120.00296,3102.545 119.7975,3102.0429 119.44216,3101.6855 L 93.19443,3075.3138 C 92.84215,3074.9473 92.33924,3074.7301 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + sodipodi:nodetypes="ccccccccccc" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="M 57.40206,3074.725 C 56.35235,3074.7402 55.509901,3075.5965 55.51173,3076.6463 L 55.51173,3150.8032 C 55.509956,3151.853 56.352389,3152.7092 57.40206,3152.7244 L 118.07864,3152.7244 C 118.58844,3152.7252 119.07761,3152.5231 119.4381,3152.1626 C 119.7986,3151.8022 120.00077,3151.313 119.99996,3150.8032 L 119.99996,3103.049 C 120.00293,3102.5384 119.80217,3102.0476 119.44216,3101.6855 L 93.19443,3075.3138 C 92.837431,3074.9424 92.346043,3074.7302 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z M 59.32339,3078.5676 L 91.02519,3078.5676 L 116.15732,3103.8238 L 116.15732,3148.8818 L 59.32339,3148.8818 L 59.32339,3078.5676 z" + id="path11736" + inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + </g> + </g> + <text + transform="scale(1.0168078,0.98347)" + font-size="103.091" + id="text43" + style="font-size:48.89245605px;font-family:Vegur-Regular" + x="2336.854" + y="540.82001" /> + <text + transform="scale(0.9979479,1.0020563)" + font-size="103.091" + id="text3748" + style="font-size:91.03964996px;font-family:Vegur-Regular" + x="2230.6494" + y="417.58487" /> + </g> +</svg> diff --git a/setup_native/source/win32/nsis/brosdkbanner.bmp b/setup_native/source/win32/nsis/brosdkbanner.bmp Binary files differindex cbc2704721f8..0a2961accbda 100644 --- a/setup_native/source/win32/nsis/brosdkbanner.bmp +++ b/setup_native/source/win32/nsis/brosdkbanner.bmp diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc index 9ceb40d0fbdf..a0b8282895a3 100644 --- a/sfx2/inc/sfx2/sfxsids.hrc +++ b/sfx2/inc/sfx2/sfxsids.hrc @@ -126,6 +126,7 @@ #define SID_HELP_HELPFILEBOX (SID_SFX_START + 419) #define SID_HELP_HELPFILEBOX_SELECTED (SID_SFX_START + 420) #define SID_SHOW_LICENSE (SID_SFX_START + 1683) +#define SID_SHOW_CREDITS (SID_SFX_START + 1684) #define SID_HELP_TUTORIALS (SID_SFX_START + 1695) // default-ids for document diff --git a/sfx2/sdi/appslots.sdi b/sfx2/sdi/appslots.sdi index e08b093f6948..3bd2bc8b1e02 100644 --- a/sfx2/sdi/appslots.sdi +++ b/sfx2/sdi/appslots.sdi @@ -171,6 +171,10 @@ interface Application [ ExecMethod = MiscExec_Impl ; ] + SID_SHOW_CREDITS + [ + ExecMethod = MiscExec_Impl ; + ] SID_RECENTFILELIST [ ] diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi index 050be70a5881..e49a178f3823 100755 --- a/sfx2/sdi/sfx.sdi +++ b/sfx2/sdi/sfx.sdi @@ -7391,6 +7391,31 @@ SfxVoidItem ShowLicense SID_SHOW_LICENSE ] //-------------------------------------------------------------------------- +SfxVoidItem ShowCredits SID_SHOW_CREDITS +() +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = FALSE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_APPLICATION; +] + +//-------------------------------------------------------------------------- SfxVoidItem HelpTutorials SID_HELP_TUTORIALS () [ diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index 8c3716b56177..2d78f0ca0c8d 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -356,6 +356,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) break; } + case SID_SHOW_CREDITS: case SID_SHOW_LICENSE: { try { @@ -367,9 +368,27 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) args[1].Value <<= sal_True; rtl::OUString aURL; - if ( checkURL ( "LICENSE.odt", aURL ) || - checkURL ( "LICENSE.html", aURL ) || - checkURL ( "LICENSE", aURL ) ) { + char const** pNames; + if( rReq.GetSlot() == SID_SHOW_LICENSE ) + { + static char const* pLicenseStrings[] = + { + "LICENSE.odt", "LICENSE.html", "LICENSE" + }; + pNames = pLicenseStrings; + } + else + { + static char const* pCreditsStrings[] = + { + "CREDITS.odt", "CREDITS.html", "CREDITS" + }; + pNames = pCreditsStrings; + } + + if ( checkURL ( pNames[0], aURL ) || + checkURL ( pNames[1], aURL ) || + checkURL ( pNames[2], aURL ) ) { xLoader->loadComponentFromURL( aURL, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_blank")), 0, args ); } } catch (const ::com::sun::star::uno::Exception &) { diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx index 2867ebaf2297..1db95aaff87a 100644 --- a/shell/source/backends/gconfbe/gconfaccess.cxx +++ b/shell/source/backends/gconfbe/gconfaccess.cxx @@ -765,7 +765,7 @@ ConfigurationValue const ConfigurationValues[] = { SETTING_REMOVE_PERSONAL_INFO, "/apps/openoffice/lockdown/remove_personal_info_on_save", - "Scripting/RemovePersonalInfoOnSaving", + "RemovePersonalInfoOnSaving", sal_False, SETTINGS_LAST }, diff --git a/shell/source/backends/kde4be/kde4access.cxx b/shell/source/backends/kde4be/kde4access.cxx index 06ae1163e771..03ffb03ed261 100644 --- a/shell/source/backends/kde4be/kde4access.cxx +++ b/shell/source/backends/kde4be/kde4access.cxx @@ -127,7 +127,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.openoffice.org") ); + aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.libreoffice.org") ); break; default: // No proxy is used break; @@ -154,7 +154,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.openoffice.org") ); + aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.libreoffice.org") ); break; default: // No proxy is used break; @@ -181,7 +181,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.openoffice.org") ); + aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.libreoffice.org") ); break; default: // No proxy is used break; @@ -208,7 +208,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.openoffice.org") ); + aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.libreoffice.org") ); break; default: // No proxy is used break; @@ -235,7 +235,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.openoffice.org") ); + aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.libreoffice.org") ); break; default: // No proxy is used break; @@ -262,7 +262,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) { // In such cases, the proxy address is not stored in KDE, but determined dynamically. // The proxy address may depend on the requested address, on the time of the day, on the speed of the wind... // The best we can do here is to ask the current value for a given address. - aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.openoffice.org") ); + aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.libreoffice.org") ); break; default: // No proxy is used break; diff --git a/shell/source/unix/misc/makefile.mk b/shell/source/unix/misc/makefile.mk index 67fcc708c615..c4f3d9c49551 100644 --- a/shell/source/unix/misc/makefile.mk +++ b/shell/source/unix/misc/makefile.mk @@ -68,7 +68,7 @@ APP1TARGET = gnome-open-url.bin APP1OBJS = \ $(OBJ)$/gnome-open-url.obj APP1LIBS = -.IF "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" +.IF "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" && "$(OS)"!="OPENBSD" APP1STDLIBS=-ldl .ENDIF diff --git a/solenv/bin/deliver.pl b/solenv/bin/deliver.pl index ab91ae34c01f..08a7806b3cc7 100755 --- a/solenv/bin/deliver.pl +++ b/solenv/bin/deliver.pl @@ -368,13 +368,13 @@ sub do_symlink } } else { + return unless -e $fullfrom; print "REMOVE: $to\n" if $opt_verbose; unlink $to; if ( $opt_delete ) { push_on_ziplist($to) if $opt_zip; return; } - return unless -e $fullfrom; print "SYMLIB: $from -> $to\n" if $opt_verbose; if ( !symlink("$from", "$to") ) { print_error("can't symlink $from -> $to: $!",0); diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl index 05fa12f06070..844c36f23c2b 100644 --- a/solenv/bin/macosx-change-install-names.pl +++ b/solenv/bin/macosx-change-install-names.pl @@ -47,6 +47,7 @@ sub action($$$) 'shl/BOXT/URELIB' => '@executable_path/urelibs', 'shl/BOXT/OOO' => '@loader_path/../../../basis-link/program', 'shl/NONE/URELIB' => '@__VIA_LIBRARY_PATH__', + 'shl/OOO/NONE' => '@__VIA_LIBRARY_PATH__', 'shl/NONE/OOO' => '@__VIA_LIBRARY_PATH__', 'shl/NONE/NONE' => '@__VIA_LIBRARY_PATH__'); my ($type, $loc1, $loc2) = @_; diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl index 60bfb86c5d46..b555b689aa9a 100644 --- a/solenv/bin/make_installer.pl +++ b/solenv/bin/make_installer.pl @@ -1292,6 +1292,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ ) # Creating directories #################################################### + if ( $allvariableshashref->{'OOODOWNLOADNAME'} ) { installer::download::set_download_filename($languagestringref, $allvariableshashref); } + else { installer::download::resolve_variables_in_downloadname($allvariableshashref, "", $languagestringref); } + $installdir = installer::worker::create_installation_directory($shipinstalldir, $languagestringref, \$current_install_number); my $listfiledir = installer::systemactions::create_directories("listfile", $languagestringref); diff --git a/solenv/bin/mapgen.pl b/solenv/bin/mapgen.pl index 48c335c2adba..a427da997367 100644 --- a/solenv/bin/mapgen.pl +++ b/solenv/bin/mapgen.pl @@ -135,7 +135,8 @@ sub filter_symbols { $env_section = '1' and next if ((/^# SOLARIS #$/) && ($ENV{OS} eq 'SOLARIS')); $env_section = '1' and next if ((/^# LINUX #$/) && ($ENV{OS} eq 'LINUX')); $env_section = '1' and next if ((/^# FREEBSD #$/) && ($ENV{OS} eq 'FREEBSD')); - last if ($env_section && ((/^# SOLARIS #$/) || (/^# FREEBSD #$/) || (/^# LINUX #$/))); + $env_section = '1' and next if ((/^# OPENBSD #$/) && ($ENV{OS} eq 'OPENBSD')); + last if ($env_section && ((/^# SOLARIS #$/) || (/^# FREEBSD #$/) || (/^# LINUX #$/) || (/^# OPENBSD #$/))); next if (!$_ || /^#/); push(@filters, $_); }; diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm index ab56da98cc8d..f300226589d4 100644 --- a/solenv/bin/modules/installer/download.pm +++ b/solenv/bin/modules/installer/download.pm @@ -1951,7 +1951,7 @@ sub create_download_sets my $lastdir = $installationdir; installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$lastdir); - if ( $lastdir =~ /\./ ) { $lastdir =~ s/\./_download_inprogress\./ } + if ( $installer::globals::iswindowsbuild && $lastdir =~ /\./ ) { $lastdir =~ s/\./_download_inprogress\./ } else { $lastdir = $lastdir . "_download_inprogress"; } # removing existing directory "_native_packed_inprogress" and "_native_packed_witherror" and "_native_packed" diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm index dd7361c37af8..f43af6a35454 100644 --- a/solenv/bin/modules/installer/parameter.pm +++ b/solenv/bin/modules/installer/parameter.pm @@ -299,6 +299,11 @@ sub setglobalvariables } } + if ( $installer::globals::compiler =~ /unxobsd/ ) + { + $installer::globals::epmoutpath = "openbsd"; + } + if ( $installer::globals::compiler =~ /unxfbsd/ ) { $installer::globals::isfreebsdbuild = 1; diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm index bb00a56c70de..adf1a9afdae6 100644 --- a/solenv/bin/modules/installer/simplepackage.pm +++ b/solenv/bin/modules/installer/simplepackage.pm @@ -354,7 +354,7 @@ sub replace_variables_in_scriptfile replace_one_variable_in_shellscript($scriptfile, $allvariables->{'PRODUCTVERSION'}, "PRODUCTVERSION" ); my $scriptname = lc($allvariables->{'PRODUCTNAME'}) . "\.script"; - if ( $allvariables->{'PRODUCTNAME'} eq "OpenOffice.org" ) { $scriptname = "org.openoffice.script"; } + if ( $allvariables->{'PRODUCTNAME'} eq "LibreOffice" ) { $scriptname = "org.libreoffice.script"; } replace_one_variable_in_shellscript($scriptfile, $scriptname, "SEARCHSCRIPTNAME" ); } diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm index 24b070574189..c1cca5e47c17 100644 --- a/solenv/bin/modules/installer/systemactions.pm +++ b/solenv/bin/modules/installer/systemactions.pm @@ -395,21 +395,31 @@ sub create_directories if ( $$languagesref ) { $locallanguagesref = $$languagesref; } - if (!($locallanguagesref eq "" )) # this will be a path like "01_49", for Profiles and ConfigurationFiles, idt-Files + if ($newdirectory eq "install" ) { - my $languagestring = $$languagesref; - - if (length($languagestring) > $installer::globals::max_lang_length ) + # put packages into versioned path (fdo#30837) + $path = $path . "$installer::globals::ooodownloadfilename"; + create_directory($path); + } + else + { + if ($locallanguagesref ne "") # this will be a path like "01_49", for Profiles and ConfigurationFiles, idt-Files { - my $number_of_languages = get_number_of_langs($languagestring); - chomp(my $shorter = `echo $languagestring | md5sum | sed -e "s/ .*//g"`); - # $languagestring = $shorter; - my $id = substr($shorter, 0, 8); # taking only the first 8 digits - $languagestring = "lang_" . $number_of_languages . "_id_" . $id; - } - $path = $path . $languagestring . $installer::globals::separator; - create_directory($path); + my $languagestring = $$languagesref; + + if (length($languagestring) > $installer::globals::max_lang_length ) + { + my $number_of_languages = get_number_of_langs($languagestring); + chomp(my $shorter = `echo $languagestring | md5sum | sed -e "s/ .*//g"`); + # $languagestring = $shorter; + my $id = substr($shorter, 0, 8); # taking only the first 8 digits + $languagestring = "lang_" . $number_of_languages . "_id_" . $id; + } + + $path = $path . $languagestring . $installer::globals::separator; + create_directory($path); + } } } diff --git a/solenv/bin/modules/osarch.pm b/solenv/bin/modules/osarch.pm index 205e4c933193..3298b27c65f3 100755 --- a/solenv/bin/modules/osarch.pm +++ b/solenv/bin/modules/osarch.pm @@ -22,6 +22,7 @@ chop( $m_str, $s_str ); "Linux", "linux", "FreeBSD", "freebsd", "NetBSD", "netbsd", + "OpenBSD", "openbsd", "OSF1", "decunix", "SCO_SV", "scoosr5", # "SCO_SV", "scouw21", @@ -36,6 +37,7 @@ chop( $m_str, $s_str ); "Linux", "-DLINUX", "FreeBSD", "-DFREEBSD", "NetBSD", "-DNETBSD", + "OpenBSD", "-DOPENBSD", "OSF1", "-DSYSV -DDECUNIX", "SCO_SV", "-DSYSV -DSCO -DSCO_OSR5", # "SCO_SV", "-DSYSV -DSCO -DSCO_UW21", @@ -51,6 +53,7 @@ chop( $m_str, $s_str ); "Linux", "lng", "FreeBSD", "fbsd", "NetBSD", "bsd", + "OpenBSD", "obsd", "SCO_SV", "sco", "Darwin", "macx", "Mac OS", "macx", diff --git a/solenv/bin/ooinstall b/solenv/bin/ooinstall index f848ea8ce2b0..dfca65e2fc39 100755 --- a/solenv/bin/ooinstall +++ b/solenv/bin/ooinstall @@ -8,6 +8,7 @@ # 3. When packaging (called from package-ooo), to install to DESTDIR use File::Find; +use File::Path qw(mkpath); use Cwd; $path = ''; @@ -25,7 +26,7 @@ sub wanted { && die "Cannot install $_ extension!"; } -( $^O =~ /darwin/i ) || ( -f "/proc/meminfo" ) || die "The installer cannot work without javaldx running, which requires /proc to be mounted"; +( $^O =~ /openbsd/i ) || ( $^O =~ /darwin/i ) || ( -f "/proc/meminfo" ) || die "The installer cannot work without javaldx running, which requires /proc to be mounted"; # Workaround for system Mozilla if ( $ENV{'SYSTEM_MOZILLA'} eq 'YES' ) { @@ -38,10 +39,11 @@ $ENV{'PYTHONPATH'} = "$ENV{'SRC_ROOT'}/instsetoo_native/$ENV{'INPATH'}/bin:$ENV{ for $arg (@ARGV) { if ($arg eq '-l') { $do_link = 1; - } elsif ($arg eq '-h' || $arg eq '--help') { $help = 1; } else { + # Cwd::realpath does not work if the path does not exist + mkpath($arg) unless -d $arg; $path = Cwd::realpath( $arg ); } } @@ -73,7 +75,7 @@ $ENV{LOCAL_COMMON_OUT} = $ENV{OUT}; # the installer to use the English localization of the file instead. $ENV{DEFAULT_TO_ENGLISH_FOR_PACKING} = 1; -$langs=$setup_vars{OOO_LANGS_LIST}; +$langs=$ENV{WITH_LANG}; $langs='en-US' if $langs eq ''; $langs =~ s/\s+/,/g; # FIXME: hack... we get a useless , at the end which makes it being e.g. zu# @@ -81,14 +83,14 @@ $langs =~ s/\s+/,/g; $langs =~ s/,'/'/; $destdir=''; -if ( defined $setup_vars{OODESTDIR} && - $setup_vars{OODESTDIR} ne "" ) { - $destdir = "-destdir \"$setup_vars{OODESTDIR}\""; +if ( defined $ENV{OODESTDIR} && + $ENV{OODESTDIR} ne "" ) { + $destdir = "-destdir \"$ENV{OODESTDIR}\""; } $strip=''; -if ( defined $setup_vars{OOO_STRIP} && - $setup_vars{OOO_STRIP} eq "no" ) { +if ( defined $ENV{DISABLE_STRIP} && + $ENV{DISABLE_STRIP} eq "TRUE" ) { $strip = "-dontstrip"; } diff --git a/solenv/inc/installationtest.mk b/solenv/inc/installationtest.mk index 15a80b02dcde..80de44682287 100644 --- a/solenv/inc/installationtest.mk +++ b/solenv/inc/installationtest.mk @@ -39,7 +39,7 @@ my_instsets = $(shell ls -dt \ installationtest_instset = $(my_instsets:1) .ELSE installationtest_instset = \ - $(SOLARSRC)/instsetoo_native/$(INPATH)/LibreOffice/archive/install/$(defaultlangiso) + $(SOLARSRC)/instsetoo_native/$(INPATH)/LibreOffice/archive/install .END .IF "$(OS)" == "WNT" diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk index 06c720c985b6..fc5dee4ecbfe 100644 --- a/solenv/inc/libs.mk +++ b/solenv/inc/libs.mk @@ -205,7 +205,8 @@ ZLIB3RDLIB=-lz ZLIB3RDLIB=-lzlib .ENDIF .IF "$(SYSTEM_JPEG)"=="YES" -.IF "$(SOLAR_JAVA)" != "" && "$(JDK)" != "gcj" && "$(OS)" != "MACOSX" +.IF "$(SOLAR_JAVA)" != "" && "$(JDK)" != "gcj" && "$(OS)" != "MACOSX" && \ + "$(OS)" != "OPENBSD" #i34482# Blackdown/Sun jdk is in the libsearch patch and has a libjpeg :-( .IF "$(OS)" == "FREEBSD" JPEG3RDLIB=/usr/local/lib/libjpeg.so diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk index 6bf065367170..c6055d1bc2b5 100644 --- a/solenv/inc/unitools.mk +++ b/solenv/inc/unitools.mk @@ -107,7 +107,7 @@ PERL*=perl TYPE=cat CDD=cd COPY=cp -f -.IF "$(OS)"=="MACOSX" || "$(OS)"=="NETBSD" +.IF "$(OS)"=="MACOSX" || "$(OS)"=="NETBSD" || "$(OS)"=="OPENBSD" COPYRECURSE=-R .ELSE #"$(OS)"=="MACOSX" COPYRECURSE=-r diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk index f7364baea364..7645a73c1908 100644 --- a/solenv/inc/unx.mk +++ b/solenv/inc/unx.mk @@ -147,6 +147,10 @@ .INCLUDE : unxfbsd.mk .ENDIF +.IF "$(COM)$(OS)" == "GCCOPENBSD" +.INCLUDE : unxobsd.mk +.ENDIF + .IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" .INCLUDE : unxmacxp.mk .ENDIF diff --git a/solenv/inc/unxlng.mk b/solenv/inc/unxlng.mk index 3602c0beb0cc..1b7ee75d295c 100644 --- a/solenv/inc/unxlng.mk +++ b/solenv/inc/unxlng.mk @@ -112,8 +112,16 @@ CFLAGSDBGUTIL= # Compiler flags for enabling optimizations .IF "$(PRODUCT)"!="" CFLAGSOPT=$(CDEFAULTOPT) # optimizing for products -.IF "$(USE_SYSTEM_STL)"!="YES" -CFLAGSOPT+=-fno-strict-aliasing #STLPort headers are full of aliasing warnings + +GCCNUMVERSION_CMD=-dumpversion $(PIPEERROR) $(AWK) -v num=true -f $(SOLARENV)/bin/getcompver.awk +GCCNUMVER:=$(shell @-$(CXX) $(GCCNUMVERSION_CMD)) + +.IF "$(USE_SYSTEM_STL)"!="YES" || "$(GCCNUMVER)" <= "000400050000" +#STLPort headers are full of aliasing warnings and +#At least SLED 10.2 gcc 4.3 overly agressively optimizes +#uno::Sequence into junk, so only strict-alias on compiler +#later than 4.5.1 +CFLAGSOPT+=-fno-strict-aliasing .ENDIF .ELSE # "$(PRODUCT)"!="" CFLAGSOPT= # no optimizing for non products diff --git a/solenv/inc/unxobsd.mk b/solenv/inc/unxobsd.mk new file mode 100644 index 000000000000..548be65a23a2 --- /dev/null +++ b/solenv/inc/unxobsd.mk @@ -0,0 +1,271 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +# Makefile for OpenBSD +ASM*= +AFLAGS*= +SOLAR_JAVA*= +# default optimization level for product code +CDEFAULTOPT*=-O2 +# architecture dependent flags for the C and C++ compiler that can be changed by +# exporting the variable ARCH_FLAGS="..." in the shell, which is used to start build +ARCH_FLAGS*= +# position independent code switch +PICSWITCH*:=-fpic +JAVAFLAGSDEBUG=-g + +# arch specific defines +.IF "$(CPUNAME)" == "INTEL" +CDEFS+=-DX86 +.ENDIF +.IF "$(CPUNAME)" == "X86_64" +CDEFS+=-DX86_64 +ARCH_FLAGS*= +BUILD64=1 +.ENDIF + +# filter for supressing verbose messages from linker +#not needed at the moment +#LINKOUTPUT_FILTER=" |& $(SOLARENV)/bin/msg_filter" + +# _PTHREADS is needed for the stl +CDEFS+=$(PTHREAD_CFLAGS) -D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=$(STLPORT_VER) + +# enable visibility define in "sal/types.h" +.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" +CDEFS += -DHAVE_GCC_VISIBILITY_FEATURE +.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" + +# this is a platform with JAVA support +.IF "$(SOLAR_JAVA)"!="" +JAVADEF=-DSOLAR_JAVA +.IF "$(debug)"=="" +JAVA_RUNTIME=-ljava +.ELSE +JAVA_RUNTIME=-ljava_g +.ENDIF +.ENDIF + +# name of C++ Compiler +CXX*=g++ +# name of C Compiler +CC*=gcc +.IF "$(SYSBASE)"!="" +CFLAGS_SYSBASE:=-isystem $(SYSBASE)$/usr$/include +CXX+:=$(CFLAGS_SYSBASE) +CC+:=$(CFLAGS_SYSBASE) +.ENDIF # "$(SYSBASE)"!="" +CFLAGS+=-fmessage-length=0 -c + +# flags to enable build with symbols; required for crashdump feature +.IF "$(ENABLE_SYMBOLS)"=="SMALL" +CFLAGSENABLESYMBOLS=-g1 +.ELSE +CFLAGSENABLESYMBOLS=-g # was temporarily commented out, reenabled before Beta + +.ENDIF + +# flags for the C++ Compiler +CFLAGSCC= -pipe $(ARCH_FLAGS) +# Flags for enabling exception handling +CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs +# Flags for disabling exception handling +CFLAGS_NO_EXCEPTIONS=-fno-exceptions -DBOOST_NO_EXCEPTIONS + +# -fpermissive should be removed as soon as possible +CFLAGSCXX= -pipe $(ARCH_FLAGS) +.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" +CFLAGSCXX += -fvisibility-inlines-hidden +.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" + +CFLAGS_CREATE_PCH=-x c++-header -I$(INCPCH) -DPRECOMPILED_HEADERS +CFLAGS_USE_PCH=-I$(SLO)$/pch -DPRECOMPILED_HEADERS -Winvalid-pch +CFLAGS_USE_EXCEPTIONS_PCH=-I$(SLO)$/pch_ex -DPRECOMPILED_HEADERS -Winvalid-pch + +# Compiler flags for compiling static object in multi threaded environment with graphical user interface +CFLAGSOBJGUIMT= +# Compiler flags for compiling static object in multi threaded environment with character user interface +CFLAGSOBJCUIMT= +# Compiler flags for compiling shared object in multi threaded environment with graphical user interface +CFLAGSSLOGUIMT=$(PICSWITCH) +# Compiler flags for compiling shared object in multi threaded environment with character user interface +CFLAGSSLOCUIMT=$(PICSWITCH) +# Compiler flags for profiling +CFLAGSPROF= +# Compiler flags for debugging +CFLAGSDEBUG=-g +CFLAGSDBGUTIL= +# Compiler flags for enabling optimizations +.IF "$(PRODUCT)"!="" +CFLAGSOPT=$(CDEFAULTOPT) # optimizing for products +.IF "$(USE_SYSTEM_STL)"!="YES" || "$(CCNUMVER)" <= "000400050000" +#STLPort headers are full of aliasing warnings and +#At least SLED 10.2 gcc 4.3 overly agressively optimizes +#uno::Sequence into junk, so only strict-alias on compiler +#later than 4.5.1 +CFLAGSOPT+=-fno-strict-aliasing +.ENDIF +.ELSE # "$(PRODUCT)"!="" +CFLAGSOPT= # no optimizing for non products +.ENDIF # "$(PRODUCT)"!="" +# Compiler flags for disabling optimizations +CFLAGSNOOPT=-O0 +# Compiler flags for describing the output path +CFLAGSOUTOBJ=-o + +# -Wshadow does not work for C with nested uses of pthread_cleanup_push: +CFLAGSWARNCC=-Wall -Wextra -Wendif-labels +CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wshadow -Wno-ctor-dtor-privacy \ + -Wno-non-virtual-dtor +CFLAGSWALLCC=$(CFLAGSWARNCC) +CFLAGSWALLCXX=$(CFLAGSWARNCXX) +CFLAGSWERRCC=-Werror + +# Once all modules on this platform compile without warnings, set +# COMPILER_WARN_ERRORS=TRUE here instead of setting MODULES_WITH_WARNINGS (see +# settings.mk): +MODULES_WITH_WARNINGS := \ + lotuswordpro \ + soldep + +# switches for dynamic and static linking +STATIC = -Wl,-Bstatic +DYNAMIC = -Wl,-Bdynamic + +# name of linker +LINK*=$(CXX) +LINKC*=$(CC) + +# default linker flags +LINKFLAGSDEFS*=#-Wl,-z,defs +LINKFLAGSRUNPATH_URELIB=-Wl,-rpath,\''$$ORIGIN'\' +LINKFLAGSRUNPATH_UREBIN=-Wl,-rpath,\''$$ORIGIN/../lib:$$ORIGIN'\' + #TODO: drop $ORIGIN once no URE executable is also shipped in OOo +LINKFLAGSRUNPATH_OOO=-Wl,-rpath,\''$$ORIGIN:$$ORIGIN/../ure-link/lib'\' +LINKFLAGSRUNPATH_SDK=-Wl,-rpath,\''$$ORIGIN/../../ure-link/lib'\' +LINKFLAGSRUNPATH_BRAND=-Wl,-rpath,\''$$ORIGIN:$$ORIGIN/../basis-link/program:$$ORIGIN/../basis-link/ure-link/lib'\' +LINKFLAGSRUNPATH_OXT= +LINKFLAGSRUNPATH_BOXT=-Wl,-rpath,\''$$ORIGIN/../../../basis-link/program'\' +LINKFLAGSRUNPATH_NONE= +# flag -Wl,-z,noexecstack sets the NX bit on the stack +LINKFLAGS=-Wl,-z,noexecstack -Wl,-z,combreloc $(LINKFLAGSDEFS) +.IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE" +LINKFLAGS += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo +.ENDIF + +# linker flags for linking applications +LINKFLAGSAPPGUI= -Wl,-export-dynamic -Wl,--noinhibit-exec \ + -Wl,-rpath-link,$(LB):$(SOLARLIBDIR) +LINKFLAGSAPPCUI= -Wl,-export-dynamic -Wl,--noinhibit-exec \ + -Wl,-rpath-link,$(LB):$(SOLARLIBDIR) + +# linker flags for linking shared libraries +LINKFLAGSSHLGUI= -shared +LINKFLAGSSHLCUI= -shared + +LINKFLAGSTACK= +LINKFLAGSPROF= +LINKFLAGSDEBUG=-g +LINKFLAGSOPT= + +# linker flags for optimization (symbol hashtable) +# for now, applied to symbol scoped libraries, only +LINKFLAGSOPTIMIZE*=-Wl,-O1 +LINKVERSIONMAPFLAG=$(LINKFLAGSOPTIMIZE) -Wl,--version-script + +SONAME_SWITCH=-Wl,-h + +# Sequence of libs does matter ! + +STDLIBCPP=-lstdc++ + +# default objectfilenames to link +STDOBJVCL=$(L)$/salmain.o +STDOBJGUI= +STDSLOGUI= +STDOBJCUI= +STDSLOCUI= + +.IF "$(HAVE_LD_HASH_STYLE)" == "TRUE" +LINKFLAGS += -Wl,--hash-style=both +.ELSE +LINKFLAGS += -Wl,-zdynsort +.ENDIF + +# libraries for linking applications +STDLIBGUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed +STDLIBCUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed +# libraries for linking shared libraries +STDSHLGUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed +STDSHLCUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed + +X11LINK_DYNAMIC = -Wl,--as-needed -lXext -lX11 -Wl,--no-as-needed + +LIBSALCPPRT*=-Wl,--whole-archive -lsalcpprt -Wl,--no-whole-archive + +.IF "$(USE_STLP_DEBUG)" != "" +.IF "$(STLPORT_VER)" >= "500" +LIBSTLPORT=$(DYNAMIC) -lstlportstlg +LIBSTLPORTST=$(STATIC) -lstlportstlg $(DYNAMIC) +.ELSE +LIBSTLPORT=$(DYNAMIC) -lstlport_gcc_stldebug +LIBSTLPORTST=$(STATIC) -lstlport_gcc_stldebug $(DYNAMIC) +.ENDIF +.ELSE # "$(USE_STLP_DEBUG)" != "" +.IF "$(STLPORT_VER)" >= "500" +LIBSTLPORT=$(DYNAMIC) -lstlport +LIBSTLPORTST=$(STATIC) -lstlport $(DYNAMIC) +.ELSE +LIBSTLPORT=$(DYNAMIC) -lstlport_gcc +LIBSTLPORTST=$(STATIC) -lstlport_gcc $(DYNAMIC) +.ENDIF +.ENDIF # "$(USE_STLP_DEBUG)" != "" + +#FILLUPARC=$(STATIC) -lsupc++ $(DYNAMIC) + +# name of library manager +LIBMGR*=ar +LIBFLAGS=-r + +# tool for generating import libraries +IMPLIB= +IMPLIBFLAGS= + +MAPSYM= +MAPSYMFLAGS= + +RC=irc +RCFLAGS=-fo$@ $(RCFILES) +RCLINK= +RCLINKFLAGS= +RCSETVERSION= + +# platform specific identifier for shared libs +DLLPRE=lib +DLLPOST=.so +DLLPOSTFIX=ob +PCHPOST=.gch diff --git a/soltools/checkdll/makefile.mk b/soltools/checkdll/makefile.mk index fc09a566005e..b5b386a63cf6 100644 --- a/soltools/checkdll/makefile.mk +++ b/soltools/checkdll/makefile.mk @@ -45,7 +45,8 @@ LIBSALCPPRT=$(0) APP1TARGET = checkdll APP1OBJS = $(OBJ)$/checkdll.obj DEPOBJFILES = $(APP1OBJS) -.IF "$(OS)"!="FREEBSD" && "$(OS)"!="MACOSX" && "$(OS)"!="NETBSD" +.IF "$(OS)"!="FREEBSD" && "$(OS)"!="MACOSX" && "$(OS)"!="NETBSD" \ + && "$(OS)"!="OPENBSD" STDLIB += -ldl .ENDIF .IF "$(OS)"=="NETBSD" diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index 109332f8dcc7..a48fe61b2444 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -207,7 +207,10 @@ void SmGraphicWindow::MouseButtonDown(const MouseEvent& rMEvt) bool SmGraphicWindow::IsInlineEditEnabled() const { - return pViewShell->GetEditWindow()->IsInlineEditEnabled(); + //Avoid crash on startup (happens when starmath is selected from splash screen) + if(pViewShell->GetEditWindow()) + return pViewShell->GetEditWindow()->IsInlineEditEnabled(); + return false; } void SmGraphicWindow::GetFocus() diff --git a/svx/inc/gallery.hxx b/svx/inc/gallery.hxx index 77b8fb0bc42f..78b2632e49c6 100644 --- a/svx/inc/gallery.hxx +++ b/svx/inc/gallery.hxx @@ -175,7 +175,7 @@ #define GALLERY_THEME_MAPS_MIDDLE_AGES 120 #define GALLERY_THEME_MAPS_MEXICO 121 #define GALLERY_THEME_MAPS_ANCIENT_TIMES 122 -#define GALLERY_THEME_MAPS_SIMBOLS 123 +#define GALLERY_THEME_MAPS_SYMBOLS 123 #define GALLERY_THEME_MAPS_HISTORY_1900 124 #define GALLERY_THEME_MAPS_WORLD 125 #define GALLERY_THEME_CROPS 126 diff --git a/svx/inc/galtheme.hrc b/svx/inc/galtheme.hrc index cd09120edc1e..90b05abffe2b 100644 --- a/svx/inc/galtheme.hrc +++ b/svx/inc/galtheme.hrc @@ -156,7 +156,7 @@ #define RID_GALLERYSTR_THEME_MAPS_MIDDLE_AGES (RID_GALLERYSTR_THEME_START + 120) #define RID_GALLERYSTR_THEME_MAPS_MEXICO (RID_GALLERYSTR_THEME_START + 121) #define RID_GALLERYSTR_THEME_MAPS_ANCIENT_TIMES (RID_GALLERYSTR_THEME_START + 122) -#define RID_GALLERYSTR_THEME_MAPS_SIMBOLS (RID_GALLERYSTR_THEME_START + 123) +#define RID_GALLERYSTR_THEME_MAPS_SYMBOLS (RID_GALLERYSTR_THEME_START + 123) #define RID_GALLERYSTR_THEME_MAPS_HISTORY_1900 (RID_GALLERYSTR_THEME_START + 124) #define RID_GALLERYSTR_THEME_MAPS_WORLD (RID_GALLERYSTR_THEME_START + 125) #define RID_GALLERYSTR_THEME_CROPS (RID_GALLERYSTR_THEME_START + 126) diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc index bdd0c23517b2..5abf5f2876de 100644 --- a/svx/inc/globlmn_tmpl.hrc +++ b/svx/inc/globlmn_tmpl.hrc @@ -1055,6 +1055,12 @@ HelpID = SID_SHOW_LICENSE ; \ Text [ en-US ] = "License information..." ; \ +#define ITEM_SHOW_CREDITS \ + Identifier = SID_SHOW_CREDITS ; \ + Command = ".uno:ShowCredits" ; \ + HelpID = SID_SHOW_CREDITS ; \ + Text [ en-US ] = "%PRODUCTNAME Credits..." ; + #define ITEM_HELP_ONLINE_REGISTRATION \ Identifier = SID_ONLINE_REGISTRATION ; \ Command = ".uno:OnlineRegistrationDlg" ; \ @@ -1114,6 +1120,10 @@ };\ MenuItem\ {\ + ITEM_SHOW_CREDITS\ + };\ + MenuItem\ + {\ ITEM_HELP_ABOUT\ About = TRUE ; \ };\ diff --git a/svx/source/fmcomp/trace.cxx b/svx/source/fmcomp/trace.cxx index d0692180b3fe..6242a0f73292 100644 --- a/svx/source/fmcomp/trace.cxx +++ b/svx/source/fmcomp/trace.cxx @@ -37,7 +37,7 @@ //------------------------------------------------------------------------------ ::osl::Mutex Tracer::s_aMapSafety; -::std::map< ::oslThreadIdentifier, INT32, ::std::less< ::osl::ThreadIdentifier > > +::std::map< ::oslThreadIdentifier, INT32, ::std::less< oslThreadIdentifier > > Tracer::s_aThreadIndents; //------------------------------------------------------------------------------ diff --git a/svx/source/gallery2/galtheme.src b/svx/source/gallery2/galtheme.src index 7fb9d6318838..2db8a1e39643 100644 --- a/svx/source/gallery2/galtheme.src +++ b/svx/source/gallery2/galtheme.src @@ -890,9 +890,9 @@ Text [ en-US ] = "Maps - Ancient times"; // --------------------------------------------------------------------------- -String RID_GALLERYSTR_THEME_MAPS_SIMBOLS +String RID_GALLERYSTR_THEME_MAPS_SYMBOLS { -Text [ en-US ] = "Maps - simbols"; +Text [ en-US ] = "Maps - symbols"; }; // --------------------------------------------------------------------------- diff --git a/svx/source/intro/ooo.src b/svx/source/intro/ooo.src index d80e1239f053..a02ceb7ff055 100644 --- a/svx/source/intro/ooo.src +++ b/svx/source/intro/ooo.src @@ -65,7 +65,7 @@ String RID_BUILDVERSION ModalDialog RID_DEFAULTABOUT { OutputSize = TRUE ; - Size = MAP_APPFONT ( 245 , 260 ) ; + Size = MAP_APPFONT ( 245 , 280 ) ; Moveable = TRUE ; SVLook = TRUE ; TEXT_DEFAULTABOUT @@ -88,7 +88,7 @@ ModalDialog RID_DEFAULTABOUT { Border = FALSE ; Pos = MAP_APPFONT ( 54 , 25 ) ; - Size = MAP_APPFONT ( 168 , 51 ) ; + Size = MAP_APPFONT ( 168 , 71 ) ; IgnoreTab = TRUE ; ReadOnly = TRUE ; AutoVScroll = TRUE ; @@ -98,7 +98,7 @@ ModalDialog RID_DEFAULTABOUT NoLabel = TRUE; TabStop = TRUE; Text [ en-US ] = "Contributor credits"; - Pos = MAP_APPFONT ( 54 , 80 ) ; + Pos = MAP_APPFONT ( 54 , 100 ) ; Size = MAP_APPFONT ( 168 , 10 ) ; }; String ABOUT_STR_VERSION diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx index 705450446a53..307b353979e2 100644 --- a/sw/inc/crsrsh.hxx +++ b/sw/inc/crsrsh.hxx @@ -112,7 +112,7 @@ struct SwContentAtPos SW_CONTENT_CHECK = 0x0400, // #i43742# SW_SMARTTAG = 0x0800, SW_FORMCTRL = 0x1000 -#if OSL_DEBUG_LEVEL > 1 +#ifdef DBG_UTIL ,SW_CURR_ATTRS = 0x4000 // only for debugging ,SW_TABLEBOXVALUE = 0x8000 // only for debugging #endif diff --git a/sw/source/core/layout/virtoutp.cxx b/sw/source/core/layout/virtoutp.cxx index 1f2e06bf3432..5e53273e34cb 100644 --- a/sw/source/core/layout/virtoutp.cxx +++ b/sw/source/core/layout/virtoutp.cxx @@ -184,7 +184,7 @@ void SwLayVout::Enter( ViewShell *pShell, SwRect &rRect, BOOL bOn ) { Flush(); -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 if( pShell->GetViewOptions()->IsTest3() ) { ++nCount; diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx index cc520ed7365c..98913595f3a7 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -118,7 +118,7 @@ namespace numfunc static sal_Bool bDbgLow = sal_False; #endif -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 sal_Bool SwTxtSizeInfo::IsOptCalm() const { return !GetOpt().IsTest3(); } diff --git a/sw/source/core/text/inftxt.hxx b/sw/source/core/text/inftxt.hxx index 8e3649a4ef08..676c1fba2f1a 100644 --- a/sw/source/core/text/inftxt.hxx +++ b/sw/source/core/text/inftxt.hxx @@ -75,7 +75,7 @@ class SwWrongList; #define DIR_RIGHT2LEFT 2 #define DIR_TOP2BOTTOM 3 -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 #define OPTCALM( rInf ) (rInf).IsOptCalm() #define OPTLOW( rInf ) (rInf).IsOptLow() #define OPTDBG( rInf ) (rInf).IsOptDbg() diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx index 126bb7c4cb42..e06a942551e9 100644 --- a/sw/source/core/text/txtfly.cxx +++ b/sw/source/core/text/txtfly.cxx @@ -1804,7 +1804,7 @@ const SwRect SwContourCache::ContourRect( const SwFmt* pFmt, delete pPolyPolygon; // UPPER_LOWER_TEST -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 const SwRootFrm* pTmpRootFrm = pFmt->getIDocumentLayoutAccess()->GetRootFrm(); if( pTmpRootFrm->GetCurrShell() ) { diff --git a/sw/source/core/text/txtio.cxx b/sw/source/core/text/txtio.cxx index d508199e0234..eaeefba1cb3b 100644 --- a/sw/source/core/text/txtio.cxx +++ b/sw/source/core/text/txtio.cxx @@ -287,9 +287,14 @@ SvStream &operator<<( SvStream &rOs, const SwpHints & ) //$ ostream sal_Bool IsDbg( const SwTxtFrm *pFrm ) { +// Hmm, so IsTest4 etc are defined only if OSL_DEBUG_LEVEL > 1, +// but this file is compiled if DBG_UTIL is defined. So should the IsTest4 etc +// then instead be conditional on DBG_UTIL? Such crack. +#if OSL_DEBUG_LEVEL > 1 if( pFrm && pFrm->GetShell() ) return pFrm->GetShell()->GetViewOptions()->IsTest4(); else +#else return sal_False; } diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index a5e7b159be56..f8c536859e98 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -622,7 +622,7 @@ void ViewShell::LayoutIdle() SET_CURR_SHELL( this ); -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 if( pOpt->IsTest5() ) return; #endif diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx index 5da8c6058b1e..4ea8dea98e6d 100644 --- a/sw/source/filter/html/htmltabw.cxx +++ b/sw/source/filter/html/htmltabw.cxx @@ -1186,7 +1186,7 @@ Writer& OutHTML_SwTblNode( Writer& rWrt, SwTableNode & rNode, const SwHTMLTableLayout *pLayout = rTbl.GetHTMLTableLayout(); -#ifdef DBG_UTIL +#if OSL_DEBUG_LEVEL > 1 ViewShell *pSh; rWrt.pDoc->GetEditShell( &pSh ); if ( pSh && pSh->GetViewOptions()->IsTest1() ) diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx index d4568642e8c6..9189c56a04fa 100644 --- a/sw/source/filter/ww8/docxexport.cxx +++ b/sw/source/filter/ww8/docxexport.cxx @@ -63,6 +63,7 @@ #include <rtl/ustrbuf.hxx> #include <vcl/font.hxx> +using namespace sax_fastparser; using namespace ::comphelper; using namespace ::com::sun::star; @@ -552,9 +553,7 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const char* pFS = m_pFilter->openFragmentStreamWithSerializer( OUStringBuffer().appendAscii( "word/" ).append( aName ).makeStringAndClear(), S( "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" ) ); - pFS->startElementNS( XML_w, XML_hdr, - FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main", - FSEND ); + pFS->startElementNS( XML_w, XML_hdr, MainXmlNamespaces( pFS )); } else { @@ -567,9 +566,7 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const char* pFS = m_pFilter->openFragmentStreamWithSerializer( OUStringBuffer().appendAscii( "word/" ).append( aName ).makeStringAndClear(), S( "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" ) ); - pFS->startElementNS( XML_w, XML_ftr, - FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main", - FSEND ); + pFS->startElementNS( XML_w, XML_ftr, MainXmlNamespaces( pFS )); } // switch the serializer to redirect the output to word/styles.xml @@ -651,14 +648,7 @@ VMLExport& DocxExport::VMLExporter() void DocxExport::WriteMainText() { // setup the namespaces - m_pDocumentFS->startElementNS( XML_w, XML_document, - FSNS( XML_xmlns, XML_o ), "urn:schemas-microsoft-com:office:office", - FSNS( XML_xmlns, XML_r ), "http://schemas.openxmlformats.org/officeDocument/2006/relationships", - FSNS( XML_xmlns, XML_v ), "urn:schemas-microsoft-com:vml", - FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main", - FSNS( XML_xmlns, XML_w10 ), "urn:schemas-microsoft-com:office:word", - FSNS( XML_xmlns, XML_wp ), "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", - FSEND ); + m_pDocumentFS->startElementNS( XML_w, XML_document, MainXmlNamespaces( m_pDocumentFS )); // body m_pDocumentFS->startElementNS( XML_w, XML_body, FSEND ); @@ -678,6 +668,18 @@ void DocxExport::WriteMainText() m_pDocumentFS->endElementNS( XML_w, XML_document ); } +XFastAttributeListRef DocxExport::MainXmlNamespaces( FSHelperPtr serializer ) +{ + FastAttributeList* pAttr = serializer->createAttrList(); + pAttr->add( FSNS( XML_xmlns, XML_o ), "urn:schemas-microsoft-com:office:office" ); + pAttr->add( FSNS( XML_xmlns, XML_r ), "http://schemas.openxmlformats.org/officeDocument/2006/relationships" ); + pAttr->add( FSNS( XML_xmlns, XML_v ), "urn:schemas-microsoft-com:vml" ); + pAttr->add( FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main" ); + pAttr->add( FSNS( XML_xmlns, XML_w10 ), "urn:schemas-microsoft-com:office:word" ); + pAttr->add( FSNS( XML_xmlns, XML_wp ), "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" ); + return XFastAttributeListRef( pAttr ); +} + DocxExport::DocxExport( DocxExportFilter *pFilter, SwDoc *pDocument, SwPaM *pCurrentPam, SwPaM *pOriginalPam ) : MSWordExportBase( pDocument, pCurrentPam, pOriginalPam ), m_pFilter( pFilter ), diff --git a/sw/source/filter/ww8/docxexport.hxx b/sw/source/filter/ww8/docxexport.hxx index 81d2a023858d..2a7fcd024af8 100644 --- a/sw/source/filter/ww8/docxexport.hxx +++ b/sw/source/filter/ww8/docxexport.hxx @@ -33,6 +33,7 @@ #include "wrtww8.hxx" #include <sax/fshelper.hxx> +#include <sax/fastattribs.hxx> #include <rtl/ustring.hxx> #include <cstdio> @@ -157,8 +158,6 @@ protected: virtual void OutputLinkedOLE( const rtl::OUString& ); - - virtual void AppendSection( const SwPageDesc *pPageDesc, const SwSectionFmt* pFmt, ULONG nLnNum ); virtual void SectionBreaksAndFrames( const SwTxtNode& /*rNode*/ ) {} @@ -188,6 +187,9 @@ private: /// Write docProps/core.xml void WriteProperties(); + /// All xml namespaces to be used at the top of any text .xml file (main doc, headers, footers,...) + sax_fastparser::XFastAttributeListRef MainXmlNamespaces( sax_fastparser::FSHelperPtr serializer ); + public: /// FIXME this is temporary, remotely reminding the method of the same /// name in WW8Export. diff --git a/sw/source/filter/ww8/rtfimportfilter.cxx b/sw/source/filter/ww8/rtfimportfilter.cxx index 0e8b2a202327..52b4ae845710 100644 --- a/sw/source/filter/ww8/rtfimportfilter.cxx +++ b/sw/source/filter/ww8/rtfimportfilter.cxx @@ -97,7 +97,9 @@ sal_Bool RtfImportFilter::filter( const uno::Sequence< beans::PropertyValue >& a } RtfReader aReader; - return aReader.Read(pStream, *pDoc, aURL, *pCurPam) == 0; + sal_Bool bRet = aReader.Read(pStream, *pDoc, aURL, *pCurPam) == 0; + delete pStream; + return bRet; } diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 93af579ed5d8..9b4a908887d3 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -2573,7 +2573,10 @@ void WW8TabDesc::CreateSwTable() else { if (nPreferredWidth) - nLeft = pIo->maSectionManager.GetTextAreaWidth() - nPreferredWidth - nOrgDxaLeft; + { + nLeft = pIo->maSectionManager.GetTextAreaWidth(); + nLeft = nLeft - nPreferredWidth - nOrgDxaLeft; + } else nLeft = -GetMinLeft(); } diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx index 0be0c4e21f2c..1dad568b16b0 100644 --- a/sw/source/ui/dbui/dbinsdlg.cxx +++ b/sw/source/ui/dbui/dbinsdlg.cxx @@ -1181,7 +1181,7 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection, } } catch(Exception& -#if OSL_DEBUG_LEVEL > 1 +#ifdef DBG_UTIL aExcept #endif ) diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx index ac13484457bc..b3b65e6eb25c 100644 --- a/sw/source/ui/dbui/mmoutputpage.cxx +++ b/sw/source/ui/dbui/mmoutputpage.cxx @@ -1219,7 +1219,7 @@ IMPL_LINK(SwMailMergeOutputPage, SendDocumentsHdl_Impl, PushButton*, pButton) } xTempDocShell->DoClose(); -#if OSL_DEBUG_LEVEL > 1 +#ifdef DBG_UTIL sal_Int32 nTarget = #endif rConfigItem.MoveResultSet(rInfo.nDBRow); diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 50b2677601f4..ad74b08ce44b 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -583,7 +583,7 @@ long AbstractMailMergeWizard_Impl::GetResult() return pDlg->GetResult(); } -#if OSL_DEBUG_LEVEL > 1 +#ifdef DBG_UTIL IMPL_LINK( AbstractMailMergeWizard_Impl, EndDialogHdl, SwMailMergeWizard*, pDialog ) #else IMPL_LINK( AbstractMailMergeWizard_Impl, EndDialogHdl, SwMailMergeWizard*, EMPTYARG ) diff --git a/sw/source/ui/docvw/srcedtw.cxx b/sw/source/ui/docvw/srcedtw.cxx index d1e097d2d63c..9b414a528464 100644 --- a/sw/source/ui/docvw/srcedtw.cxx +++ b/sw/source/ui/docvw/srcedtw.cxx @@ -763,7 +763,7 @@ void SwSrcEditWindow::ImpDoHighlight( const String& rSource, USHORT nLineOff ) // optimiert das die TextEngine. USHORT nLastEnd = 0; -#if OSL_DEBUG_LEVEL > 1 +#ifdef DBG_UTIL USHORT nLine = aPortionList[0].nLine; #endif for ( USHORT i = 0; i < nCount; i++ ) diff --git a/sysui/desktop/macosx/Info.plist b/sysui/desktop/macosx/Info.plist index cf04e8086afe..8100df25d2a1 100644 --- a/sysui/desktop/macosx/Info.plist +++ b/sysui/desktop/macosx/Info.plist @@ -1390,7 +1390,7 @@ <key>CFBundleShortVersionString</key> <string>${ABOUTBOXPRODUCTVERSION}</string> <key>CFBundleIdentifier</key> - <string>org.openoffice.script</string> + <string>org.libreoffice.script</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> @@ -1398,7 +1398,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> - <string>OOo2</string> + <string>LibO</string> <key>LSRequiresCarbon</key> <string>1</string> <key>NSPrincipalClass</key> diff --git a/sysui/desktop/macosx/makefile.mk b/sysui/desktop/macosx/makefile.mk index 059b3b87bb46..9d551600d7d2 100644 --- a/sysui/desktop/macosx/makefile.mk +++ b/sysui/desktop/macosx/makefile.mk @@ -46,13 +46,8 @@ ZIP1TARGET = osxicons ZIP1DIR = ../icons ZIP1LIST := $(shell $(PERL) -w list_icons.pl < Info.plist) -.IF "$(GUIBASE)"!="aqua" -CREATOR_TYPE=OOo2 -EXECUTABLE=droplet -.ELSE -CREATOR_TYPE=OOO2 +CREATOR_TYPE=LIBO EXECUTABLE=soffice -.ENDIF .IF "$(WITH_LANG)"!="" ULFDIR:=$(COMMONMISC)$/desktopshare diff --git a/tools/bootstrp/command.cxx b/tools/bootstrp/command.cxx index e439cc523c26..138b5ffcffaf 100644 --- a/tools/bootstrp/command.cxx +++ b/tools/bootstrp/command.cxx @@ -73,7 +73,7 @@ #include <sys/types.h> #include <unistd.h> #if ( defined NETBSD ) || defined (FREEBSD) || defined (AIX) \ - || defined (HPUX) || defined (MACOSX) + || defined (HPUX) || defined (MACOSX) || defined (OPENBSD) #include <sys/wait.h> #else #include <wait.h> diff --git a/tools/inc/tools/inetdef.hxx b/tools/inc/tools/inetdef.hxx index 49cb612d13b6..06bc4e7ab78c 100644 --- a/tools/inc/tools/inetdef.hxx +++ b/tools/inc/tools/inetdef.hxx @@ -59,6 +59,10 @@ #define TOOLS_INETDEF_OS "FreeBSD/i386" #elif defined FREEBSD && defined X86_64 #define TOOLS_INETDEF_OS "FreeBSD/amd64" +#elif defined OPENBSD && defined X86 +#define TOOLS_INETDEF_OS "OpenBSD/i386" +#elif defined OPENBSD && defined X86_64 +#define TOOLS_INETDEF_OS "OpenBSD/amd64" #elif defined SINIX #define TOOLS_INETDEF_OS "SINIX" #else // AIX, HPUX, SOLARIS, ... diff --git a/tools/inc/tools/prex.h b/tools/inc/tools/prex.h index 49371f8d6a86..6a13f88f53e6 100644 --- a/tools/inc/tools/prex.h +++ b/tools/inc/tools/prex.h @@ -48,7 +48,7 @@ extern "C" { #endif -#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) || defined(NETBSD) // should really check for xfree86 or for X11R6.1 and higher +#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) || defined(NETBSD) || defined(OPENBSD) // should really check for xfree86 or for X11R6.1 and higher #define __XKeyboardExtension__ 1 #else #define __XKeyboardExtension__ 0 diff --git a/tools/inc/tools/solar.h b/tools/inc/tools/solar.h index ea1ee4230447..cde9e178812b 100644 --- a/tools/inc/tools/solar.h +++ b/tools/inc/tools/solar.h @@ -311,6 +311,7 @@ template<typename T> inline T Abs(T a) { return (a>=0?a:-a); } #define SYSTEM_UNXMACXI 33 #define SYSTEM_OS2GCCI 34 #define SYSTEM_UNXBSDX 35 +#define SYSTEM_UNXOBSD 36 #define SYSTEM_WNTGCCI 99 #if defined WNT @@ -380,6 +381,8 @@ template<typename T> inline T Abs(T a) { return (a>=0?a:-a); } #define __DLLEXTENSION "mxp.dylib" #elif defined MACOSX && defined X86 #define __DLLEXTENSION "mxi.dylib" +#elif defined OPENBSD + #define __DLLEXTENSION "ob.so" #else #define __DLLEXTENSION ".so" #endif diff --git a/tools/qa/makefile.mk b/tools/qa/makefile.mk index 67d8f621fabd..7e8720efef71 100644 --- a/tools/qa/makefile.mk +++ b/tools/qa/makefile.mk @@ -32,6 +32,13 @@ ENABLE_EXCEPTIONS = TRUE .INCLUDE: settings.mk +#building with stlport, but cppunit was not built with stlport +.IF "$(USE_SYSTEM_STL)"!="YES" +.IF "$(SYSTEM_CPPUNIT)"=="YES" +CFLAGSCXX+=-DADAPT_EXT_STL +.ENDIF +.ENDIF + CFLAGSCXX += $(CPPUNIT_CFLAGS) DLLPRE = # no leading "lib" on .so files diff --git a/tools/qa/test_pathutils.cxx b/tools/qa/test_pathutils.cxx index 99046a6211c9..fcd838767425 100644 --- a/tools/qa/test_pathutils.cxx +++ b/tools/qa/test_pathutils.cxx @@ -31,9 +31,11 @@ #include <cwchar> +#include "preextstl.h" #include <cppunit/TestFixture.h> #include <cppunit/extensions/HelperMacros.h> #include <cppunit/plugin/TestPlugIn.h> +#include "postextstl.h" #include "tools/pathutils.hxx" diff --git a/tools/source/fsys/unx.cxx b/tools/source/fsys/unx.cxx index 7de396d9c386..0ed7dd4d8f8d 100644 --- a/tools/source/fsys/unx.cxx +++ b/tools/source/fsys/unx.cxx @@ -45,7 +45,7 @@ extern "C" int mntctl( int cmd, size_t size, char* buf ); #elif defined(NETBSD) #include <sys/mount.h> -#elif defined(FREEBSD) || defined(MACOSX) +#elif defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD) #elif defined DECUNIX struct mnttab { @@ -95,7 +95,8 @@ struct mymnttab }; -#if defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) +#if defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) || \ + defined(OPENBSD) BOOL GetMountEntry(dev_t /* dev */, struct mymnttab * /* mytab */ ) { DBG_WARNING( "Sorry, not implemented: GetMountEntry" ); diff --git a/tools/source/stream/strmunx.cxx b/tools/source/stream/strmunx.cxx index 5734cad12c35..5e03bcf2b237 100644 --- a/tools/source/stream/strmunx.cxx +++ b/tools/source/stream/strmunx.cxx @@ -210,7 +210,8 @@ static sal_uInt32 GetSvError( int nErrno ) { 0, SVSTREAM_OK }, { EACCES, SVSTREAM_ACCESS_DENIED }, { EBADF, SVSTREAM_INVALID_HANDLE }, -#if defined( RS6000 ) || defined( ALPHA ) || defined( HP9000 ) || defined( NETBSD ) || defined(FREEBSD) || defined(MACOSX) || defined(__FreeBSD_kernel__) || defined ( AIX ) +#if defined( RS6000 ) || defined( ALPHA ) || defined( HP9000 ) || defined( NETBSD ) || defined(FREEBSD) || defined(MACOSX) || \ + defined(OPENBSD) || defined(__FreeBSD_kernel__) || defined ( AIX ) { EDEADLK, SVSTREAM_LOCKING_VIOLATION }, #else { EDEADLOCK, SVSTREAM_LOCKING_VIOLATION }, @@ -224,7 +225,8 @@ static sal_uInt32 GetSvError( int nErrno ) { EAGAIN, SVSTREAM_LOCKING_VIOLATION }, { EISDIR, SVSTREAM_PATH_NOT_FOUND }, { ELOOP, SVSTREAM_PATH_NOT_FOUND }, -#if ! defined( RS6000 ) && ! defined( ALPHA ) && ! defined( NETBSD ) && ! defined (FREEBSD) && ! defined (MACOSX) && ! defined(__FreeBSD_kernel__) +#if ! defined( RS6000 ) && ! defined( ALPHA ) && ! defined( NETBSD ) && ! defined (FREEBSD) && ! defined (MACOSX) && \ + !defined(OPENBSD) && ! defined(__FreeBSD_kernel__) { EMULTIHOP, SVSTREAM_PATH_NOT_FOUND }, { ENOLINK, SVSTREAM_PATH_NOT_FOUND }, #endif diff --git a/vcl/unx/inc/dtint.hxx b/vcl/unx/inc/dtint.hxx index 064916e7ac12..b6f7aa4b9350 100644 --- a/vcl/unx/inc/dtint.hxx +++ b/vcl/unx/inc/dtint.hxx @@ -37,7 +37,7 @@ class SalBitmap; class SalDisplay; class AllSettings; -#ifndef _XLIB_H_ +#if !defined(_XLIB_H_) && !defined(_X11_XLIB_H_) // forwards from X struct Display; struct XEvent; diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx index b5d789b8521b..e27a9974c872 100644 --- a/vcl/unx/inc/saldata.hxx +++ b/vcl/unx/inc/saldata.hxx @@ -47,7 +47,8 @@ class SalPrinter; DECLARE_LIST( SalDisplays, SalDisplay* ) -#if defined SCO || defined LINUX || defined NETBSD || defined AIX || defined HPUX || defined FREEBSD +#if defined SCO || defined LINUX || defined NETBSD || defined AIX || \ + defined HPUX || defined FREEBSD || defined OPENBSD #include <pthread.h> #else typedef unsigned int pthread_t; diff --git a/vcl/unx/inc/salunx.h b/vcl/unx/inc/salunx.h index 89732db6c91d..9956537a8b80 100644 --- a/vcl/unx/inc/salunx.h +++ b/vcl/unx/inc/salunx.h @@ -30,7 +30,8 @@ #define _SALUNX_H // -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -#if defined SCO || defined LINUX || defined HPUX || defined FREEBSD || defined NETBSD +#if defined SCO || defined LINUX || defined HPUX || defined FREEBSD || \ + defined NETBSD || defined OPENBSD #include <sys/time.h> #elif defined AIX #include <time.h> diff --git a/vcl/unx/kde/kdedata.cxx b/vcl/unx/kde/kdedata.cxx index aeac873aea5f..a9be7668e6b9 100644 --- a/vcl/unx/kde/kdedata.cxx +++ b/vcl/unx/kde/kdedata.cxx @@ -120,15 +120,15 @@ void KDEXLib::Init() pInputMethod->SetLocale(); XrmInitialize(); - KAboutData *kAboutData = new KAboutData( "OpenOffice.org", - I18N_NOOP( "OpenOffice.org" ), + KAboutData *kAboutData = new KAboutData( "LibreOffice", + I18N_NOOP( "LibreOffice" ), "1.1.0", - I18N_NOOP( "OpenOffice.org with KDE Native Widget Support." ), + I18N_NOOP( "LibreOffice with KDE Native Widget Support." ), KAboutData::License_LGPL, "(c) 2003, 2004 Novell, Inc", - I18N_NOOP( "OpenOffice.org is an office suite.\n" ), - "http://kde.openoffice.org/index.html", - "dev@kde.openoffice.org"); + I18N_NOOP( "LibreOffice is an office suite.\n" ), + "http://libreoffice.org", + "libreoffice@lists.freedesktop.org"); kAboutData->addAuthor( "Jan Holesovsky", I18N_NOOP( "Original author and maintainer of the KDE NWF." ), "kendy@artax.karlin.mff.cuni.cz", diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx index 94fe2378c887..ea7c7fd64cac 100644 --- a/vcl/unx/kde4/KDEXLib.cxx +++ b/vcl/unx/kde4/KDEXLib.cxx @@ -105,16 +105,16 @@ void KDEXLib::Init() pInputMethod->SetLocale(); XrmInitialize(); - KAboutData *kAboutData = new KAboutData("OpenOffice.org", + KAboutData *kAboutData = new KAboutData("LibreOffice", "kdelibs4", - ki18n( "OpenOffice.org" ), - "3.0.0", - ki18n( "OpenOffice.org with KDE Native Widget Support." ), + ki18n( "LibreOffice" ), + "3.3.0", + ki18n( "LibreOffice with KDE Native Widget Support." ), KAboutData::License_LGPL, ki18n( "Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Novell, Inc"), - ki18n( "OpenOffice.org is an office suite.\n" ), - "http://kde.openoffice.org/index.html", - "dev@kde.openoffice.org" ); + ki18n( "LibreOffice is an office suite.\n" ), + "http://libreoffice.org", + "libreoffice@lists.freedesktop.org" ); kAboutData->addAuthor( ki18n( "Jan Holesovsky" ), ki18n( "Original author and maintainer of the KDE NWF." ), diff --git a/vcl/unx/source/app/i18n_ic.cxx b/vcl/unx/source/app/i18n_ic.cxx index 59fb02f1919a..48f6c53b5c5c 100644 --- a/vcl/unx/source/app/i18n_ic.cxx +++ b/vcl/unx/source/app/i18n_ic.cxx @@ -334,7 +334,7 @@ SalI18N_InputContext::SalI18N_InputContext ( SalFrame *pFrame ) : if ( mnPreeditStyle != XIMPreeditNone ) { -#if defined LINUX || defined FREEBSD || defined NETBSD +#if defined LINUX || defined FREEBSD || defined NETBSD || defined OPENBSD if ( mpPreeditAttributes != NULL ) #endif mpAttributes = XVaAddToNestedList( mpAttributes, @@ -342,7 +342,7 @@ SalI18N_InputContext::SalI18N_InputContext ( SalFrame *pFrame ) : } if ( mnStatusStyle != XIMStatusNone ) { -#if defined LINUX || defined FREEBSD || defined NETBSD +#if defined LINUX || defined FREEBSD || defined NETBSD || defined OPENBSD if ( mpStatusAttributes != NULL ) #endif mpAttributes = XVaAddToNestedList( mpAttributes, diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx index 8a209d126a75..f2eecf0d9cbd 100644 --- a/vcl/unx/source/app/saldisp.cxx +++ b/vcl/unx/source/app/saldisp.cxx @@ -894,7 +894,7 @@ void SalDisplay::Init() sscanf( pProperties, "%li", &nProperties_ ); else { -#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD +#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD || defined OPENBSD nProperties_ |= PROPERTY_FEATURE_Maximize; #endif // Server Bugs & Properties @@ -920,7 +920,7 @@ void SalDisplay::Init() if( GetServerVendor() == vendor_xfree ) { nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor; -#if defined LINUX || defined FREEBSD +#if defined LINUX || defined FREEBSD || defined OPENBSD // otherwm and olwm are a kind of default, which are not detected // carefully. if we are running linux (i.e. not netbsd) on an xfree // display, fvwm is most probable the wm to choose, confusing with mwm diff --git a/vcl/unx/source/dtrans/X11_selection.cxx b/vcl/unx/source/dtrans/X11_selection.cxx index 9d68974eced8..18d120d4961b 100644 --- a/vcl/unx/source/dtrans/X11_selection.cxx +++ b/vcl/unx/source/dtrans/X11_selection.cxx @@ -42,7 +42,7 @@ #include <X11/keysym.h> #include <X11/Xutil.h> #include "tools/postx.h" -#if defined(LINUX) || defined(NETBSD) || defined (FREEBSD) +#if defined(LINUX) || defined(NETBSD) || defined (FREEBSD) || defined(OPENBSD) #include <sys/poll.h> #else #include <poll.h> diff --git a/vcl/unx/source/printer/printerinfomanager.cxx b/vcl/unx/source/printer/printerinfomanager.cxx index ecf3f78a49cb..0fff5b590b98 100644 --- a/vcl/unx/source/printer/printerinfomanager.cxx +++ b/vcl/unx/source/printer/printerinfomanager.cxx @@ -1207,7 +1207,7 @@ struct SystemCommandParameters tokenHandler pHandler; }; -#if ! (defined(LINUX) || defined(NETBSD) || defined(FREEBSD)) +#if ! (defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)) static void lpgetSysQueueTokenHandler( const std::list< rtl::OString >& i_rLines, std::list< PrinterInfoManager::SystemPrintQueue >& o_rQueues, @@ -1352,7 +1352,7 @@ static void standardSysQueueTokenHandler( static const struct SystemCommandParameters aParms[] = { - #if defined(LINUX) || defined(NETBSD) || defined(FREEBSD) + #if defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) { "/usr/sbin/lpc status", "lpr -P \"(PRINTER)\"", "", ":", 0, standardSysQueueTokenHandler }, { "lpc status", "lpr -P \"(PRINTER)\"", "", ":", 0, standardSysQueueTokenHandler }, { "LANG=C;LC_ALL=C;export LANG LC_ALL;lpstat -s", "lp -d \"(PRINTER)\"", "system for ", ": ", 1, standardSysQueueTokenHandler } diff --git a/vcl/util/makefile.mk b/vcl/util/makefile.mk index e8221e41ae3a..983530c58206 100644 --- a/vcl/util/makefile.mk +++ b/vcl/util/makefile.mk @@ -332,7 +332,8 @@ SHL2STDLIBS+=`pkg-config --libs xrender` .IF "$(GUIBASE)"=="unx" SHL2STDLIBS += -lXext -lSM -lICE -lX11 -.IF "$(OS)"!="MACOSX" && "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" +.IF "$(OS)"!="MACOSX" && "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" && \ + && "$(OS)"!="OPENBSD" # needed by salprnpsp.cxx SHL2STDLIBS+= -ldl .ENDIF |