Files
desktop-sdk/HtmlFile/Internal/src/client_renderer_wrapper.cpp
2016-11-25 14:23:24 +03:00

483 lines
66 KiB
C++

/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "cefclient/renderer/client_renderer.h"
#include <sstream>
#include <string>
#include <map>
#include "include/cef_dom.h"
#include "include/wrapper/cef_helpers.h"
#include "include/wrapper/cef_message_router.h"
#include "../../../core/DesktopEditor/common/File.h"
#include "../../../core/DesktopEditor/common/Directory.h"
#include "../../../core/DesktopEditor/raster/BgraFrame.h"
#include "../../../core/DesktopEditor/raster/ImageFileFormatChecker.h"
#include "./client_app.h"
#include "../../../ChromiumBasedEditors/lib/src/filedownloader.h"
//#define ASC_HTML_FILE_INTERNAL_LOG
namespace asc_client_renderer
{
class CAscEditorNativeV8Handler : public CefV8Handler
{
public:
std::wstring m_sDocumentPath;
std::map<std::wstring, std::wstring> m_mapImages;
bool* sync_command_check;
std::string m_sPasteFrameId;
CAscEditorNativeV8Handler()
{
m_sDocumentPath = L"";
sync_command_check = NULL;
}
std::wstring GetImagePath(const std::wstring& sUrl, bool bIsBase64 = false)
{
std::map<std::wstring, std::wstring>::iterator iter = m_mapImages.find(sUrl);
if (iter != m_mapImages.end())
{
return iter->second;
}
std::wstring sTmpPath = L"";
if (CFileDownloader::IsNeedDownload(sUrl))
{
CFileDownloader oDownloader(sUrl, false);
oDownloader.Start( 0 );
while ( oDownloader.IsRunned() )
{
NSThreads::Sleep( 10 );
}
if ( oDownloader.IsFileDownloaded() )
{
sTmpPath = oDownloader.GetFilePath();
}
else
{
std::wstring strFileName = oDownloader.GetFilePath();
NSFile::CFileBinary::Remove(strFileName);
}
}
else if (bIsBase64)
{
std::wstring::size_type nBase64Start = sUrl.find(L"base64,");
if (nBase64Start != std::wstring::npos)
{
int nStartIndex = nBase64Start + 7;
int nCount = sUrl.length() - nStartIndex;
char* pData = new char[nCount];
const wchar_t* pDataSrc = sUrl.c_str();
for (int i = 0; i < nCount; ++i)
pData[i] = pDataSrc[i + nStartIndex];
BYTE* pDataDecode = NULL;
int nLenDecode = 0;
NSFile::CBase64Converter::Decode(pData, nCount, pDataDecode, nLenDecode);
RELEASEARRAYOBJECTS(pData);
sTmpPath = NSFile::CFileBinary::CreateTempFileWithUniqueName(NSFile::CFileBinary::GetTempPath(), L"IMG");
if (NSFile::CFileBinary::Exists(sTmpPath))
NSFile::CFileBinary::Remove(sTmpPath);
NSFile::CFileBinary oFile;
if (oFile.CreateFileW(sTmpPath))
{
oFile.WriteFile(pDataDecode, (DWORD)nLenDecode);
oFile.CloseFile();
}
RELEASEARRAYOBJECTS(pDataDecode);
}
}
CImageFileFormatChecker oChecker;
std::wstring sNoConst = sTmpPath.empty() ? sUrl : sTmpPath;
bool bIsPNG = oChecker.isPngFile(sNoConst);
CBgraFrame oFrame;
bool bIsOpen = oFrame.OpenFile(sNoConst);
std::wstring sDst = L"image" + std::to_wstring((int)(m_mapImages.size() + 1)) + (bIsPNG ? L".png" : L".jpg");
if (bIsOpen)
oFrame.SaveFile(m_sDocumentPath + L"/media/" + sDst, bIsPNG ? 4 : 3);
m_mapImages.insert(std::pair<std::wstring, std::wstring>(sUrl, sDst));
if (!sTmpPath.empty())
NSFile::CFileBinary::Remove(sTmpPath);
return sDst;
}
virtual bool Execute(const CefString& name,
CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval,
CefString& exception) OVERRIDE
{
if (name == "InitSDK")
{
std::string sDivId = "editor_sdk";
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
{
sDivId = val->GetStringValue().ToString();
}
std::string sCode = "var _asc_sdk_value = new window.asc_docs_api({'id-view':\"" + sDivId + "\" });window.editor.CreateComponents();";
CefRefPtr<CefFrame> _frame = CefV8Context::GetCurrentContext()->GetFrame();
_frame->ExecuteJavaScript(sCode, _frame->GetURL(), 0);
return true;
}
else if (name == "OpenEmptyDocument")
{
std::string sEmptyDocument = "DOCY;v5;36996;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";
sEmptyDocument += "AAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAnAQAAAEEAAAAMwAwAAIKAAAATABpAG4AZQBkAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAA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";
sEmptyDocument += "AAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPy29sCBgAAAAAATwAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAwCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAACyBAAAAQQAAAAzADMAAiAAAABMAGkAbgBlAGQAIAAtACAAQQBjAGMAZQBuAHQAIAAzAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAsgQAAAEEAAAAMwA0AAIgAAAATABpAG4AZQBkACAALQAgAEEAYwBjAGUAbgB0ACAANAAJAQAAAAQDBAAAAGEAMQALBAAAAGMAAAAFAAAAAAYbAAAACQYPAAAACgWghgEACwEBDQUAAAAAGwYAAAAAB0sAAAADBAAAAAAAAAAFOAAAAAAJAAAAAAEAAgQBAAAAAQkAAAAAAQACBAAAAAACCQAAAAABAAIEAQAAAAMJAAAAAAEAAgQAAAAABgAAAAAPAAAAABAGAAAAAgYAAAAAEeIDAAAAQQAAAAEBAAAAAAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAECAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABPAAAAAQEAAAACAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAAEAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAFAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAHAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABBAAAAAQEAAAAJAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAsCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAKAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAADAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAALIEAAABBAAAADMANQACIAAAAEwAaQBuAGUAZAAgAC0AIABBAGMAYwBlAG4AdAAgADUACQEAAAAEAwQAAABhADEACwQAAABjAAAABQAAAAAGGwAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAAdLAAAAAwQAAAAAAAAABTgAAAAACQAAAAABAAIEAQAAAAEJAAAAAAEAAgQAAAAAAgkAAAAAAQACBAEAAAADCQAAAAABAAIEAAAAAAYAAAAADwAAAAAQBgAAAAIGAAAAABHiAwAAAEEAAAABAQAAAAACAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAATwAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPa7vMCBgAAAAAATwAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAA";
sEmptyDocument += "AAQYIAAAAAAEAAQPa7vMCBgAAAAAATwAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOSzdwCBgAAAAAATwAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOSzdwCBgAAAAAATwAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOSzdwCBgAAAAAATwAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOSzdwCBgAAAAAAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAwCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAACyBAAAAQQAAAAzADYAAiAAAABMAGkAbgBlAGQAIAAtACAAQQBjAGMAZQBuAHQAIAA2AAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED/enpAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED/enpAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED+r+PAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED+r+PAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED+r+PAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED+r+PAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAA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";
sEmptyDocument += "AAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABaAAAAAQEAAAAEAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABh8AAAACBhkAAAACFAAAAAADNl+RAQUAAAAAAgUPNgEAAwEBAFoAAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGHwAAAAIGGQAAAAMUAAAAAAM2X5EBBQAAAAACBQ82AQADAQEAWgAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYfAAAAAgYZAAAAABQAAAAAAzZfkQEFAAAAAAIFDzYBAAMBAQBaAAAAAQEAAAAHAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABh8AAAACBhkAAAABFAAAAAADNl+RAQUAAAAAAgUPNgEAAwEBAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAF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";
sEmptyDocument += "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UUAAAAAAO23egBBQAAAAACBeZEAAADAQEPAAAAABAGAAAAAgYAAAAAEfIDAAAAQQAAAAEBAAAAAAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAECAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAACAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAFoAAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGHwAAAAIGGQAAAAIUAAAAAAMxhJsBBQAAAAACBQ82AQADAQEAWgAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYfAAAAAgYZAAAAAxQAAAAAAzGEmwEFAAAAAAIFDzYBAAMBAQBaAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABh8AAAACBhkAAAAAFAAAAAADMYSbAQUAAAAAAgUPNgEAAwEBAFoAAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGHwAAAAIGGQAAAAEUAAAAAAMxhJsBBQAAAAACBQ82AQADAQEAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAwCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABeBQAAAQQAAAA0ADMAAiYAAABCAG8AcgBkAGUAcgBlAGQAIAAtACAAQQBjAGMAZQBuAHQAIAA2AAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAH4QAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGlgAAAAAUAAAAAAP71LQBBQAAAAACBeZEAAADAQEBFAAAAAAD+9S0AQUAAAAAAgXmRAAAAwEBAhQAAAAAA/vUtAEFAAAAAAIF5kQAAAMBAQMUAAAAAAP71LQBBQAAAAACBeZEAAADAQEEFAAAAAAD+9S0AQUAAAAAAgXmRAAAAwEBBRQAAAAAA/vUtAEFAAAAAAIF5kQAAAMBAQ8AAAAAEAYAAAACBgAAAAAR8gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAWgAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYfAAAAAgYZAAAAAhQAAAAAA+NsCgEFAAAAAAIFDzYBAAMBAQBaAAAAAQEAAAAFAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAA";
sEmptyDocument += "AABh8AAAACBhkAAAADFAAAAAAD42wKAQUAAAAAAgUPNgEAAwEBAFoAAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGHwAAAAIGGQAAAAAUAAAAAAPjbAoBBQAAAAACBQ82AQADAQEAWgAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYfAAAAAgYZAAAAARQAAAAAA+NsCgEFAAAAAAIFDzYBAAMBAQBBAAAAAQEAAAAJAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAsCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAKAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAADAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEgFAAABBAAAADQANAACIAAAAEIAbwByAGQAZQByAGUAZAAgACYAIABMAGkAbgBlAGQACQEAAAAEAwQAAABhADEACwQAAABjAAAABQAAAAAGGwAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAAfhAAAAAwQAAAAAAAAABTgAAAAACQAAAAABAAIEAQAAAAEJAAAAAAEAAgQAAAAAAgkAAAAAAQACBAEAAAADCQAAAAABAAIEAAAAAAaWAAAAABQAAAAAAwAAAAEFAAAAAAIF5kQAAAMBAQEUAAAAAAMAAAABBQAAAAACBeZEAAADAQECFAAAAAADAAAAAQUAAAAAAgXmRAAAAwEBAxQAAAAAAwAAAAEFAAAAAAIF5kQAAAMBAQQUAAAAAAMAAAABBQAAAAACBeZEAAADAQEFFAAAAAADAAAAAQUAAAAAAgXmRAAAAwEBDwAAAAAQBgAAAAIGAAAAABHiAwAAAEEAAAABAQAAAAACAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAATwAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZ2dkCBgAAAAAATwAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZ2dkCBgAAAAAATwAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOmpqYCBgAAAAAATwAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOmpqYCBgAAAAAATwAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOmpqYCBgAAAAAATwAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQOmpqYCBgAAAAAAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAA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";
sEmptyDocument += "AAA5Q2NAEFAAAAAAIF5kQAAAMBAQ8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED8tvbAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED8tvbAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2ZWUAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2ZWUAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2ZWUAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2ZWUAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAA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";
sEmptyDocument += "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";
sEmptyDocument += "AAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAWQAAAAEEAAAAYQAyAAIOAAAATgBvACAATABpAHMAdAAJAQAAAAIIAQAAAAELBAAAAGMAAAANAQAAAAEOAQAAAAEFAAAAAAYSAAAAAQYAAAAACQYAAAAAGwYAAAAAAIUAAAABBAAAAGEAMwACDAAAAEYAbwBvAHQAZQByAAkBAAAAAwMCAAAAYQALBAAAAGMAAAAOAQAAAAEFAAAAAAZFAAAAAQYAAAAACQYPAAAACgWghgEACwEBDQUAAAAAEQYeAAAAEgYJAAAAFAECEwVs4X0AEgYJAAAAFAEBEwW8yfsAGwYAAAAAAIUAAAABBAAAAGEANQACDAAAAEgAZQBhAGQAZQByAAkBAAAAAwMCAAAAYQALBAAAAGMAAAAOAQAAAAEFAAAAAAZFAAAAAQYAAAAACQYPAAAACgWghgEACwEBDQUAAAAAEQYeAAAAEgYJAAAAFAECEwVs4X0AEgYJAAAAFAEBEwW8yfsAGwYAAAAAAGIAAAABBAAAAGEANwACFAAAAE4AbwAgAFMAcABhAGMAaQBuAGcACQEAAAADCgEAAAABCwQAAAABAAAABQAAAAAGIQAAAAEGAAAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAADJAAAAAQQAAABhADgAAhAAAABTAHUAYgB0AGkAdABsAGUACQEAAAADAwIAAABhAAQCAAAAYQAKAQAAAAELBAAAAAsAAAAFVwAAAAEBAQQGCgAAAEEAcgBpAGEAbAAFBgoAAABBAHIAaQBhAGwABwYKAAAAQQByAGkAYQBsAAYGCgAAAEEAcgBpAGEAbAAIBDQAAAAJA0RERBUBARYENAAAAAYnAAAAFgYGAAAAFwQBAAAAAQYAAAAACQYJAAAACgWghgEACwEBGwYAAAAAAAsBAAABBAAAAGEAYQACGgAAAEkAbgB0AGUAbgBzAGUAIABRAHUAbwB0AGUACQEAAAADAwIAAABhAAQCAAAAYQAKAQAAAAELBAAAAB4AAAAFHQAAAAABAQEBAQgEEwAAAAkDRkZGFAEBFQEBFgQTAAAABpkAAAABBgwAAAACBb1CDwADBb1CDwAFAQMJBgAAAAAOBg4AAAAAAQABA+7u7gIGAAAAABsGZAAAAAAUAAAAAAOAgIABBTcnAgACBeZEAAADAQEBFAAAAAADgICAAQXNiQAAAgXmRAAAAwEBAhQAAAAAA4CAgAEFNycCAAIF5kQAAAMBAQMUAAAAAAOAgIABBc2JAAACBeZEAAADAQEA8wAAAAEGAAAAYQBmADIAAgoAAABUAGkAdABsAGUACQEAAAADAwIAAABhAAQCAAAAYQAKAQAAAAELBAAAAAoAAAAFYAAAAAABAQQGCgAAAEEAcgBpAGEAbAAFBgoAAABBAHIAaQBhAGwABwYKAAAAQQByAGkAYQBsAAYGCgAAAEEAcgBpAGEAbAAIBEgAAAAJAwAAABQBARYESAAAABwGAwAAAAEBDwZMAAAAAAEBAQYAAAAACQYVAAAACgWghgEACwEBDAUOEwgADQU3JwIAGwYiAAAAAx0AAAAAAwAAAAEFAAAAAAIFaZ0BAAQGAwAAAAEBDwMBAQBtAAAAAQYAAABhAGYANQACHAAAAEwAaQBzAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAJAQAAAAMDAgAAAGEACgEAAAABCwQAAAAiAAAABQAAAAAGGwAAAAABAQEGBgAAAAIF8GATAAkGAAAAABsGAAAAAI8AAAAAQAAAAAEYAAAAAQYAAAAACQYAAAAAGgYAAAAAGwYAAAAAAh4AAAAFCgAAAAEAAAAACAAAAAAFCgAAAAEAAAAACAAAAAAERQAAAAAPAAAAAAWdckABAQUIMcUBAgEAASQAAAAABTfILQABBXqFHgACBangFgADBXqFHgAEBSUVEwAFBSUVEwACAwAAAAIBAwAAAADLBwAAA8YHAAAUwQcAAPoADAAAAE8AZgBmAGkAYwBlACAAVABoAGUAbQBlAPsAlAcAAAAVAQAA+gAGAAAATwBmAGYAaQBjAGUA+wANAAAAAQgAAAD6AFsBmwLV+wENAAAAAQgAAAD6AO0BfQIx+wINAAAAAQgAAAD6AKUBpQKl+wMNAAAAAQgAAAD6AP8BwAIA+wQNAAAAAQgAAAD6AEQBcgLE+wUNAAAAAQgAAAD6AHABrQJH+wgmAAAABCEAAAD6AAoAAAB3AGkAbgBkAG8AdwBUAGUAeAB0AAEAAgADAPsJDQAAAAEIAAAA+gBEAVQCavsKDQAAAAEIAAAA+gCVAU8CcvsLDQAAAAEIAAAA+gAFAWMCwfsMHgAAAAQZAAAA+gAGAAAAdwBpAG4AZABvAHcAAf8C/wP/+w0NAAAAAQgAAAD6AOcB5gLm+wG1AAAA+gAQAAAATwBmAGYAaQBjAGUAIABDAGwAYQBzAHMAaQBjACAAMgD7AEIAAAAAEQAAAPoDBQAAAEEAcgBpAGEAbAD7AREAAAD6AwUAAABBAHIAaQBhAGwA+wIRAAAA+gMFAAAAQQByAGkAYQBsAPsBQgAAAAARAAAA+gMFAAAAQQByAGkAYQBsAPsBEQAAAPoDBQAAAEEAcgBpAGEAbAD7AhEAAAD6AwUAAABBAHIAaQBhAGwA+wK7BQAA+gAGAAAATwBmAGYAaQBjAGUA+wB+AgAAAwAAAAATAAAAAw4AAAAACQAAAAMEAAAA+gAO+wApAQAABCQBAAD6+wAPAQAAAwAAAABUAAAA+gAAAAAA+wBIAAAAA0MAAAD6AA77ADoAAAACAAAAARQAAAD6AAQAAAB0AGkAbgB0AAFQwwAA+wEYAAAA+gAGAAAAcwBhAHQATQBvAGQAAeCTBAD7AFQAAAD6ALiIAAD7AEgAAAADQwAAAPoADvsAOgAAAAIAAAABFAAAAPoABAAAAHQAaQBuAHQAAYiQAAD7ARgAAAD6AAYAAABzAGEAdABNAG8AZAAB4JMEAPsAVAAAAPoAoIYBAPsASAAAAANDAAAA+gAO+wA6AAAAAgAAAAEUAAAA+gAEAAAAdABpAG4AdAABmDoAAPsBGAAAAPoABgAAAHMAYQB0AE0AbwBkAAEwVwUA+wEJAAAA+gBAMfcAAQH7AC8BAAAEKgEAAPr7ABUBAAADAAAAAFYAAAD6AAAAAAD7AEoAAAADRQAAAPoADvsAPAAAAAIAAAABFgAAAPoABQAAAHMAaABhAGQAZQABOMcAAPsBGAAAAPoABgAAAHMAYQB0AE0AbwBkAAHQ+wEA+wBWAAAA+gCAOAEA+wBKAAAAA0UAAAD6AA77ADwAAAACAAAAARYAAAD6AAUAAABzAGgAYQBkAGUAAUhrAQD7ARgAAAD6AAYAAABzAGEAdABNAG8AZAAB0PsBAPsAVgAAAPoAoIYBAPsASgAAAANFAAAA+gAO+wA8AAAAAgAAAAEWAAAA+gAFAAAAcwBoAGEAZABlAAEwbwEA+wEYAAAA+gAGAAAAcwBhAHQATQBvAGQAAVgPAgD7AQkAAAD6AEAx9wABAPsB5wAAAAMAAAAAcgAAAPoAAAEAAgEDzhgAAPsAVAAAAANPAAAAAEoAAAADRQAAAPoADvsAPAAAAAIAAAABFgAAAPoABQAAAHMAaABhAGQAZQABGHMBAPsBGAAAAPoABgAAAHMAYQB0AE0AbwBkAAEomgEA+wIHAAAA+gAAAAAA+wAxAAAA+gAAAQACAQOcMQAA+wATAAAAAw4AAAAACQAAAAMEAAAA+gAO+wIHAAAA+gAAAAAA+wAxAAAA+gAAAQACAQNqSgAA+wATAAAAAw4AAAAACQAAAAMEAAAA+gAO+wIHAAAA+gAAAAAA+wM0AgAAAwAAAAATAAAAAw4AAAAACQAAAAMEAAAA+gAO+wBBAQAABDwBAAD6+wAsAQAAAwAAAABUAAAA+gAAAAAA+wBIAAAAA0MAAAD6AA77ADoAAAACAAAAARQAAAD6AAQAAAB0AGkAbgB0AAFAnAAA+wEYAAAA+gA";
sEmptyDocument += "GAAAAcwBhAHQATQBvAGQAATBXBQD7AG8AAAD6AECcAAD7AGMAAAADXgAAAPoADvsAVQAAAAMAAAABFAAAAPoABAAAAHQAaQBuAHQAAcivAAD7ARYAAAD6AAUAAABzAGgAYQBkAGUAAbiCAQD7ARgAAAD6AAYAAABzAGEAdABNAG8AZAABMFcFAPsAVgAAAPoAoIYBAPsASgAAAANFAAAA+gAO+wA8AAAAAgAAAAEWAAAA+gAFAAAAcwBoAGEAZABlAAEgTgAA+wEYAAAA+gAGAAAAcwBhAHQATQBvAGQAARjkAwD7AgQAAAD6AAD7AM0AAAAEyAAAAPr7ALgAAAACAAAAAFQAAAD6AAAAAAD7AEgAAAADQwAAAPoADvsAOgAAAAIAAAABFAAAAPoABAAAAHQAaQBuAHQAAYA4AQD7ARgAAAD6AAYAAABzAGEAdABNAG8AZAAB4JMEAPsAVgAAAPoAoIYBAPsASgAAAANFAAAA+gAO+wA8AAAAAgAAAAEWAAAA+gAFAAAAcwBoAGEAZABlAAEwdQAA+wEYAAAA+gAGAAAAcwBhAHQATQBvAGQAAUANAwD7AgQAAAD6AAD7BAQAAAAAAAAA";
std::string sCode = "window.editor.asc_nativeOpenFile(\"" + sEmptyDocument + "\");";
CefRefPtr<CefFrame> _frame = CefV8Context::GetCurrentContext()->GetFrame();
_frame->ExecuteJavaScript(sCode, _frame->GetURL(), 0);
return true;
}
else if (name == "SetDestinationDocumentPath")
{
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
{
m_sDocumentPath = val->GetStringValue().ToWString();
}
NSDirectory::CreateDirectory(m_sDocumentPath + L"/media");
return true;
}
else if (name == "GetImageUrl")
{
std::vector<CefRefPtr<CefV8Value> >::const_iterator iter = arguments.begin();
std::wstring sUrl = (*iter)->GetStringValue().ToWString(); ++iter;
CefRefPtr<CefFrame> _frame = CefV8Context::GetCurrentContext()->GetBrowser()->GetFrame(m_sPasteFrameId);
if (!_frame)
_frame = CefV8Context::GetCurrentContext()->GetFrame();
std::wstring sUrlBase = _frame->GetURL().ToWString();
std::wstring sUrlFull = GetFullUrl(sUrl, sUrlBase);
bool bIsBase64 = false;
if (sUrl.find(L"data:") == 0)
{
std::wstring::size_type nPos = sUrl.find(L"base64");
if (nPos != std::wstring::npos && nPos < 20)
sUrlFull = sUrl;
bIsBase64 = true;
}
// delete file:///
if (0 == sUrlFull.find(L"file:///"))
{
if (NSFile::CFileBinary::Exists(sUrlFull.substr(7)))
sUrlFull = sUrlFull.substr(7);
else
sUrlFull = sUrlFull.substr(8);
}
else if (0 == sUrlFull.find(L"file:"))
sUrlFull = sUrlFull.substr(5);
std::wstring sReturn = GetImagePath(sUrlFull, bIsBase64);
retval = CefV8Value::CreateString(sReturn);
return true;
}
else if (name == "SaveDocument")
{
if (arguments.size() > 0)
{
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
{
std::string sFile = val->GetStringValue().ToString();
NSFile::CFileBinary oFile;
oFile.CreateFileW(m_sDocumentPath + L"/Editor.bin");
#ifdef ASC_HTML_FILE_INTERNAL_LOG
int nnn = (int)sFile.length();
#endif
oFile.WriteFile((BYTE*)sFile.c_str(), (DWORD)sFile.length());
oFile.CloseFile();
#ifdef ASC_HTML_FILE_INTERNAL_LOG
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
FILE* f = fopen(sLog.c_str(), "a+");
fprintf(f, "SaveDocument: %d\n", (int)nnn);
fclose(f);
#endif
}
}
else
{
std::string sCode = "window.Native.SaveDocument(window.editor.asc_nativeGetFile());";
CefRefPtr<CefFrame> _frame = CefV8Context::GetCurrentContext()->GetFrame();
_frame->ExecuteJavaScript(sCode, _frame->GetURL(), 0);
return true;
}
return true;
}
else if (name == "Exit")
{
#ifdef ASC_HTML_FILE_INTERNAL_LOG
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
FILE* f = fopen(sLog.c_str(), "a+");
fprintf(f, "Exit\n");
fclose(f);
#endif
CefRefPtr<CefBrowser> browser = CefV8Context::GetCurrentContext()->GetBrowser();
CefRefPtr<CefProcessMessage> message = CefProcessMessage::Create("Exit");
browser->SendProcessMessage(PID_BROWSER, message);
return true;
}
else if (name == "AddHtml")
{
#ifdef ASC_HTML_FILE_INTERNAL_LOG
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
FILE* f = fopen(sLog.c_str(), "a+");
fprintf(f, "AddHtml\n");
fclose(f);
#endif
m_sPasteFrameId = "pasteFrame";
CefRefPtr<CefV8Value> val = *arguments.begin();
if (val->IsValid() && val->IsString())
{
m_sPasteFrameId = val->GetStringValue().ToString();
}
std::string sCode = "window.editor.asc_AddHtml(\"" + m_sPasteFrameId + "\");";
CefRefPtr<CefFrame> _frame = CefV8Context::GetCurrentContext()->GetFrame();
_frame->ExecuteJavaScript(sCode, _frame->GetURL(), 0);
return true;
}
// Function does not exist.
return false;
}
std::wstring GetFullUrl(const std::wstring& sUrl, const std::wstring& sBaseUrl)
{
std::wstring sUrlSrc = L"";
if (CFileDownloader::IsNeedDownload(sUrl))
{
sUrlSrc = sUrl;
}
else
{
if (0 == sUrl.find(wchar_t('/')))
{
// нужно брать корень сайта
int nPos = sBaseUrl.find(L"//");
if (nPos != std::wstring::npos)
{
nPos = sBaseUrl.find(wchar_t('/'), nPos + 3);
if (nPos != std::wstring::npos)
{
sUrlSrc = sBaseUrl.substr(0, nPos);
sUrlSrc += sUrl;
}
}
if (sUrlSrc.empty())
{
sUrlSrc = sBaseUrl;
sUrlSrc += (L"/" + sUrl);
}
}
else
{
// брать место урла
int nPos = sBaseUrl.find_last_of(wchar_t('/'));
if (std::wstring::npos != nPos)
{
sUrlSrc = sBaseUrl.substr(0, nPos);
}
else
{
sUrlSrc = sBaseUrl;
}
sUrlSrc += (L"/" + sUrl);
}
}
return sUrlSrc;
}
bool DownloadFile(const std::wstring& sUrl, const std::wstring& sDst, const std::wstring& sBaseUrl)
{
std::wstring sUrlSrc = GetFullUrl(sUrl, sBaseUrl);
CFileDownloader oDownloader(sUrlSrc, false);
oDownloader.SetFilePath(sDst);
oDownloader.Start( 0 );
while ( oDownloader.IsRunned() )
{
NSThreads::Sleep( 10 );
}
return oDownloader.IsFileDownloaded();
}
// Provide the reference counting implementation for this class.
IMPLEMENT_REFCOUNTING(CAscEditorNativeV8Handler);
};
class ClientRenderDelegate : public client::ClientAppRenderer::Delegate {
public:
ClientRenderDelegate()
: last_node_is_editable_(false)
{
sync_command_check = false;
}
virtual void OnWebKitInitialized(CefRefPtr<client::ClientAppRenderer> app) OVERRIDE {
// Create the renderer-side router for query handling.
CefMessageRouterConfig config;
message_router_ = CefMessageRouterRendererSide::Create(config);
}
virtual void OnContextCreated(CefRefPtr<client::ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE {
message_router_->OnContextCreated(browser, frame, context);
// add AscEditorNative
CefRefPtr<CefV8Value> object = context->GetGlobal();
CefRefPtr<CefV8Value> objNative = CefV8Value::CreateObject(NULL);
CAscEditorNativeV8Handler* pNativeHandlerWrapper = new CAscEditorNativeV8Handler();
pNativeHandlerWrapper->sync_command_check = &sync_command_check;
CefRefPtr<CefV8Handler> _nativeHandler = pNativeHandlerWrapper;
CefRefPtr<CefV8Value> _nativeFunction1 = CefV8Value::CreateFunction("InitSDK", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction2 = CefV8Value::CreateFunction("OpenEmptyDocument", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction3 = CefV8Value::CreateFunction("SetDestinationDocumentPath", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction4 = CefV8Value::CreateFunction("SaveDocument", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction5 = CefV8Value::CreateFunction("Exit", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction6 = CefV8Value::CreateFunction("AddHtml", _nativeHandler);
CefRefPtr<CefV8Value> _nativeFunction7 = CefV8Value::CreateFunction("GetImageUrl", _nativeHandler);
objNative->SetValue("InitSDK", _nativeFunction1, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("OpenEmptyDocument", _nativeFunction2, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("SetDestinationDocumentPath", _nativeFunction3, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("SaveDocument", _nativeFunction4, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("Exit", _nativeFunction5, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("AddHtml", _nativeFunction6, V8_PROPERTY_ATTRIBUTE_NONE);
objNative->SetValue("GetImageUrl", _nativeFunction7, V8_PROPERTY_ATTRIBUTE_NONE);
object->SetValue("Native", objNative, V8_PROPERTY_ATTRIBUTE_NONE);
}
virtual void OnContextReleased(CefRefPtr<client::ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE {
message_router_->OnContextReleased(browser, frame, context);
}
virtual void OnFocusedNodeChanged(CefRefPtr<client::ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) OVERRIDE {
bool is_editable = (node.get() && node->IsEditable());
if (is_editable != last_node_is_editable_)
{
// Notify the browser of the change in focused element type.
last_node_is_editable_ = is_editable;
#if 0
CefRefPtr<CefProcessMessage> message =
CefProcessMessage::Create(kFocusedNodeChangedMessage);
message->GetArgumentList()->SetBool(0, is_editable);
browser->SendProcessMessage(PID_BROWSER, message);
#endif
}
}
virtual bool OnProcessMessageReceived(
CefRefPtr<client::ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE
{
std::string sMessageName = message->GetName().ToString();
return message_router_->OnProcessMessageReceived(
browser, source_process, message);
}
private:
bool last_node_is_editable_;
bool sync_command_check;
// Handles the renderer side of query routing.
CefRefPtr<CefMessageRouterRendererSide> message_router_;
IMPLEMENT_REFCOUNTING(ClientRenderDelegate);
};
void CreateRenderDelegates(client::ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new ClientRenderDelegate);
}
} // namespace client_renderer