From 6ba9bd5757b03237b7cd5685a01d5251074f5bf5 Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 26 May 2020 12:11:51 +0200 Subject: [PATCH 01/24] Export to .doc --- www/common/sframe-app-framework.js | 41 +++++++++++++++++++++--------- www/pad/export.js | 40 ++++++++++++++++++++++------- www/pad/inner.js | 4 +-- 3 files changed, 62 insertions(+), 23 deletions(-) diff --git a/www/common/sframe-app-framework.js b/www/common/sframe-app-framework.js index e690bfb08..6e10b0a77 100644 --- a/www/common/sframe-app-framework.js +++ b/www/common/sframe-app-framework.js @@ -433,21 +433,37 @@ define([ var ext = (typeof(extension) === 'function') ? extension() : extension; var suggestion = title.suggestTitle('cryptpad-document'); ext = ext || '.txt'; - var types = [{ - tag: 'a', - attributes: { - 'data-value': ext, - 'href': '#' - }, - content: ext - }, { + var types = []; + if (Array.isArray(ext) && ext.length) { + ext.forEach(function (_ext) { + types.push({ + tag: 'a', + attributes: { + 'data-value': _ext, + 'href': '#' + }, + content: _ext + }); + }); + ext = ext[0]; + } else { + types.push({ + tag: 'a', + attributes: { + 'data-value': ext, + 'href': '#' + }, + content: ext + }); + } + types.push({ tag: 'a', attributes: { 'data-value': '', 'href': '#' }, content: ' ' - }]; + }); var dropdownConfig = { text: ext, // Button initial text caretDown: true, @@ -461,14 +477,15 @@ define([ Util.fixFileName(suggestion), function (filename) { if (!(typeof(filename) === 'string' && filename)) { return; } - filename = filename + $select.getValue(); + var ext = $select.getValue(); + filename = filename + ext; if (async) { fe(function (blob) { SaveAs(blob, filename); - }); + }, ext); return; } - var blob = fe(); + var blob = fe(null, ext); SaveAs(blob, filename); }, { typeInput: $select[0] diff --git a/www/pad/export.js b/www/pad/export.js index d1deef146..f1e3497c9 100644 --- a/www/pad/export.js +++ b/www/pad/export.js @@ -5,15 +5,17 @@ define([ '/bower_components/nthen/index.js', ], function ($, Util, Hyperjson, nThen) { var module = { - ext: '.html' + ext: '.html', // default + exts: ['.html', '.doc'] }; var exportMediaTags = function (inner, cb) { var $clone = $(inner).clone(); nThen(function (waitFor) { $(inner).find('media-tag').each(function (i, el) { - if (!$(el).data('blob') || !el.blob) { return; } - Util.blobToImage(el.blob || $(el).data('blob'), waitFor(function (imgSrc) { + var blob = Util.find(el, ['_mediaObject','_blob', 'content']); + if (!blob) { return; } + Util.blobToImage(blob, waitFor(function (imgSrc) { $clone.find('media-tag[src="' + $(el).attr('src') + '"] img') .attr('src', imgSrc); $clone.find('media-tag').parent() @@ -25,18 +27,31 @@ define([ }); }; + var cleanHtml = function (inner) { + return inner.innerHTML.replace(/]*class="cke_anchor"[^>]*data-cke-realelement="([^"]*)"[^>]*>/g, + function(match,realElt){ + //console.log("returning realElt \"" + unescape(realElt)+ "\"."); + return decodeURIComponent(realElt); + }); + }; module.getHTML = function (inner) { return ('\n' + '\n' + ' \n ' + - inner.innerHTML.replace(/]*class="cke_anchor"[^>]*data-cke-realelement="([^"]*)"[^>]*>/g, - function(match,realElt){ - //console.log("returning realElt \"" + unescape(realElt)+ "\"."); - return decodeURIComponent(realElt); }) + + cleanHtml(inner) + ' \n' ); }; - module.main = function (userDoc, cb) { + var exportDoc = function (inner) { + var preHtml = "Export HTML To Doc"; + var postHtml = ""; + var _html = preHtml+cleanHtml(inner)+postHtml; + return _html; + }; + + module.main = function (userDoc, cb, ext) { + if (!ext || module.exts.indexOf(ext) === -1) { ext = module.ext; } + var inner; if (userDoc && userDoc.tagName) { inner = userDoc; @@ -56,7 +71,14 @@ define([ } } exportMediaTags(inner, function (toExport) { - cb(new Blob([ module.getHTML(toExport) ], { type: "text/html;charset=utf-8" })); + if (ext === ".doc") { + var blob = new Blob(['\ufeff', exportDoc(toExport)], { + type: 'application/msword' + }); + return void cb(blob); + } + var html = module.getHTML(toExport); + cb(new Blob([ html ], { type: "text/html;charset=utf-8" })); }); }; diff --git a/www/pad/inner.js b/www/pad/inner.js index b7f309c35..05cf2c788 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -793,8 +793,8 @@ define([ }); }, true); - framework.setFileExporter(Exporter.ext, function(cb) { - Exporter.main(inner, cb); + framework.setFileExporter(Exporter.exts, function(cb, ext) { + Exporter.main(inner, cb, ext); }, true); framework.setNormalizer(function(hjson) { From aef0f29c2fbb947e48b713a355016f778df8fa99 Mon Sep 17 00:00:00 2001 From: yflory Date: Wed, 27 May 2020 12:43:52 +0200 Subject: [PATCH 02/24] Drag from recent pads --- www/common/drive-ui.js | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 0b5a5c009..7c75eb511 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -1207,9 +1207,6 @@ define([ if ($element.is('.cp-app-drive-element-notrash')) { // We can't delete elements in virtual categories hide.push('delete'); - } else { - // We can only open parent in virtual categories - hide.push('openparent'); } if (!$element.is('.cp-border-color-file')) { //hide.push('download'); @@ -1310,6 +1307,10 @@ define([ hide.push('open'); } + if (!APP.loggedIn) { + hide.push('openparent'); + } + filter = function ($el, className) { if (hide.indexOf(className) !== -1) { return true; } }; @@ -1325,7 +1326,7 @@ define([ 'deleteowned', 'removesf', 'access', 'properties', 'hashtag']; break; case 'default': - show = ['open', 'openro', 'preview', 'share', 'openparent', 'delete', 'deleteowned', 'properties', 'access', 'hashtag', 'makeacopy']; + show = ['open', 'openro', 'preview', 'openincode', 'share', 'download', 'openparent', 'delete', 'deleteowned', 'properties', 'access', 'hashtag', 'makeacopy', 'savelocal', 'rename']; break; case 'trashtree': { show = ['empty']; @@ -2117,7 +2118,7 @@ define([ onElementClick(e, $element); }); if (!isTrash) { - $element.contextmenu(openContextMenu('tree')); + $element.on('contextmenu', openContextMenu('tree')); $element.data('context', 'tree'); } else { $element.contextmenu(openContextMenu('trash')); @@ -3316,25 +3317,17 @@ define([ var $icon = getFileIcon(id); var ro = manager.isReadOnlyFile(id); // ro undefined means it's an old hash which doesn't support read-only - var roClass = typeof(ro) === 'undefined' ? ' cp-app-drive-element-noreadonly' : + /*var roClass = typeof(ro) === 'undefined' ? ' cp-app-drive-element-noreadonly' : ro ? ' cp-app-drive-element-readonly' : ''; var $element = $('
  • ', { 'class': 'cp-app-drive-element cp-app-drive-element-notrash cp-app-drive-element-file cp-app-drive-element-row' + roClass, - }); - $element.prepend($icon).dblclick(function () { - openFile(id); - }); - addFileData(id, $element); - $element.data('path', path); - $element.click(function(e) { - e.stopPropagation(); - onElementClick(e, $element); - }); - $element.contextmenu(openContextMenu('default')); + });*/ + var parentPath = path.slice(); + var key = parentPath.pop(); + var root = manager.find(parentPath); + var $element = createElement(parentPath, key, root); + $element.off('contextmenu').contextmenu(openContextMenu('default')); $element.data('context', 'default'); - /*if (draggable) { - addDragAndDropHandlers($element, path, false, false); - }*/ $list.append($element); i++; }); From 4cf775e613e892dac11cf8a107b29750b8f7da09 Mon Sep 17 00:00:00 2001 From: yflory Date: Wed, 27 May 2020 16:32:28 +0200 Subject: [PATCH 03/24] Sort button in the drive --- customize.dist/src/less2/include/drive.less | 9 ++++++--- www/common/common-ui-elements.js | 5 +++++ www/common/sframe-common-codemirror.js | 19 ++----------------- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/customize.dist/src/less2/include/drive.less b/customize.dist/src/less2/include/drive.less index 7c428a3de..bf17b1e76 100644 --- a/customize.dist/src/less2/include/drive.less +++ b/customize.dist/src/less2/include/drive.less @@ -716,6 +716,9 @@ } } } + .cp-app-drive-element-state { + display: none !important; + } } } .cp-app-drive-element { @@ -729,6 +732,9 @@ .cp-app-drive-element-type, .cp-app-drive-element-filler { display: none !important; } + .cp-app-drive-element-sort { + display: block !important; + } } @media screen and (max-width: 740px) { @@ -744,9 +750,6 @@ .cp-app-drive-element-header .cp-app-drive-element-state { display: none !important; } - .cp-app-drive-element-sort { - display: block !important; - } } } diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 5d9f38077..868de93f4 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2157,6 +2157,11 @@ define([ e.stopPropagation(); var state = $innerblock.is(':visible'); $('.cp-dropdown-content').hide(); + + var $c = $container.closest('.cp-toolbar-drawer-content'); + $c.removeClass('cp-dropdown-visible'); + if (!state) { $c.addClass('cp-dropdown-visible'); } + try { $('iframe').each(function (idx, ifrw) { $(ifrw).contents().find('.cp-dropdown-content').hide(); diff --git a/www/common/sframe-common-codemirror.js b/www/common/sframe-common-codemirror.js index 13655a333..42c5b6d9e 100644 --- a/www/common/sframe-common-codemirror.js +++ b/www/common/sframe-common-codemirror.js @@ -311,14 +311,7 @@ define([ common: Common }; var $block = exp.$language = UIElements.createDropdown(dropdownConfig); - $block.find('button').attr('title', Messages.languageButtonTitle).click(function () { - var state = $block.find('.cp-dropdown-content').is(':visible'); - var $c = $block.closest('.cp-toolbar-drawer-content'); - $c.removeClass('cp-dropdown-visible'); - if (!state) { - $c.addClass('cp-dropdown-visible'); - } - }); + $block.find('button').attr('title', Messages.languageButtonTitle); var isHovering = false; var $aLanguages = $block.find('a'); @@ -368,15 +361,7 @@ define([ common: Common }; var $block = exp.$theme = UIElements.createDropdown(dropdownConfig); - $block.find('button').attr('title', Messages.themeButtonTitle).click(function () { - // XXX copy-pasted code from configureLanguage. We can refactor this. - var state = $block.find('.cp-dropdown-content').is(':visible'); - var $c = $block.closest('.cp-toolbar-drawer-content'); - $c.removeClass('cp-dropdown-visible'); - if (!state) { - $c.addClass('cp-dropdown-visible'); - } - }); + $block.find('button').attr('title', Messages.themeButtonTitle); setTheme(lastTheme, $block); From 1a54f87b5bda9de580a17b4eb0966c31e9835abd Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 28 May 2020 12:17:32 +0200 Subject: [PATCH 04/24] Improve sort button in drive --- www/common/common-ui-elements.js | 13 +++++++++++-- www/common/drive-ui.js | 9 +++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 868de93f4..ef1f13ca2 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2141,8 +2141,17 @@ define([ var show = function () { var wh = $(window).height(); - var topPos = $container[0].getBoundingClientRect().bottom; - $innerblock.css('max-height', Math.floor(wh - topPos - 1)+'px'); + var button = $button[0].getBoundingClientRect(); + var topPos = button.bottom; + $innerblock.css('bottom', ''); + if (config.noscroll) { + var h = $innerblock.outerHeight(); + if ((topPos + h) > wh) { + $innerblock.css('bottom', button.height+'px'); + } + } else { + $innerblock.css('max-height', Math.floor(wh - topPos - 1)+'px'); + } $innerblock.show(); $innerblock.find('.cp-dropdown-element-active').removeClass('cp-dropdown-element-active'); if (config.isSelect && value) { diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 6d9eccfaa..45b7c51f3 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -2748,21 +2748,22 @@ define([ var options = [{ tag: 'a', attributes: {'class': 'cp-app-drive-element-type'}, - content: Messages.fm_type + content: '' + Messages.fm_type },{ tag: 'a', attributes: {'class': 'cp-app-drive-element-atime'}, - content: Messages.fm_lastAccess + content: '' + Messages.fm_lastAccess },{ tag: 'a', attributes: {'class': 'cp-app-drive-element-ctime'}, - content: Messages.fm_creation + content: '' + Messages.fm_creation }]; var dropdownConfig = { text: '', // Button initial text options: options, // Entries displayed in the menu container: $fhSort, left: true, + noscroll: true, common: common }; var $sortBlock = UIElements.createDropdown(dropdownConfig); @@ -2805,7 +2806,7 @@ define([ if (APP.store[SORT_FILE_BY] === '') { classSorted = 'cp-app-drive-sort-filename'; } else if (APP.store[SORT_FILE_BY]) { classSorted = 'cp-app-drive-element-' + APP.store[SORT_FILE_BY]; } if (classSorted) { - $list.find('.' + classSorted).addClass('cp-app-drive-sort-active').prepend($icon); + $list.find('.' + classSorted).addClass('cp-app-drive-sort-active').prepend($icon).find('i').hide(); } }; var getFileListHeader = function (clickable) { From d1670d214acf453ed0abefb61f56a874a72ff3c1 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 28 May 2020 12:18:34 +0200 Subject: [PATCH 05/24] lint compliance --- www/common/drive-ui.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 45b7c51f3..a92e383d1 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -3314,10 +3314,11 @@ define([ } // Display the pad + /* var $icon = getFileIcon(id); var ro = manager.isReadOnlyFile(id); // ro undefined means it's an old hash which doesn't support read-only - /*var roClass = typeof(ro) === 'undefined' ? ' cp-app-drive-element-noreadonly' : + var roClass = typeof(ro) === 'undefined' ? ' cp-app-drive-element-noreadonly' : ro ? ' cp-app-drive-element-readonly' : ''; var $element = $('
  • ', { 'class': 'cp-app-drive-element cp-app-drive-element-notrash cp-app-drive-element-file cp-app-drive-element-row' + roClass, From 20f7c0924b30b9f2ab2f58eba8547b7bb9f3c1a6 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 28 May 2020 12:39:36 +0200 Subject: [PATCH 06/24] Fix XXX --- customize.dist/src/less2/include/drive.less | 120 ------------------ customize.dist/src/less2/include/toolbar.less | 4 - www/code/markers.js | 23 +--- www/common/sframe-common.js | 27 ++++ www/pad/comments.js | 24 +--- 5 files changed, 29 insertions(+), 169 deletions(-) diff --git a/customize.dist/src/less2/include/drive.less b/customize.dist/src/less2/include/drive.less index bf17b1e76..0eb400587 100644 --- a/customize.dist/src/less2/include/drive.less +++ b/customize.dist/src/less2/include/drive.less @@ -905,126 +905,6 @@ } } - /* Toolbar */ - - // XXX remove, preserve drive path? - #cp-app-drive-toolbar { - background: @colortheme_drive-bg-light; - color: @colortheme_drive-color; - //height: 30px; - //display: flex; - //flex-flow: row; - z-index: 100; - box-sizing: border-box; - height: @variables_bar-height; - padding: 0; - display: flex; - flex-flow: row; - - * { - outline-width: 0; - &:focus { - outline-width: 0; - } - } - - .cp-toolbar-icon-history { - float: right; - &.active { - background-color: rgba(0, 0, 255, 0.2); - } - .cp-toolbar-drawer-element { - display: none; - } - } - - .cp-app-drive-toolbar-rightside, .cp-app-drive-toolbar-leftside { - display: inline-block; - margin: 0; - padding: 0; - .fa, .cptools { - margin: 0; - vertical-align: top; - } - button { - height: @variables_bar-height !important; - padding: 0 10px; - border: none; - border-radius: 0; - box-sizing: border-box; - background: transparent; - font-size: @colortheme_app-font-size; - color: @colortheme_drive-color; - transition: all 0.15s; - display: inline-flex; - align-items: center; - .drawer { - display: none; - } - .fa, .cptools, span { - font-size: @colortheme_app-font-size; - } - &:hover { - background: @colortheme_drive-bg-active; - } - &.cp-app-drive-toolbar-active { - display: none; - } - } - } - .cp-app-drive-toolbar-rightside { - float: right; - flex-shrink: 0; - & > * { - float: right; - } - #cp-app-drive-toolbar-contextbuttons { - display: inline-block; - height: 100%; - } - padding-left: 10px; - } - .cp-app-drive-toolbar-leftside { - flex-shrink: 0; - & > span { - height: 100%; - margin: 0; - } - button { - padding: 0 10px; - .fa, .cptools { - margin-right: 5px; - } - .cp-dropdown-button-title { - display: inline-flex; - height: @variables_bar-height; - align-items: center; - span:not(.fa):not(.cptools) { - line-height: 23px; - } - } - } - } - - button { - font: @colortheme_app-font; - span { - font: @colortheme_app-font; - } - .fa, &.fa { - font-family: FontAwesome; - } - .cptools, &.cptools { - font-family: cptools; - } - } - - - .cp-app-drive-toolbar-filler { - flex: 1; - } - } - #cp-app-drive-edition-state { height: @variables_bar-height; display: flex; diff --git a/customize.dist/src/less2/include/toolbar.less b/customize.dist/src/less2/include/toolbar.less index 0c26c0e3b..985f6bd83 100644 --- a/customize.dist/src/less2/include/toolbar.less +++ b/customize.dist/src/less2/include/toolbar.less @@ -949,10 +949,6 @@ } } - .cp-dropdown-content { - margin-top: -1px; - } - & > span { height: @toolbar_line-height; } diff --git a/www/code/markers.js b/www/code/markers.js index fb67736a6..b070e68fc 100644 --- a/www/code/markers.js +++ b/www/code/markers.js @@ -622,30 +622,9 @@ define([ }); }; - var authorUid = function (existing) { - if (!Array.isArray(existing)) { existing = []; } - var n; - var i = 0; - while (!n || existing.indexOf(n) !== -1 && i++ < 1000) { - n = Math.floor(Math.random() * 1000000); - } - // If we can't find a valid number in 1000 iterations, use 0... - if (existing.indexOf(n) !== -1) { n = 0; } - return n; - }; var getAuthorId = function (Env) { - var existing = Object.keys(Env.authormarks.authors || {}).map(Number); - if (!Env.common.isLoggedIn()) { return authorUid(existing); } - var userData = Env.common.getMetadataMgr().getUserData(); - var uid; - existing.some(function (id) { - var author = Env.authormarks.authors[id] || {}; - if (author.curvePublic !== userData.curvePublic) { return; } - uid = Number(id); - return true; - }); - return uid || authorUid(existing); + return Env.common.getAuthorId(Env.authormarks.authors, userData.curvePublic); }; var ready = function (Env) { Env.ready = true; diff --git a/www/common/sframe-common.js b/www/common/sframe-common.js index 4fe715cf9..3d5df4f03 100644 --- a/www/common/sframe-common.js +++ b/www/common/sframe-common.js @@ -202,6 +202,33 @@ define([ }; }; + funcs.getAuthorId = function () { + }; + + var authorUid = function(existing) { + if (!Array.isArray(existing)) { existing = []; } + var n; + var i = 0; + while (!n || existing.indexOf(n) !== -1 && i++ < 1000) { + n = Math.floor(Math.random() * 1000000); + } + // If we can't find a valid number in 1000 iterations, use 0... + if (existing.indexOf(n) !== -1) { n = 0; } + return n; + }; + funcs.getAuthorId = function(authors, curve) { + var existing = Object.keys(authors || {}).map(Number); + if (!funcs.isLoggedIn()) { return authorUid(existing); } + + var uid; + existing.some(function(id) { + var author = authors[id] || {}; + if (author.curvePublic !== curve) { return; } + uid = Number(id); + return true; + }); + return uid || authorUid(existing); + }; // Chat var padChatChannel; diff --git a/www/pad/comments.js b/www/pad/comments.js index 128784671..da98ceeb2 100644 --- a/www/pad/comments.js +++ b/www/pad/comments.js @@ -42,30 +42,8 @@ define([ var canonicalize = function(t) { return t.replace(/\r\n/g, '\n'); }; - // XXX function duplicated from www/code/markers.js - var authorUid = function(existing) { - if (!Array.isArray(existing)) { existing = []; } - var n; - var i = 0; - while (!n || existing.indexOf(n) !== -1 && i++ < 1000) { - n = Math.floor(Math.random() * 1000000); - } - // If we can't find a valid number in 1000 iterations, use 0... - if (existing.indexOf(n) !== -1) { n = 0; } - return n; - }; var getAuthorId = function(Env, curve) { - var existing = Object.keys(Env.comments.authors || {}).map(Number); - if (!Env.common.isLoggedIn()) { return authorUid(existing); } - - var uid; - existing.some(function(id) { - var author = Env.comments.authors[id] || {}; - if (author.curvePublic !== curve) { return; } - uid = Number(id); - return true; - }); - return uid || authorUid(existing); + return Env.common.getAuthorId(Env.comments.authors, curve); }; // Return the author ID and add/update the data for registered users From 8d9301e42761e842a5c8f43f1f419d0d7773e933 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 28 May 2020 17:27:47 +0200 Subject: [PATCH 07/24] Fix account deletion issue --- www/common/outer/async-store.js | 10 +++++++++- www/common/outer/sharedworker.js | 7 +++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index 574b2584a..885bc1131 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -727,10 +727,13 @@ define([ // Owned drive if (metadata && metadata.owners && metadata.owners.length === 1 && metadata.owners.indexOf(edPublic) !== -1) { + var token; nThen(function (waitFor) { + self.accountDeletion = clientId; + // Log out from other workers var token = Math.floor(Math.random()*Number.MAX_SAFE_INTEGER); store.proxy[Constants.tokenKey] = token; - postMessage(clientId, "DELETE_ACCOUNT", token, waitFor()); + onSync(null, waitFor()); }).nThen(function (waitFor) { removeOwnedPads(waitFor); }).nThen(function (waitFor) { @@ -745,6 +748,10 @@ define([ force: true }, waitFor()); }).nThen(function () { + // XXX users need to login after registration if they register after account deletion (token issue?) + // XXX delete block + // Log out current worker + postMessage(clientId, "DELETE_ACCOUNT", token, function () {}); store.network.disconnect(); cb({ state: true @@ -2663,6 +2670,7 @@ define([ }; Store.disconnect = function () { + if (self.accountDeletion) { return; } if (!store.network) { return; } store.network.disconnect(); }; diff --git a/www/common/outer/sharedworker.js b/www/common/outer/sharedworker.js index 706512847..a89376407 100644 --- a/www/common/outer/sharedworker.js +++ b/www/common/outer/sharedworker.js @@ -63,8 +63,11 @@ var init = function (client, cb) { } if (q === "DISCONNECT") { console.log('Deleting existing store!'); - delete self.Rpc; - delete self.store; + client.close(); + if (self.accountDeletion && self.accountDeletion === client.id) { + delete self.Rpc; + delete self.store; + } } }); }); From cf426c24e5a4d4967222555806666e826a438e15 Mon Sep 17 00:00:00 2001 From: ansuz Date: Mon, 25 May 2020 12:48:18 -0400 Subject: [PATCH 08/24] WIP --- www/admin/inner.js | 17 ++++++++++------- www/common/outer/mailbox.js | 33 +++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/www/admin/inner.js b/www/admin/inner.js index 9fab8020a..98d44d684 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -257,15 +257,18 @@ define([ if (!$ticket.length) { $ticket = APP.support.makeTicket($div, content, function () { var error = false; - hashesById[id].forEach(function (d) { - common.mailbox.dismiss(d, function (err) { - if (err) { - error = true; - console.error(err); - } + nThen(function (w) { + hashesById[id].forEach(function (d) { + common.mailbox.dismiss(d, w(function (err) { + if (err) { + error = true; + console.error(err); + } + })); }); + }).nThen(function () { + if (!error) { $ticket.remove(); } }); - if (!error) { $ticket.remove(); } }); } $ticket.append(APP.support.makeMessage(content, hash)); diff --git a/www/common/outer/mailbox.js b/www/common/outer/mailbox.js index 8e29333be..706f1c8c2 100644 --- a/www/common/outer/mailbox.js +++ b/www/common/outer/mailbox.js @@ -134,13 +134,8 @@ proxy.mailboxes = { // If the hash in in our history, get the index from the history: // - if the index is 0, we can change our lastKnownHash // - otherwise, just push to view - var idx; - if (box.history.some(function (el, i) { - if (hash === el) { - idx = i; - return true; - } - })) { + var idx = box.history.indexOf(hash); + if (idx !== -1) { if (idx === 0) { m.lastKnownHash = hash; box.history.shift(); @@ -153,15 +148,25 @@ proxy.mailboxes = { // Check the "viewed" array to see if we're able to bump lastKnownhash more var sliceIdx; var lastKnownHash; + var toForget = []; box.history.some(function (hash, i) { + // naming here is confusing... isViewed implies it's a boolean + // when in fact it's an index var isViewed = m.viewed.indexOf(hash); - if (isViewed !== -1) { - sliceIdx = i + 1; - m.viewed.splice(isViewed, 1); - lastKnownHash = hash; - return false; - } - return true; + + // iterate over your history until you hit an element you haven't viewed + if (isViewed === -1) { return true; } + // update the index that you'll use to slice off viewed parts of history + sliceIdx = i + 1; + // keep track of which hashes you should remove from your 'viewed' array + toForget.push(hash); + // prevent fetching dismissed messages on (re)connect + lastKnownHash = hash; + }); + + // remove all elements in 'toForget' from the 'viewed' array in one step + m.viewed = m.viewed.filter(function (hash) { + return toForget.indexOf(hash) === -1; }); if (sliceIdx) { From f63482a8dafc2398c8825a37cae163565b25910c Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 28 May 2020 11:39:46 -0400 Subject: [PATCH 09/24] disable support tickets' 'remove' button while removal is in progress --- www/admin/inner.js | 11 +++++++++-- www/support/ui.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/www/admin/inner.js b/www/admin/inner.js index 98d44d684..2ff62cf1f 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -255,7 +255,10 @@ define([ if (msg.type !== 'TICKET') { return; } if (!$ticket.length) { - $ticket = APP.support.makeTicket($div, content, function () { + $ticket = APP.support.makeTicket($div, content, function (hideButton) { + // the ticket will still be displayed until the worker confirms its deletion + // so make it unclickable in the meantime + hideButton.setAttribute('disabled', true); var error = false; nThen(function (w) { hashesById[id].forEach(function (d) { @@ -267,7 +270,11 @@ define([ })); }); }).nThen(function () { - if (!error) { $ticket.remove(); } + if (!error) { return void $ticket.remove(); } + // if deletion failed then reactivate the button and warn + hideButton.removeAttribute('disabled'); + // and show a generic error message + UI.alert(Messages.error); }); }); } diff --git a/www/support/ui.js b/www/support/ui.js index dda07c657..ac61bfe7f 100644 --- a/www/support/ui.js +++ b/www/support/ui.js @@ -173,7 +173,7 @@ define([ classes: 'btn-danger' }, function() { if (typeof(onHide) !== "function") { return; } - onHide(); + onHide(hide); // XXX }); $(answer).click(function () { From dbe79d41a71fb91fa41101f64fe4f069193bae07 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 28 May 2020 11:42:49 -0400 Subject: [PATCH 10/24] remove old translations in .js format --- www/common/translations/old/messages.de.js | 1352 ---------------- www/common/translations/old/messages.el.js | 783 ---------- www/common/translations/old/messages.es.js | 583 ------- www/common/translations/old/messages.fr.js | 1317 ---------------- www/common/translations/old/messages.js | 1363 ----------------- www/common/translations/old/messages.pl.js | 167 -- www/common/translations/old/messages.pt-br.js | 552 ------- www/common/translations/old/messages.ro.js | 365 ----- www/common/translations/old/messages.zh.js | 535 ------- 9 files changed, 7017 deletions(-) delete mode 100644 www/common/translations/old/messages.de.js delete mode 100644 www/common/translations/old/messages.el.js delete mode 100644 www/common/translations/old/messages.es.js delete mode 100644 www/common/translations/old/messages.fr.js delete mode 100644 www/common/translations/old/messages.js delete mode 100644 www/common/translations/old/messages.pl.js delete mode 100644 www/common/translations/old/messages.pt-br.js delete mode 100644 www/common/translations/old/messages.ro.js delete mode 100644 www/common/translations/old/messages.zh.js diff --git a/www/common/translations/old/messages.de.js b/www/common/translations/old/messages.de.js deleted file mode 100644 index eb6dd4361..000000000 --- a/www/common/translations/old/messages.de.js +++ /dev/null @@ -1,1352 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - // translations must set this key for their language to be available in - // the language dropdowns that are shown throughout Cryptpad's interface - out._languageName = 'German'; - - out.main_title = "CryptPad: Zusammenarbeit in Echtzeit ohne Preisgabe von Informationen"; - - out.type = {}; - out.type.pad = 'Rich Text'; - out.type.code = 'Code'; - out.type.poll = 'Umfrage'; - out.type.kanban = 'Kanban'; - out.type.slide = 'Präsentation'; - out.type.drive = 'CryptDrive'; - out.type.whiteboard = 'Whiteboard'; - out.type.file = 'Datei'; - out.type.media = 'Medien'; - out.type.todo = 'Aufgaben'; - out.type.contacts = 'Kontakte'; - out.type.sheet = 'Tabelle (Beta)'; - - out.button_newpad = 'Neues Rich-Text-Pad'; - out.button_newcode = 'Neues Code-Pad'; - out.button_newpoll = 'Neue Umfrage'; - out.button_newslide = 'Neue Präsentation'; - out.button_newwhiteboard = 'Neues Whiteboard'; - out.button_newkanban = 'Neues Kanban'; - - // NOTE: Remove updated_0_ if we need an updated_1_ - out.updated_0_common_connectionLost = "Die Verbindung zum Server ist abgebrochen
    Du verwendest jetzt das Dokument schreibgeschützt, bis die Verbindung wieder funktioniert."; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = 'Verbindung zum Websocket fehlgeschlagen...'; - out.typeError = "Dieses Dokument ist nicht mit der ausgewählten Anwendung kompatibel"; - out.onLogout = 'Du bist ausgeloggt. {0}Klicke hier{1}, um dich wieder einzuloggen,
    oder drücke Escape, um dein Pad schreibgeschützt zu benutzen.'; - out.wrongApp = "Der Inhalt dieser Echtzeitsitzung kann nicht in deinem Browser angezeigt werden. Bitte lade die Seite neu."; - out.padNotPinned = 'Dieses Pad wird nach 3 Monaten ohne Aktivität auslaufen, {0}logge dich ein{1} oder {2}registriere dich{3}, um das Auslaufen zu verhindern.'; - out.anonymousStoreDisabled = "Der Webmaster dieses CryptPad-Servers hat die anonyme Verwendung des Speichers deaktiviert. Du musst dich einloggen, um CryptDrive zu verwenden."; - out.expiredError = 'Dieses Pad ist abgelaufen und ist nicht mehr verfügbar.'; - out.deletedError = 'Dieses Pad wurde von seinem Besitzer gelöscht und ist nicht mehr verfügbar.'; - out.inactiveError = 'Dieses Pad ist wegen Inaktivität gelöscht worden. Drücke Esc, um ein neues Pad zu erstellen.'; - out.chainpadError = 'Ein kritischer Fehler ist beim Aktualisieren deines Inhalts aufgetreten. Diese Seite ist schreibgeschützt, damit du sicherstellen kannst, dass kein Inhalt verloren geht.
    '+ - 'Drücke Esc, um das Pad schreibgeschützt zu lesen oder lade es neu, um die Bearbeitung fortzusetzen.'; - out.errorCopy = ' Du kannst noch den Inhalt woanders hin kopieren, nachdem du Esc gedrückt hast.
    Wenn du die Seite verlässt, verschwindet der Inhalt für immer!'; - out.errorRedirectToHome = 'Drücke Esc, um zu deinem CryptDrive zurückzukehren.'; - out.newVersionError = "Eine neue Version von CryptPad ist verfügbar.
    " + - "Lade die Seite neu, um die neue Version zu benutzen. Drücke Esc, um im Offline-Modus weiterzuarbeiten."; - - out.loading = "Laden..."; - out.error = "Fehler"; - out.saved = "Gespeichert"; - out.synced = "Alles gespeichert"; - out.deleted = "Pad wurde aus deinem CryptDrive gelöscht"; - out.deletedFromServer = "Pad wurde vom Server gelöscht"; - - out.mustLogin = "Du musst angemeldet sein, um auf diese Seite zuzugreifen"; - out.disabledApp = "Diese Anwendung wurde deaktiviert. Kontaktiere den Administrator dieses CryptPads, um mehr Informationen zu erhalten."; - - out.realtime_unrecoverableError = "Es ist ein nicht reparierbarer Fehler aufgetreten. Klicke auf OK, um neu zu laden."; - - out.disconnected = 'Getrennt'; - out.synchronizing = 'Synchronisieren'; - out.reconnecting = 'Verbindung wird aufgebaut'; - out.typing = "Es wird getippt"; - out.initializing = "Starten..."; - out.forgotten = 'In den Papierkorb verschoben'; - out.errorState = 'Kritischer Fehler: {0}'; - out.lag = 'Verzögerung'; - out.readonly = 'schreibgeschützt'; - out.anonymous = "Anonym"; - out.yourself = "Du"; - out.anonymousUsers = "anonyme Nutzer"; - out.anonymousUser = "anonyme Nutzer"; - out.users = "Nutzer"; - out.and = "Und"; - out.viewer = "Betrachter"; - out.viewers = "Betrachter"; - out.editor = "Bearbeiter"; - out.editors = "Bearbeiter"; - out.userlist_offline = "Du bist aktuell offline, die Benutzerliste ist nicht verfügbar."; - - out.language = "Sprache"; - - out.comingSoon = "Kommt bald..."; - - out.newVersion = 'CryptPad wurde aktualisiert!
    ' + - 'Entdecke, was neu in dieser Version ist:
    '+ - 'Versionshinweise für CryptPad {0}'; - - out.upgrade = "Upgrade"; - out.upgradeTitle = "Dein Konto upgraden, um mehr Speicherplatz zu haben"; - - out.upgradeAccount = "Konto upgraden"; - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - - out.supportCryptpad = "CryptPad unterstützen"; - - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.greenLight = "Alles funktioniert bestens!"; - out.orangeLight = "Deine langsame Verbindung kann die Nutzung beeinträchtigen."; - out.redLight = "Du wurdest von dieser Sitzung getrennt."; - - out.pinLimitReached = "Du hast deine Speicherplatzbegrenzung erreicht"; - out.updated_0_pinLimitReachedAlert = "Du hast deine Speicherplatzbegrenzung erreicht. Neue Pads werden nicht mehr in deinem CryptDrive gespeichert.
    " + - 'Du kannst entweder ein Pad von deinem CryptDrive entfernen oder ein Premiumangebot anfordern, damit deine Begrenzung erhöht wird.'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinLimitReachedAlertNoAccounts = out.pinLimitReached; - out.pinLimitNotPinned = "Du hast deine Speicherplatzbegrenzung erreicht.
    "+ - "Dieses Pad ist nicht in deinem CryptDrive gespeichert."; - out.pinLimitDrive = "Du hast deine Speicherplatzbegrenzung erreicht.
    " + - "Du kannst keine neuen Pads erstellen."; - - out.moreActions = "Mehr Aktionen"; - - out.importButton = "Importieren"; - out.importButtonTitle = 'Importiere eine lokale Pad-Datei'; - - out.exportButton = "Exportieren"; - out.exportButtonTitle = 'Exportiere dieses Pad in eine lokale Datei'; - out.exportPrompt = 'Wie möchtest du die Datei nennen?'; - - out.changeNamePrompt = 'Ändere deinen Namen (oder lasse dieses Feld leer, um anonym zu bleiben): '; - out.user_rename = "Bearbeite deinen Anzeigename"; - out.user_displayName = "Anzeigename"; - out.user_accountName = "Kontoname"; - - out.clickToEdit = "Zum Bearbeiten klicken"; - out.saveTitle = "Den Titel speichern (Enter)"; - - out.forgetButton = "Entfernen"; - out.forgetButtonTitle = 'Dieses Pad in den Papierkorb verschieben'; - out.forgetPrompt = 'Mit dem Klick auf OK wird das Pad in den Papierkorb verschoben. Bist du sicher?'; - out.movedToTrash = 'Dieses Dokument liegt im Papierkorb.
    Du kannst zum CryptDrive navigieren.'; - - out.shareButton = 'Teilen'; - out.shareSuccess = 'Die URL wurde in die Zwischenablage kopiert'; - - out.userListButton = "Benutzerliste"; - - out.chatButton = "Chat"; - - out.userAccountButton = "Dein Konto"; - - out.newButton = 'Neu'; - out.newButtonTitle = 'Neues Pad erstellen'; - out.uploadButton = 'Hochladen'; - out.uploadButtonTitle = 'Eine neue Datei in den aktuellen Ordner hochladen'; - - out.saveTemplateButton = "Als Vorlage speichern"; - out.saveTemplatePrompt = "Bitte gib einen Titel für die Vorlage ein"; - out.templateSaved = "Vorlage gespeichert!"; - out.selectTemplate = "Bitte wähle eine Vorlage oder drücke Esc"; - out.useTemplate = "Mit einer Vorlage starten?"; //Would you like to "You have available templates for this type of pad. Do you want to use one?"; - out.useTemplateOK = 'Wähle eine Vorlage (Enter)'; - out.useTemplateCancel = 'Neu starten (Esc)'; - out.template_import = "Eine Vorlage importieren"; - out.template_empty = "Keine Vorlagen verfügbar"; - - out.previewButtonTitle = "Die Markdown-Vorschau anzeigen oder verbergen"; - - out.presentButtonTitle = "Zum Präsentationsmodus wechseln"; - - out.backgroundButtonTitle = 'Hintergrundfarbe der Präsentation ändern'; - out.colorButtonTitle = 'Textfarbe des Präsentationsmodus bearbeiten'; - - out.propertiesButton = "Eigenschaften"; - out.propertiesButtonTitle = 'Die Eigenschaften des Pads ansehen'; - - out.printText = "Drucken"; - out.printButton = "Drucken (Enter)"; - out.printButtonTitle2 = "Dein Pad ausdrucken oder als PDF-Datei exportieren"; - out.printOptions = "Layouteinstellungen"; - out.printSlideNumber = "Foliennummer anzeigen"; - out.printDate = "Datum anzeigen"; - out.printTitle = "Titel der Präsentation anzeigen"; - out.printCSS = "Benutzerdefinierte Stil-Regeln (CSS):"; - out.printTransition = "Animierte Übergänge aktivieren"; - out.printBackground = "Ein Hintergrundbild verwenden"; - out.printBackgroundButton = "Bitte ein Bild wählen"; - out.printBackgroundValue = "Aktueller Hintergrund: {0}"; - out.printBackgroundNoValue = "Kein Hintergrundbild gewählt"; - out.printBackgroundRemove = "Das Hintergrundbild entfernen"; - - out.filePickerButton = "Eine Datei aus deinem CryptDrive einbetten"; - out.filePicker_close = "Schließen"; - out.filePicker_description = "Bitte wähle eine Datei aus deinem CryptDrive oder lade eine neue hoch"; - out.filePicker_filter = "Dateien nach Namen filtern"; - out.or = 'oder'; - - out.tags_title = "Tags (nur für dich)"; - out.tags_add = "Die Tags dieser Seite bearbeiten"; - out.tags_searchHint = "Dateien anhand ihrer Tags in deinem CryptDrive suchen"; - out.tags_searchHint = "Beginne die Suche in deinem CryptDrive mit #, um getaggte Dokumente zu finden."; - out.tags_notShared = "Deine Tags werden nicht mit anderen Benutzern geteilt"; - out.tags_duplicate = "Doppeltes Tag: {0}"; - out.tags_noentry = "Du kannst keine Tags zu einem gelöschten Pad hinzufügen!"; - - out.slideOptionsText = "Einstellungen"; - out.slideOptionsTitle = "Deine Folien anpassen"; - out.slideOptionsButton = "Speichern (Enter)"; - out.slide_invalidLess = "Benutzerdefinierter Stil ist ungültig"; - - out.languageButton = "Sprache"; - out.languageButtonTitle = "Wähle die Sprache für die Syntaxhervorhebung"; - out.themeButton = "Farbschema"; - out.themeButtonTitle = "Wähle das Farbschema für den Code- und Folieneditor"; - - out.editShare = "Link zum Bearbeiten teilen"; - out.editShareTitle = "Link zum Bearbeiten in die Zwischenablage kopieren"; - out.editOpen = "Den Link zum Bearbeiten in einem neuen Tab öffnen"; - out.editOpenTitle = "Öffne dieses Pad zum Bearbeiten in einem neuen Tab"; - out.viewShare = "Link zum schreibgeschützten Pad teilen"; - out.viewShareTitle = "Link zum schreibgeschützten Pad in die Zwischenablage kopieren"; - out.viewOpen = "In neuem Tab anzeigen"; - out.viewOpenTitle = "Pad schreibgeschützt in neuem Tab öffnen"; - out.fileShare = "Link kopieren"; - out.getEmbedCode = "Einbettungscode anzeigen"; - out.viewEmbedTitle = "Das Pad in eine externe Webseite einbetten"; - out.viewEmbedTag = "Um dieses Pad einzubetten, platziere diesen iframe an der gewünschten Stelle deiner HTML-Seite. Du kannst es mit CSS oder HTML-Attributen gestalten."; - out.fileEmbedTitle = "Die Datei in einer externen Seite einbetten"; - out.fileEmbedScript = "Um diese Datei einzubetten, füge dieses Skript einmal in deiner Webseite ein, damit das Media-Tag geladen wird:"; - out.fileEmbedTag = "Dann platziere das Media-Tag an der gewünschten Stelle der Seite:"; - - out.notifyJoined = "{0} ist in der Mitarbeitssitzung "; - out.notifyRenamed = "{0} ist jetzt als {1} bekannt"; - out.notifyLeft = "{0} hat die Mitarbeitssitzung verlassen"; - - out.ok = 'OK'; - out.okButton = 'OK (Enter)'; - - out.cancel = "Abbrechen"; - out.cancelButton = 'Abbrechen (Esc)'; - out.doNotAskAgain = "Nicht mehr fragen (Esc)"; - - out.show_help_button = "Hilfe anzeigen"; - out.hide_help_button = "Hilfe verbergen"; - out.help_button = "Hilfe"; - - out.historyText = "Verlauf"; - out.historyButton = "Den Dokumentverlauf anzeigen"; - out.history_next = "Neuere Version"; - out.history_prev = "Ältere Version"; - out.history_loadMore = "Weiteren Verlauf laden"; - out.history_closeTitle = "Verlauf schließen"; - out.history_restoreTitle = "Die gewählte Version des Dokuments wiederherstellen"; - out.history_restorePrompt = "Bist du sicher, dass du die aktuelle Version des Dokuments mit der angezeigten Version ersetzen möchtest?"; - out.history_restoreDone = "Version wiederhergestellt"; - out.history_version = "Version:"; - - // Ckeditor - out.openLinkInNewTab = "Link im neuen Tab öffnen"; - out.pad_mediatagTitle = "Einstellungen für Media-Tag"; - out.pad_mediatagWidth = "Breite (px)"; - out.pad_mediatagHeight = "Höhe (px)"; - out.pad_mediatagRatio = "Seitenverhältnis beibehalten"; - out.pad_mediatagBorder = "Rahmenbreite (px)"; - out.pad_mediatagPreview = "Vorschau"; - out.pad_mediatagImport = 'In deinem CryptDrive speichern'; - out.pad_mediatagOptions = 'Bildeigenschaften'; - - // Kanban - out.kanban_newBoard = "Neues Board"; - out.kanban_item = "Eintrag {0}"; // Item number for initial content - out.kanban_todo = "Zu erledigen"; - out.kanban_done = "Erledigt"; - out.kanban_working = "In Bearbeitung"; - out.kanban_deleteBoard = "Bist du sicher, dass du dieses Board löschen möchtest?"; - out.kanban_addBoard = "Ein Board hinzufügen"; - out.kanban_removeItem = "Diesen Eintrag entfernen"; - out.kanban_removeItemConfirm = "Bist du sicher, dass du diesen Eintrag löschen möchtest?"; - - // Polls - - out.poll_title = "Terminplaner ohne Preisgabe von Daten"; - out.poll_subtitle = "Planung in Echtzeit ohne Preisgabe von Daten"; - - out.poll_p_save = "Deine Einstellungen werden sofort aktualisiert. Du musst sie also nicht speichern."; - out.poll_p_encryption = "Alle Eingaben sind verschlüsselt, deshalb können nur Leute darauf zugreifen, die den Link kennen. Selbst der Server sieht nicht, was du änderst."; - - out.wizardLog = "Klicke auf die Schaltfläche links oben, um zu deiner Umfrage zurückzukehren."; - out.wizardTitle = "Nutze den Assistenten, um deine Umfrage zu erstellen."; - out.wizardConfirm = "Bist du wirklich bereit, die angegebenen Optionen zu deiner Umfrage hinzuzufügen?"; - - out.poll_publish_button = "Veröffentlichen"; - out.poll_admin_button = "Admin"; - out.poll_create_user = "Neuen Benutzer hinzufügen"; - out.poll_create_option = "Neue Option hinzufügen"; - out.poll_commit = "Einchecken"; - - out.poll_closeWizardButton = "Assistenten schließen"; - out.poll_closeWizardButtonTitle = "Assistenten schließen"; - out.poll_wizardComputeButton = "Optionen übernehmen"; - out.poll_wizardClearButton = "Tabelle leeren"; - out.poll_wizardDescription = "Erstelle die Optionen automatisch, indem du eine beliebige Anzahl von Daten und Zeiten eingibst."; - out.poll_wizardAddDateButton = "+ Daten"; - out.poll_wizardAddTimeButton = "+ Zeiten"; - - out.poll_optionPlaceholder = "Option"; - out.poll_userPlaceholder = "Dein Name"; - out.poll_removeOption = "Bist du sicher, dass du diese Option entfernen möchtest?"; - out.poll_removeUser = "Bist du sicher, dass du diesen Nutzer entfernen möchtest?"; - - out.poll_titleHint = "Titel"; - out.poll_descriptionHint = "Beschreibe deine Abstimmung und publiziere sie mit der Schaltfläche ✓ (Veröffentlichen), wenn du fertig bist."+ - " Bei der Beschreibung kann Markdown-Syntax verwendet werden und du kannst Medien-Elemente von deinem CryptDrive einbetten." + - " Jeder, der den Link kennt, kann die Beschreibung ändern. Dies wird aber nicht empfohlen."; - - out.poll_remove = "Entfernen"; - out.poll_edit = "Bearbeiten"; - out.poll_locked = "Gesperrt"; - out.poll_unlocked = "Editierbar"; - - out.poll_bookmark_col = 'Setze ein Lesezeichen auf diese Spalte, damit sie immer editierbar und ganz links angezeigt wird.'; - out.poll_bookmarked_col = 'Dies ist die Spalte mit deinem Lesezeichen. Sie wird immer editierbar und ganz links angezeigt.'; - out.poll_total = 'SUMME'; - - out.poll_comment_list = "Kommentare"; - out.poll_comment_add = "Einen Kommentar hinzufügen"; - out.poll_comment_submit = "Senden"; - out.poll_comment_remove = "Diesen Kommentar entfernen"; - out.poll_comment_placeholder = "Dein Kommentar"; - - out.poll_comment_disabled = "Diese Umfrage mit der Schaltfläche ✓ veröffentlichen, damit Kommentare möglich sind."; - - // OnlyOffice - out.oo_reconnect = "Die Serververbindung wurde wiederhergestellt. Klicke auf OK, um neu zu laden und die Bearbeitung fortzusetzen."; - - // Canvas - out.canvas_clear = "Löschen"; - out.canvas_delete = "Auswahl entfernen"; - out.canvas_disable = "Zeichnung deaktivieren"; - out.canvas_enable = "Zeichnung aktivieren"; - out.canvas_width = "Breite"; - out.canvas_opacity = "Deckkraft"; - out.canvas_opacityLabel = "Deckkraft: {0}"; - out.canvas_widthLabel = "Breite: {0}"; - out.canvas_saveToDrive = "Dieses Bild in deinem CryptDrive speichern"; - out.canvas_currentBrush = "Aktueller Pinsel"; - out.canvas_chooseColor = "Eine Farbe wählen"; - out.canvas_imageEmbed = "Ein Bild von deinem Computer einbetten"; - - // Profile - out.profileButton = "Profil"; // dropdown menu - out.profile_urlPlaceholder = 'URL'; - out.profile_namePlaceholder = 'Angezeigter Name'; - out.profile_avatar = "Avatar"; - out.profile_upload = " Einen neuen Avatar hochladen"; - out.profile_uploadSizeError = "Fehler: Dein Avatar muss kleiner als {0} sein"; - out.profile_uploadTypeError = "Fehler: Der Typ dieses Bildes wird nicht unterstützt. Unterstütze Typen sind: {0}"; - out.profile_error = "Fehler bei der Erstellung deines Profils: {0}"; - out.profile_register = "Du muss dich einloggen, um ein Profil zu erstellen!"; - out.profile_create = "Ein Profil erstellen"; - out.profile_description = "Beschreibung"; - out.profile_fieldSaved = 'Neuer Wert gespeichert: {0}'; - - out.profile_inviteButton = "Sich in Verbindung setzen"; - out.profile_inviteButtonTitle ='Einen Link erstellen, mit dem du diesen Benutzer einladen kannst, sich mit dir in Verbindung zu setzen.'; - out.profile_inviteExplanation = "Ein Klick auf OK wird einen Link erstellen, der eine sichere Chatsitzung nur mit {0} erlaubt.

    Dieser Link kann öffentlich geteilt werden."; - out.profile_viewMyProfile = "Mein Profil anzeigen"; - - // contacts/userlist - out.userlist_addAsFriendTitle = 'Benutzer "{0}" als Kontakt hinzufügen'; - out.userlist_thisIsYou = 'Das bist du ("{0}")'; - out.userlist_pending = "Warte..."; - out.contacts_title = "Kontakte"; - out.contacts_addError = 'Fehler bei dem Hinzufügen des Kontakts zur Liste'; - out.contacts_added = 'Verbindungseinladung angenommen.'; - out.contacts_rejected = 'Verbindungseinladung abgelehnt'; - out.contacts_request = 'Benutzer {0} möchte dich als Kontakt hinzufügen. Annehmen?'; - out.contacts_send = 'Senden'; - out.contacts_remove = 'Diesen Kontakt entfernen'; - out.contacts_confirmRemove = 'Bist du sicher, dass du {0} von der Kontaktliste entfernen möchtest?'; - out.contacts_typeHere = "Gib eine Nachricht ein..."; - out.contacts_warning = "Alles, was du hier eingibst, wird dauerhaft gespeichert und für alle aktuellen und zukünftigen Benutzer dieses Pads sichtbar sein. Sei sorgfältig mit sensiblen Informationen!"; - out.contacts_padTitle = "Chat"; - - out.contacts_info1 = "Dies sind deine Kontakte. Hier kannst du:"; - out.contacts_info2 = "Auf den Avatar eines Kontakts klicken, um mit diesem Benutzer zu chatten"; - out.contacts_info3 = "Auf den Avatar doppelklicken, um das entsprechende Profil anzuzeigen"; - out.contacts_info4 = "Jeder Teilnehmer kann den Chatverlauf endgültig löschen"; - - out.contacts_removeHistoryTitle = 'Den Chatverlauf löschen'; - out.contacts_confirmRemoveHistory = 'Bist du sicher, dass du den Chatverlauf endgültig löschen willst? Die Daten sind dann weg.'; - out.contacts_removeHistoryServerError = 'Es gab einen Fehler bei dem Löschen des Chatverlaufs. Versuche es später noch einmal'; - out.contacts_fetchHistory = "Den früheren Verlauf laden"; - - out.contacts_friends = "Kontakte"; - out.contacts_rooms = "Chaträume"; - out.contacts_leaveRoom = "Diesen Chatraum verlassen"; - out.contacts_online = "Ein anderer Benutzer dieses Raumes ist online"; - - // File manager - - out.fm_rootName = "Dokumente"; - out.fm_trashName = "Papierkorb"; - out.fm_unsortedName = "Unsortierte Dateien"; - out.fm_filesDataName = "Alle Dateien"; - out.fm_templateName = "Vorlagen"; - out.fm_searchName = "Suchen"; - out.fm_recentPadsName = "Zuletzt geöffnete Pads"; - out.fm_ownedPadsName = "Eigene"; - out.fm_tagsName = "Tags"; - out.fm_sharedFolderName = "Geteilter Ordner"; - out.fm_searchPlaceholder = "Suchen..."; - out.fm_newButton = "Neu"; - out.fm_newButtonTitle = "Ein neues Pad oder Ordner erstellen, oder eine Datei in den aktuellen Ordner importieren"; - out.fm_newFolder = "Neuer Ordner"; - out.fm_newFile = "Neues Pad"; - out.fm_folder = "Ordner"; - out.fm_sharedFolder = "Geteilter Ordner"; - out.fm_folderName = "Ordnername"; - out.fm_numberOfFolders = "# Ordner"; - out.fm_numberOfFiles = "# Dateien"; - out.fm_fileName = "Dateiname"; - out.fm_title = "Titel"; - out.fm_type = "Typ"; - out.fm_lastAccess = "Letzter Zugriff"; - out.fm_creation = "Erstellung"; - out.fm_forbidden = "Verbotene Aktion"; - out.fm_originalPath = "Ursprünglicher Pfad"; - out.fm_openParent = "Im Ordner zeigen"; - out.fm_noname = "Dokument ohne Titel"; - out.fm_emptyTrashDialog = "Soll der Papierkorb wirklich geleert werden?"; - out.fm_removeSeveralPermanentlyDialog = "Bist du sicher, dass du diese {0} Elemente endgültig aus deinem CryptDrive entfernen möchtest?"; - out.fm_removePermanentlyNote = "Wenn du fortfährst, werden deine eigenen Pads vom Server entfernt."; - out.fm_removePermanentlyDialog = "Bist du sicher, dass du dieses Element endgültig aus deinem CryptDrive entfernen möchtest?"; - out.fm_removeSeveralDialog = "Bist du sicher, dass du diese {0} Elemente in den Papierkorb verschieben möchtest?"; - out.fm_removeDialog = "Bist du sicher, dass du {0} in den Papierkorb verschieben möchtest?"; - out.fm_deleteOwnedPad = "Bist du sicher, dass du dieses Pad endgültig vom Server löschen möchtest?"; - out.fm_deleteOwnedPads = "Bist du sicher, dass du diese Pads endgültig vom Server entfernen möchtest?"; - out.fm_restoreDialog = "Bist du sicher, dass du {0} zurück in den ursprünglichen Ordner verschieben möchtest?"; - out.fm_unknownFolderError = "Der Ordner, der gerade gewählt oder zuletzt besucht wurde, existiert nicht mehr. Der übergeordnete Ordner wird geöffnet..."; - out.fm_contextMenuError = "Fehler beim Öffnen des Kontextmenü für dieses Element. Wenn dieses Problem wieder auftritt, versuche die Seite neu zu laden."; - out.fm_selectError = "Fehler bei der Auswahl des gewünschten Elements. Wenn dieses Problem wieder auftritt, versuche die Seite neu zu laden."; - out.fm_categoryError = "Fehler beim Öffnen der gewählten Kategorie. Der Stamm-Ordner wird angezeigt."; - out.fm_info_root = "Erstelle hier so viele Ordner, wie du willst, um deine Dateien und Dokumente zu organisieren."; - out.fm_info_unsorted = 'Hier sind alle besuchte Dateien enthalten, die noch nicht in "Dokumente" einsortiert oder in den Papierkorb verschoben wurden.'; - out.fm_info_template = 'Hier sind alle Dokumente enthalten, die als Vorlage gespeichert wurden und die du wiederverwenden kannst, um ein neues Pad zu erstellen.'; - out.fm_info_recent = "Hier werden die zuletzt geöffneten Dokumente aufgelistet."; - out.updated_0_fm_info_trash = 'Leere den Papierkorb, um mehr freien Platz in deinem CryptDrive zu erhalten.'; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = 'Beinhaltet alle Dateien von "Dokumente", "Unsortierte Dateien" und "Papierkorb". Dateien können hier nicht verschoben oder entfernt werden.'; - out.fm_info_anonymous = 'Du bist nicht eingeloggt, daher laufen die Pads nach 3 Monaten aus (mehr dazu lesen). ' + - 'Der Zugang zu den Pads ist in deinem Browser gespeichert, daher wird das Löschen des Browserverlaufs sie möglicherweise verschwinden lassen.
    ' + - 'Registriere dich oder logge dich ein, um sie dauerhaft zugänglich zu machen.
    '; - out.fm_info_sharedFolder = 'Dieser Ordner ist geteilt. Da du aber nicht eingeloggt bist, hast du nur einen schreibgeschützen Zugriff.
    ' + - 'Registriere oder logge ich ein, damit du diesen Ordner in dein CryptDrive importieren und bearbeiten kannst.'; - out.fm_info_owned = "Diese Pads sind deine eigenen. Das heißt, dass du sie jederzeit vom Server entfernen kannst. Wenn du das machst, dann sind sie auch für andere Nutzer nicht mehr zugänglich."; - out.fm_alert_backupUrl = "Backup-Link für dieses CryptDrive.
    " + - "Es wird dringend empfohlen, diesen Link geheim zu halten.
    " + - "Du kannst ihn benutzen, um deine gesamten Dateien abzurufen, wenn dein Browserspeicher gelöscht wurde.
    " + - "Jede Person, die diesen Link hat, kann die Dateien in deinem CryptDrive bearbeiten oder löschen.
    "; - out.fm_alert_anonymous = "Hallo, du benutzt CryptPad anonym. Das ist in Ordnung, aber Dokumente können nach einer längerer Inaktivität gelöscht werden. " + - "Wir haben fortgeschrittene Funktionen in anonymen CryptDrives deaktiviert, weil wir deutlich machen wollen, dass es kein sicherer Platz zur Ablage von Daten ist." + - 'Du kannst lesen, weshalb wir das machen und weshalb du dich wirklich ' + - 'registrieren oder einloggen solltest.'; - out.fm_backup_title = 'Backup-Link'; - out.fm_nameFile = 'Wie soll diese Datei heißen?'; - out.fm_error_cantPin = "Interner Serverfehler. Bitte lade die Seite neu und versuche es erneut."; - out.fm_viewListButton = "Listenansicht"; - out.fm_viewGridButton = "Kachelansicht"; - out.fm_renamedPad = "Du hast einen benutzerdefinierten Name für dieses Pad gesetzt. Seine geteilter Titel ist:
    {0}"; - out.fm_canBeShared = "Dieser Ordner kann geteilt werden"; - out.fm_prop_tagsList = "Tags"; - out.fm_burnThisDriveButton = "Alle Informationen löschen, die CryptPad in deinem Browser speichert"; - out.fm_burnThisDrive = "Bist du sicher, dass du alles, was CryptPad in deinem Browser gespeichert hat, löschen möchtest?
    " + - "Das wird dein CryptDrive und seinen Verlauf in deinem Browser löschen, Pads werden weiterhin (verschlüsselt) auf unserem Server bleiben."; - out.fm_padIsOwned = "Du bist der Eigentümer dieses Pads"; - out.fm_padIsOwnedOther = "Dieses Pad gehört einem anderen Benutzer"; - out.fm_deletedPads = "Dieses Dokument existiert nicht mehr auf dem Server, es wurde von deinem CryptDrive gelöscht: {0}"; - out.fm_tags_name = "Name des Tags"; - out.fm_tags_used = "Anzahl der Dokumente"; - out.fm_restoreDrive = "Dein CryptDrive wird in einen früheren Zustand zurückversetzt. Damit es funktioniert, solltest du keine Änderungen während dieses Vorgangs machen."; - out.fm_moveNestedSF = "Du kannst keinen geteilten Ordner in einem anderen geteilten Ordner platzieren. Der Ordner {0} wurde nicht verschoben."; - - // File - Context menu - out.fc_newfolder = "Neuer Ordner"; - out.fc_newsharedfolder = "Neuer geteilter Ordner"; - out.fc_rename = "Umbenennen"; - out.fc_open = "Öffnen"; - out.fc_open_ro = "Öffnen (schreibgeschützt)"; - out.fc_delete = "In den Papierkorb verschieben"; - out.fc_delete_owned = "Vom Server löschen"; - out.fc_restore = "Wiederherstellen"; - out.fc_remove = "Aus deinem CryptDrive entfernen"; - out.fc_remove_sharedfolder = "Entfernen"; - out.fc_empty = "Den Papierkorb leeren"; - out.fc_prop = "Eigenschaften"; - out.fc_hashtag = "Tags"; - out.fc_sizeInKilobytes = "Größe in Kilobyte"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "Du kannst einen Ordner nicht in die Liste der Vorlagen verschieben"; - out.fo_existingNameError = "Der Name wird in diesem Ordner bereits verwendet. Bitte wähle einen anderen Namen."; - out.fo_moveFolderToChildError = "Du kannst einen Ordner nicht in einen seiner Unterordner verschieben"; - out.fo_unableToRestore = "Die Datei konnte nicht an ihrem ursprünglichen Ort wiederhergestellt werden. Du kannst versuchen, sie an einen anderen Ort zu verschieben."; - out.fo_unavailableName = "Eine Datei oder ein Ordner mit diesem Namen existiert bereits in diesem Ordner. Bitte benenne das Element zuerst um und versuche es dann erneut."; - - out.fs_migration = "Dein CryptDrive wird gerade zu einer neueren Version aktualisiert. Daher muss die Seite neu geladen werden.
    Bitte lade die Seite neu, um sie weiter zu verwenden."; - - // login - out.login_login = "Einloggen"; - out.login_makeAPad = 'Ein Pad anonym erstellen'; - out.login_nologin = "Lokale Dokumente ansehen"; - out.login_register = "Registrieren"; - out.logoutButton = "Ausloggen"; - out.settingsButton = "Einstellungen"; - - out.login_username = "Benutzername"; - out.login_password = "Passwort"; - out.login_confirm = "Passwort bestätigen"; - out.login_remember = "Eingeloggt bleiben"; - - out.login_hashing = "Dein Passwort wird gerade durchgerechnet, das kann etwas dauern."; - - out.login_hello = 'Hallo {0},'; // {0} is the username - out.login_helloNoName = 'Hallo,'; - out.login_accessDrive = 'Dein CryptDrive ansehen'; - out.login_orNoLogin = 'oder'; - - out.login_noSuchUser = 'Ungültiger Benutzername oder Passwort. Versuche es erneut oder registriere dich'; - out.login_invalUser = 'Der Benutzername kann nicht leer sein'; - out.login_invalPass = 'Der Passwort kann nicht leer sein'; - out.login_unhandledError = 'Ein unerwarteter Fehler ist aufgetreten :('; - - out.register_importRecent = "Die Pads aus deiner anonymen Sitzung importieren"; - out.register_acceptTerms = "Ich bin mit den Nutzungsbedingungen einverstanden"; - out.register_passwordsDontMatch = "Passwörter stimmen nicht überein!"; - out.register_passwordTooShort = "Passwörter müssen mindestens {0} Zeichen haben."; - - out.register_mustAcceptTerms = "Du musst mit den Nutzungsbedingungen einverstanden sein."; - out.register_mustRememberPass = "Wir können dein Passwort nicht zurücksetzen, falls du es vergisst. Es ist sehr wichtig, dass du es dir merkst! Bitte markiere das Kästchen, um dies zu bestätigen."; - - out.register_whyRegister = "Wieso solltest du dich registrieren?"; - out.register_header = "Willkommen zu CryptPad"; - out.register_explanation = [ - "

    Lass uns ein paar Punkte überprüfen:

    ", - "
      ", - "
    • Dein Passwort ist dein Geheimnis, um alle deine Dokumente zu verschlüsseln. Wenn du es verlierst, können deine Daten nicht wiederhergestellt werden.
    • ", - "
    • Du kannst die Pads, die du zuletzt angesehen hast, importieren. Sie sind dann in deinem CryptDrive.
    • ", - "
    • Wenn du den Rechner mit anderen teilst, musst du dich ausloggen, wenn du fertig bist. Es ist nicht ausreichend, das Browserfenster oder den Browser zu schließen.
    • ", - "
    " - ].join(''); - - out.register_writtenPassword = "Ich habe meinen Benutzername und mein Passwort notiert. Weiter geht's."; - out.register_cancel = "Zurück"; - - out.register_warning = "\"Ohne Preisgabe von Daten\" bedeutet, dass niemand deine Daten wiederherstellen kann, wenn du dein Passwort verlierst."; - - out.register_alreadyRegistered = "Dieser Benutzer existiert bereits, möchtest du dich einloggen?"; - - // Settings - out.settings_cat_account = "Konto"; - out.settings_cat_drive = "CryptDrive"; - out.settings_cat_cursor = "Cursor"; - out.settings_cat_code = "Code"; - out.settings_cat_pad = "Rich Text"; - out.settings_cat_creation = "Neues Pad"; - out.settings_cat_subscription = "Abonnement"; - out.settings_title = "Einstellungen"; - out.settings_save = "Speichern"; - - out.settings_backupCategory = "Backup"; - out.settings_backupHint = "Erstelle ein Backup deiner Daten im CryptDrive oder stelle die Daten wieder her. Es wird nicht den Inhalt der Pads beinhalten, sondern nur die Schlüssel für den Zugriff."; - out.settings_backup = "Backup"; - out.settings_restore = "Wiederherstellen"; - - out.settings_backupHint2 = "Lade den Inhalt aller Pads herunter. Die Pads werden in einem lesbaren Format heruntergeladen, wenn dies möglich ist."; - out.settings_backup2 = "Mein CryptDrive herunterladen"; - out.settings_backup2Confirm = "Dies wird alle Pads und Dateien von deinem CryptDrive herunterladen. Wenn du fortfahren möchtest, wähle einen Namen und klicke auf OK."; - out.settings_exportTitle = "Dein CryptDrive exportieren"; - out.settings_exportDescription = "Bitte warte, während wir deine Dokumente herunterladen und entschlüsseln. Dies kann ein paar Minuten dauern. Wenn das Browserfenster geschlossen wird, wird der Vorgang unterbrochen."; - out.settings_exportFailed = "Wenn der Download eines Pads länger als 1 Minute dauert, wird dieses Pad nicht im Export enthalten sein. Für jedes nicht exportierte Pad wird der entsprechende Link angezeigt."; - out.settings_exportWarning = "Um eine erhöhte Leistung zu erhalten, empfehlen wir dieses Browserfenster im Vordergrund zu halten."; - out.settings_exportCancel = "Bist du sicher, dass du den Exportvorgang abbrechen möchtest? Der Vorgang muss das nächste Mal wieder von vorn beginnen."; - out.settings_export_reading = "Dein CryptDrive wird gelesen..."; - out.settings_export_download = "Deine Dokumente werden heruntergeladen und entschlüsselt..."; - out.settings_export_compressing = "Daten werden komprimiert..."; - out.settings_export_done = "Der Export ist bereit!"; - out.settings_exportError = "Fehlermeldungen ansehen"; - out.settings_exportErrorDescription = "Wir waren nicht in der Lage, die folgende Dokumente zu exportieren:"; - out.settings_exportErrorEmpty = "Dieses Dokument kann nicht exportiert werden (leerer oder ungültiger Inhalt)."; - out.settings_exportErrorMissing = "Dieses Dokument fehlt auf dem Server (es ist ausgelaufen oder von seinem Eigentümer gelöscht worden)"; - out.settings_exportErrorOther = "Es ist ein Fehler beim Export des folgenden Dokuments aufgetreten: {0}"; - - out.settings_resetNewTitle = "CryptDrive säubern"; - out.settings_resetButton = "Löschen"; - out.settings_reset = "Alle Dateien und Ordnern aus deinem CryptDrive löschen"; - out.settings_resetPrompt = "Diese Aktion wird alle Dokumente deines CryptDrives entfernen.
    "+ - "Bist du sicher, dass du das tun möchtest?
    " + - "Gib I love CryptPad ein, um zu bestätigen."; // TODO: I love CryptPad should be localized - out.settings_resetDone = "Dein CryptDrive ist jetzt leer!"; - out.settings_resetError = "Prüftext ist nicht korrekt. Dein CryptDrive wurde nicht verändert."; - - out.settings_resetTipsAction = "Zurücksetzen"; - out.settings_resetTips = "Tipps"; - out.settings_resetTipsButton = "Die Tipps für CryptDrive zurücksetzen"; - out.settings_resetTipsDone = "Alle Tipps sind wieder sichtbar."; - - out.settings_thumbnails = "Vorschaubilder"; - out.settings_disableThumbnailsAction = "Die Erstellung von Vorschaubildern in deinem CryptDrive deaktivieren"; - out.settings_disableThumbnailsDescription = "Vorschaubilder werden automatisch erstellt und in deinem Browser gespeichert, wenn du ein Pad besuchst. Du kannst diese Funktion hier deaktivieren."; - out.settings_resetThumbnailsAction = "Entfernen"; - out.settings_resetThumbnailsDescription = "Alle Vorschaubilder entfernen, die in deinem Browser gespeichert sind."; - out.settings_resetThumbnailsDone = "Alle Vorschaubilder wurden entfernt."; - - out.settings_importTitle = "Importiere die kürzlich besuchten Dokumente in dein CryptDrive"; - out.settings_import = "Importieren"; - out.settings_importConfirm = "Bist du sicher, dass du die kürzlich besuchten Pads in das CryptDrive deines Kontos importieren möchtest??"; - out.settings_importDone = "Import abgeschlossen"; - - out.settings_autostoreTitle = "Speichern von Pads im CryptDrive"; - out.settings_autostoreHint = "Automatisch: Alle Pads werden in deinem CryptDrive gespeichert.
    " + - "Manuell (immer nachfragen): Wenn du ein Pad noch nicht gespeichert hast, wirst du gefragt, ob du es im CryptDrive speichern willst.
    " + - "Manuell (nie nachfragen): Pads werden nicht automatisch im CryptDrive gespeichert. Die Option zum Speichern wird versteckt.
    "; - out.settings_autostoreYes = "Automatisch"; - out.settings_autostoreNo = "Manuell (nie nachfragen)"; - out.settings_autostoreMaybe = "Manuell (immer nachfragen)"; - - out.settings_userFeedbackTitle = "Rückmeldung"; - out.settings_userFeedbackHint1 = "CryptPad sendet grundlegende Rückmeldungen zum Server, um die Benutzererfahrung verbessern zu können."; - out.settings_userFeedbackHint2 = "Der Inhalt deiner Pads wird nie mit dem Server geteilt."; - out.settings_userFeedback = "Rückmeldungen aktivieren"; - - out.settings_deleteTitle = "Löschung des Kontos"; - out.settings_deleteHint = "Die Löschung eines Kontos ist endgültig. Dein CryptDrive und die Liste deiner Pads werden vom Server gelöscht. Deine restlichen Pads werden nach 90 Tage gelöscht, wenn niemand anderes sie in seinem CryptDrive gespeichert hat."; - out.settings_deleteButton = "Dein Konto löschen"; - out.settings_deleteModal = "Gib die folgenden Informationen an deinen CryptPad-Administrator weiter, damit er die Daten vom Server löschen kann."; - out.settings_deleteConfirm = "Wenn du auf OK klickst, wird dein Konto dauerhaft gelöscht. Bist du sicher?"; - out.settings_deleted = "Dein Konto ist jetzt gelöscht. Klicke auf OK, um zur Hauptseite zu gelangen."; - - out.settings_anonymous = "Du bist nicht eingeloggt. Die Einstellungen hier gelten nur für diesen Browser."; - out.settings_publicSigningKey = "Öffentlicher Schlüssel zum Unterschreiben"; - - out.settings_usage = "Verbrauch"; - out.settings_usageTitle = "Die Gesamtgröße deiner Pads in MB"; // TODO: pinned ?? - out.settings_pinningNotAvailable = "Gepinnte Pads sind nur für angemeldete Benutzer verfügbar."; - out.settings_pinningError = "Etwas ging schief"; - out.settings_usageAmount = "Deine gepinnten Pads belegen {0} MB"; - - out.settings_logoutEverywhereButton = "Ausloggen"; - out.settings_logoutEverywhereTitle = "Überall ausloggen"; - out.settings_logoutEverywhere = "Das Ausloggen in allen andere Websitzungen erzwingen"; - out.settings_logoutEverywhereConfirm = "Bist du sicher? Du wirst dich auf allen deinen Geräten wieder einloggen müssen."; - - out.settings_driveDuplicateTitle = "Duplizierte eigene Pads"; - out.settings_driveDuplicateHint = "Wenn du ein eigenes Pad in einem geteilten Ordner verschiebst, wird eine Kopie in deinem CryptDrive behalten, damit du die Kontrolle des Dokuments nicht verlierst. Du kannst duplizierte Dateien verbergen. Nur die Version in dem geteilten Ordner wird dann angezeigt, außer sie wurde gelöscht. In diesem Fall, wird sie wieder angezeigt."; - out.settings_driveDuplicateLabel = "Duplizierte Pads verbergen"; - - out.settings_codeIndentation = 'Einrückung im Code-Editor (Leerzeichen)'; - out.settings_codeUseTabs = "Mit Tabs einrücken (anstatt mit Leerzeichen)"; - out.settings_codeFontSize = "Schriftgröße im Code-Editor"; - - out.settings_padWidth = "Maximalgröße des Editors"; - out.settings_padWidthHint = "Rich-Text-Pads benutzen normalerweise die größte verfügbare Zeilenbreite, das kann manchmal schwer lesbar sein. Du kannst die Breite des Editors hier reduzieren."; - out.settings_padWidthLabel = "Die Breite des Editors reduzieren"; - out.settings_padSpellcheckTitle = "Rechtschreibprüfung"; - out.settings_padSpellcheckHint = "Mit dieser Option kann die Rechtschreibprüfung in Rich-Text-Pads aktiviert werden. Rechtschreibfehler werden rot unterstrichen. Halte die Strg- oder Meta-Taste gedrückt, um Verbesserungsvorschläge anzuzeigen."; - out.settings_padSpellcheckLabel = "Rechtschreibprüfung in Rich-Text-Pads aktivieren"; - - out.settings_creationSkip = "Dialog bei Erstellung neuer Pads überspringen"; - out.settings_creationSkipHint = "Dieser Dialog erlaubt Einstellungen für mehr Kontrolle und Sicherheit bei deinen Pads. Aber der zusätzliche Dialog verlangsamt die Arbeit. Mit dieser Option kannst du diesen Dialog überspringen und die Standard-Einstellungen wählen."; - out.settings_creationSkipTrue = "Überspringen"; - out.settings_creationSkipFalse = "Anzeigen"; - - out.settings_templateSkip = "Wahl der Vorlage überspringen"; - out.settings_templateSkipHint = "Wenn du ein neues Pad erstellst und passende Vorlagen vorhanden sind, erscheint ein Dialog zur Auswahl einer Vorlage. Hier kannst du diesen Dialog überspringen und somit keine Vorlage verwenden."; - - out.settings_ownDriveTitle = "Aktiviere die neuesten Funktionen für dein Konto"; - out.settings_ownDriveHint = "Aus technischen Gründen sind nicht alle neue Funktionen für ältere Konten verfügbar. Ein kostenloses Upgrade wird dein CryptDrive für zukünftige Funktionen vorbereiten, ohne deine Arbeit zu stören."; - out.settings_ownDriveButton = "Upgrade deines Kontos"; - out.settings_ownDriveConfirm = "Das Upgrade deines Kontos kann einige Zeit dauern. Du wirst dich auf allen Geräten neu einloggen müssen. Bist du sicher?"; - out.settings_ownDrivePending = "Das Upgrade deines Kontos läuft. Bitte schließe die Seite nicht und lade sie nicht neu, bis dieser Vorgang abgeschlossen ist."; - - out.settings_changePasswordTitle = "Dein Passwort ändern"; - out.settings_changePasswordHint = "Ändere das Passwort deines Kontos, ohne deine Daten zu verlieren. Du musst einmal das aktuelle Passwort eingeben und dann das gewünschte neue Passwort zweimal.
    " + - "Wir können das Passwort nicht zurücksetzen, wenn du es vergisst. Sei also besonders sorgfältig!"; - out.settings_changePasswordButton = "Passwort ändern"; - out.settings_changePasswordCurrent = "Aktuelles Passwort"; - out.settings_changePasswordNew = "Neues Passwort"; - out.settings_changePasswordNewConfirm = "Neues Passwort bestätigen"; - out.settings_changePasswordConfirm = "Bist du sicher? Du wirst dich auf allen Geräten neu einloggen müssen."; - out.settings_changePasswordError = "Ein Fehler ist aufgetreten. Wenn du dich nicht mehr einloggen oder dein Passwort ändern kannst, solltest du die Administratoren des CryptPad-Servers kontaktieren."; - out.settings_changePasswordPending = "Dein Passwort wird geändert. Bitte schließe die Seite nicht und lade sie nicht neu, bis dieser Vorgang abgeschlossen ist."; - out.settings_changePasswordNewPasswordSameAsOld = "Dein neues Passwort muss sich von deinem aktuellen Passwort unterscheiden."; - - out.settings_cursorColorTitle = "Cursorfarbe"; - out.settings_cursorColorHint = "Die Farbe deines Cursors in gemeinsam bearbeiteten Dokumente ändern."; - out.settings_cursorShareTitle = "Meine Cursorposition teilen"; - out.settings_cursorShareHint = "Du kannst wählen, ob andere Benutzer deinen Cursor in gemeinsam bearbeiteten Dokumenten sehen können."; - out.settings_cursorShareLabel = "Position teilen"; - out.settings_cursorShowTitle = "Position des Cursors von anderen Nutzern anzeigen"; - out.settings_cursorShowHint = "Du kannst wählen, ob die Cursor von anderen Nutzern in gemeinsam bearbeiteten Dokumenten sichtbar sind."; - out.settings_cursorShowLabel = "Cursor anzeigen"; - - out.upload_title = "Datei hochladen"; - out.upload_type = "Typ"; - out.upload_modal_title = "Uploadeinstellungen"; - out.upload_modal_filename = "Dateiname (die Dateierweiterung {0} wird automatisch hinzugefügt)"; - out.upload_modal_owner = "Eigene Datei"; - out.upload_serverError = "Serverfehler: Die Datei kann aktuell nicht hochgeladen werden."; - out.upload_uploadPending = "Ein anderer Hochladevorgang läuft gerade. Möchtest du diesen abbrechen und deine neue Datei hochladen?"; - out.upload_success = "Deine Datei ({0}) wurde erfolgreich hochgeladen und zu deinem CryptDrive hinzugefügt."; - out.upload_notEnoughSpace = "Der verfügbare Speicherplatz in deinem CryptDrive reicht leider nicht für diese Datei."; - out.upload_notEnoughSpaceBrief = "Unzureichender Speicherplatz"; - out.upload_tooLarge = "Diese Datei ist zu groß, um hochgeladen zu werden."; - out.upload_tooLargeBrief = 'Datei zu groß'; - out.upload_choose = "Eine Datei wählen"; - out.upload_pending = "In der Warteschlange"; - out.upload_cancelled = "Abgebrochen"; - out.upload_name = "Dateiname"; - out.upload_size = "Größe"; - out.upload_progress = "Fortschritt"; - out.upload_mustLogin = "Du muss eingeloggt sein, um Dateien hochzuladen"; - out.upload_up = "Hochladen"; - out.download_button = "Entschlüsseln und herunterladen"; - out.download_mt_button = "Herunterladen"; - out.download_resourceNotAvailable = "Diese Ressource war nicht verfügbar... Drücke Esc, um fortzufahren."; - out.download_dl = "Herunterladen"; - out.download_step1 = "Laden..."; - out.download_step2 = "Entschlüsselung..."; - - out.todo_title = "CryptTodo"; - out.todo_newTodoNamePlaceholder = "Die Aufgabe prüfen..."; - out.todo_newTodoNameTitle = "Diese Aufgabe zu deiner ToDo-Liste hinzufügen"; - out.todo_markAsCompleteTitle = "Diese Aufgabe als erledigt markieren"; - out.todo_markAsIncompleteTitle = "Diese Aufgabe als nicht erledigt markieren"; - out.todo_removeTaskTitle = "Diese Aufgabe aus deiner ToDo-Liste entfernen"; - - // pad - out.pad_showToolbar = "Werkzeugleiste anzeigen"; - out.pad_hideToolbar = "Werkzeugleiste verbergen"; - out.pad_base64 = "Dieses Pad enthält Bilder die nicht ressourcenschonend gespeichert sind. Sie werden die Größe des Pads im CryptDrive belasten und den Ladevorgang verlangsamen. Du kannst diese Bilder zum neuen Format migrieren. Sie werden dann separat in deinem CryptDrive gespeichert. Möchtest du die Bilder jetzt migrieren?"; - - // markdown toolbar - out.mdToolbar_button = "Die Markdown-Werkzeugleiste anzeigen oder verbergen"; - out.mdToolbar_defaultText = "Dein Text hier"; - out.mdToolbar_help = "Hilfe"; - out.mdToolbar_tutorial = "http://www.markdowntutorial.com/"; - out.mdToolbar_bold = "Fett"; - out.mdToolbar_italic = "Kursiv"; - out.mdToolbar_strikethrough = "Durchgestrichen"; - out.mdToolbar_heading = "Überschrift"; - out.mdToolbar_link = "Link"; - out.mdToolbar_quote = "Zitat"; - out.mdToolbar_nlist = "Nummerierte Liste"; - out.mdToolbar_list = "Aufzählung"; - out.mdToolbar_check = "Aufgabenliste"; - out.mdToolbar_code = "Code"; - - // index.html - - out.home_product = "CryptPad ist eine Alternative mit eingebautem Datenschutz zu verbreiteten Office- und Clouddiensten. Mit CryptPad wird der gesamte Inhalt verschlüsselt, bevor er an den Server gesendet wird. Das bedeutet, dass keiner auf den Inhalt zugreifen kann, es sei denn du gibst die Schlüssel weiter. Selbst wir haben diesen Zugriff nicht."; - out.home_host = "Dies ist eine unabhängige Installation der CrypPad-Software. Der Quellcode ist auf GitHub verfügbar."; - out.home_host_agpl = "CryptPad kann unter der Lizenz AGPL3 verbreitet werden"; - out.home_ngi = "Gewinner beim NGI Award"; - - //about.html - out.about_intro = 'CryptPad wurde erstellt im Forschungsteam von XWiki SAS, einem kleinen Unternehmen in Paris (Frankreich) und Iasi (Rumänien). Im Kernteam arbeiten 3 Mitglieder an CryptPad, außerdem gibt es einige Mitwirkende innerhalb und außerhalb von XWiki SAS.'; - out.about_core = 'Kernentwickler'; - out.about_contributors = 'Wichtige Mitwirkende'; - - // contact.html - out.main_about_p22 = 'Uns antweeten'; - out.main_about_p23 = 'Einen Fehlerbericht auf GitHub erstellen'; - out.main_about_p24 = 'Hallo sagen (Matrix)'; - out.main_about_p25 = 'Uns eine E-Mail schicken'; - out.main_about_p26 = 'Wenn du Fragen oder Kommentare hast, freuen wir uns, von dir zu hören!'; - - out.main_info = "

    Vertrauenswürdige Zusammenarbeit

    Lass deine Ideen gemeinsam wachsen, während die Zero-Knowledge-Technologie den Schutz deiner Daten sogar uns gegenüber sichert."; - out.main_catch_phrase = "Die Cloud ohne Preisgabe deiner Daten"; - - out.main_richText = 'Rich-Text-Editor'; - out.main_code = 'Code-Editor'; - out.main_slide = 'Folien-Editor'; - out.main_poll = 'Umfragen'; - out.main_drive = 'CryptDrive'; - - out.main_richTextPad = 'Rich-Text-Pad'; - out.main_codePad = 'Markdown/Code-Pad'; - out.main_sheetPad = 'Tabellen (Beta)'; - out.main_slidePad = 'Markdown-Präsentation'; - out.main_pollPad = 'Umfrage oder Terminabstimmung'; - out.main_whiteboardPad = 'Whiteboard'; - out.main_kanbanPad = 'Kanban-Board'; - out.main_localPads = 'Lokale Dokumente'; - out.main_yourCryptDrive = 'Dein CryptDrive'; - out.main_footerText = "Mit CryptPad kannst du schnell kollaborative Dokumente erstellen, um Notizen oder Ideen zusammen mit anderen zu bearbeiten."; - - out.footer_applications = "Anwendungen"; - out.footer_contact = "Kontakt"; - out.footer_aboutUs = "Über uns"; - - out.about = "Über uns"; - out.privacy = "Datenschutz"; - out.contact = "Kontakt"; - out.terms = "Nutzungsbedingungen"; - out.blog = "Blog"; - - out.topbar_whatIsCryptpad = "Was ist CryptPad"; - - // what-is-cryptpad.html - - out.whatis_title = 'Was ist CryptPad'; - out.whatis_collaboration = 'Effektive und und leichte Zusammenarbeit'; - out.whatis_collaboration_p1 = 'Mit CryptPad kannst du kollaborative Dokumente erstellen, um Notizen und Ideen gemeinsam zu bearbeiten. Wenn du dich registrierst und einloggst, bekommst du die Möglichkeit, Dateien hochzuladen und Ordner einzurichten, um alle deine Dokumente zu organisieren. Als registrierter Nutzer erhältst du kostenlos 50 MB Speicherplatz.'; - out.whatis_collaboration_p2 = 'Du kannst den Zugang zu einem CryptPad-Dokument teilen, indem du einfach den entsprechenden Link teilst. Du kannst auch einen schreibgeschützten Zugang erstellen, um die Ergebnisse deiner Arbeit zu teilen, während du sie noch bearbeitest.'; - out.whatis_collaboration_p3 = 'Du kannst Rich-Text Dokumente mit dem CKEditor erstellen. Außerdem kannst du Markdown-Dokumente erstellen, die in Echtzeit formatiert angezeigt werden, während du tippst. Du kannst auch die Umfrage-Anwendung verwenden, um Termine unter mehrere Teilnehmern zu abzustimmen.'; - out.whatis_zeroknowledge = 'Zero Knowledge - Ohne Preisgabe deiner Daten'; - out.whatis_zeroknowledge_p1 = "Wir wollen nicht wissen, was du gerade tippst. Und mit moderner Verschlüsselungstechnologie, kannst du sicher sein, dass wir es auch nicht können. CryptPad verwendet 100% clientseitige Verschlüsselung, um den Inhalt vor uns, den Hostern dieser Website, zu schützen."; - out.whatis_zeroknowledge_p2 = 'Wenn du dich registrierst und einloggst, werden dein Benutzername und dein Passwort in einen Schlüssel mit einer Scrypt Schlüssel-Ableitungsfunktion umgerechnet. Weder dieser Schlüssel noch der Benutzername oder das Passwort werden zum Server geschickt. Stattdessen werden sie clientseitig benutzt, um den Inhalt deines CryptDrives zu entschlüsseln. Dieses beinhaltet alle Dokumente, die dir zugänglich sind.'; - out.whatis_zeroknowledge_p3 = 'Wenn du Link zu einem Dokument teilst, teilst du auch den kryptografischen Schlüssel, der Zugang zu diesem Dokument gibt. Da dieser Schlüssel im Fragmentbezeichner liegt, wird er nie direkt zum Server geschickt. Bitte lies unsere Blogeintrag über Datenschutz, um mehr darüber zu erfahren, auf welche Typen von Metadaten wir zugreifen können und auf welche nicht.'; - out.whatis_drive = 'Organisieren mit CryptDrive'; - out.whatis_drive_p1 = 'Sobald auf ein Dokument mit CryptPad zugegriffen wird, wird es automatisch zum Stamm-Ordner deines CryptDrives hinzugefügt. Später kannst du diese Dokumente in eigenen Ordnern organisieren oder du kannst es in den Papierkorb verschieben. CryptDrive erlaubt die Suche nach deinen Dokumenten, wie und wann du willst.'; - out.whatis_drive_p2 = 'Mit einfachem Drag & Drop kannst du die Pads in deinem CryptDrive verschieben. Die Links zu diesen Pads bleiben erhalten, damit Mitarbeiter nie ihren Zugang verlieren.'; - out.whatis_drive_p3 = 'Du kannst auch Dateien in dein CryptDrive hochladen und mit deinen Kollegen teilen. Hochgeladene Dateien können genau so wie kollaborative Pads organisiert werden.'; - out.whatis_business = 'CryptPad im Business'; - out.whatis_business_p1 = 'Die Zero-Knowledge-Verschlüsselung von CryptPad multipliziert die Effektivität existierender Sicherheitsprotokolle durch Spiegelung der Zugangskontrollen von Organisationen in Kryptografie. Weil sensible Daten nur mit den Zugangsdaten des Nutzers entschlüsselt werden können, ist CryptPad ein weniger lohnendes Ziel verglichen mit traditionellen Cloud-Diensten. Lies das CryptPad-Whitepaper, um mehr darüber zu erfahren, wie CryptPad deinem Unternehmen helfen kann.'; - out.whatis_business_p2 = 'CryptPad kann auf eigenen Rechnern installiert werden. Entwickler der CryptPad-Software von XWiki SAS können kommerzielle Unterstützung, Anpassung und Entwicklung anbieten. Bitte schicke eine E-Mail an sales@cryptpad.fr, um mehr zu erfahren.'; - - // privacy.html - - out.policy_title = 'Datenschutzbestimmungen für CryptPad'; - out.policy_whatweknow = 'Was wir über dich wissen'; - out.policy_whatweknow_p1 = 'Als im Web gehostete Anwendung hat CryptPad Zugriff auf die Metadaten, die vom HTTP-Protokoll übertragen werden. Dies umfasst deine IP-Adresse und diverse andere HTTP-Header, die es ermöglichen, deinen Browser zu identifizieren. Um zu sehen, welche Daten dein Browser preisgibt, kannst du die Seite WhatIsMyBrowser.com besuchen.'; - out.policy_whatweknow_p2 = 'Wir nutzen Kibana, eine Open-Source-Analyseplattform, um mehr über unsere Nutzer zu erfahren. Kibana teilt uns mit, wie du Cryptpad gefunden hast — durch direkten Zugriff, mit Hilfe einer Suchmaschine oder über einen Link auf einer anderen Seite wie beispielsweise Reddit oder Twitter.'; - out.policy_howweuse = 'Wie wir das Wissen anwenden'; - out.policy_howweuse_p1 = 'Wir nutzen diese Informationen, um besser entscheiden zu können, wie CryptPad beworben werden kann und um derzeit genutzte Strategien zu evaluieren. Informationen über deinen Standort helfen uns bei der Abschätzung, welche Sprachen wir besser unterstützen sollten.'; - out.policy_howweuse_p2 = "Informationen zu deinem Browser (ob du auf einem Desktop oder Smartphone arbeitest) helfen uns bei der Entscheidung, welche Funktionen priorisiert werden sollen. Unser Entwicklerteam ist klein, deshalb ist es uns wichtig, Entscheidungen derart zu treffen, dass möglichst viele Nutzer davon profitieren."; - out.policy_whatwetell = 'Was wir anderen über dich (nicht) erzählen'; - out.policy_whatwetell_p1 = 'Wir reichen keine von uns gesammelten Daten weiter, außer im Falle einer gerichtlichen Anordnung.'; - out.policy_links = 'Links zu anderen Seiten'; - out.policy_links_p1 = 'Diese Seite beinhaltet Links zu anderen Seiten, teilweise werden diese von anderen Organisationen verwaltet. Wir sind nicht für den Umgang mit der Privatsphäre und die Inhalte der anderen Seiten verantwortlich. Generell werden Links zu externen Seiten in einem neuem Fenster geöffnet, um zu verdeutlichen, dass du CryptPad.fr verlässt.'; - out.policy_ads = 'Werbung'; - out.policy_ads_p1 = 'Wir zeigen keine Onlinewerbung, können aber zu Organisationen verlinken, die unsere Forschung finanzieren.'; - out.policy_choices = 'Deine Möglichkeiten'; - out.policy_choices_open = 'Unser Code ist frei, deshalb kannst du jederzeit deine eigene CryptPad-Instanz hosten.'; - out.policy_choices_vpn = 'Wenn du unsere gehostete Instanz nutzen möchtest, ohne deine IP-Adresse zu offenbaren, bitten wir dich darum, deine IP-Adresse zu verschleiern. Das ist zum Beispiel mit dem Tor Browser oder einem VPN-Zugang möglich.'; - out.policy_choices_ads = 'Wenn du unsere Analysesoftware blockieren möchtest, kannst du Blocker-Software wie Privacy Badger verwenden.'; - - // features.html - - out.features = "Funktionen"; - out.features_title = "Vergleich der Funktionen"; - out.features_feature = "Funktion"; - out.features_anon = "Anonymer Benutzer"; - out.features_registered = "Angemeldete Benutzer"; - out.features_premium = "Premium-Benutzer"; - out.features_notes = "Hinweise"; - - out.features_f_apps = "Zugang zu den wichtigsten Anwendungen"; - out.features_f_core = "Gemeinsame Funktionen der Anwendungen"; - out.features_f_core_note = "Bearbeiten, Importieren & Exportieren, Verlauf, Benutzerliste, Chat"; - out.features_f_file0 = "Dateien öffnen"; - out.features_f_file0_note = "Von anderen geteilte Dateien ansehen und herunterladen"; - out.features_f_cryptdrive0 = "Begrenzter Zugang zu CryptDrive"; - out.features_f_cryptdrive0_note = "Du kannst besuchte Dokumente in deinem Browser speichern, damit du sie später öffnen kannst"; - out.features_f_storage0 = "Speicherung für eine begrenzte Zeit"; - out.features_f_storage0_note = "Neue Dokumente könnten nach drei Monaten ohne Aktivität gelöscht werden"; - - out.features_f_anon = "Alle Funktionen für anonyme Benutzer"; - out.features_f_anon_note = "Mit einer besseren Benutzbarkeit und mehr Kontrolle über deine Dokumente"; - out.features_f_cryptdrive1 = "Alle Funktionen des CryptDrives"; - out.features_f_cryptdrive1_note = "Ordner, geteilte Ordner, Vorlagen, Tags"; - out.features_f_devices = "Deine Dokumente auf allen deinen Geräten"; - out.features_f_devices_note = "Überall Zugang zu deinem CryptDrive mit deinem Benutzerkonto"; - out.features_f_social = "Soziale Anwendungen"; - out.features_f_social_note = "Ein Profil erstellen, ein Profilbild verwenden, mit Kontakten chatten"; - out.features_f_file1 = "Dateien hochladen und teilen"; - out.features_f_file1_note = "Dateien mit Freunden teilen oder sie in Dokumenten einbetten"; - out.features_f_storage1 = "Langfristige Speicherung (50 MB)"; - out.features_f_storage1_note = "Dateien in deinem CryptDrive werden nicht wegen Inaktivität gelöscht"; - out.features_f_register = "Registrieren (kostenlos)"; - out.features_f_register_note = "Keine E-Mail-Adresse oder persönliche Informationen notwendig"; - - out.features_f_reg = "Alle Funktionen für angemeldete Benutzer"; - out.features_f_reg_note = "Du unterstützt die Entwicklung von CryptPad"; - out.features_f_storage2 = "Mehr Speicherplatz"; - out.features_f_storage2_note = "Zwischen 5 GB und 50 GB, abhängig vom gewählten Tarif"; - out.features_f_support = "Schnellerer Support"; - out.features_f_support_note = "Professioneller Support via E-Mail mit dem Team-Tarif"; - out.features_f_supporter = "Werde ein Unterstützer des Datenschutzes"; - out.features_f_supporter_note = "Hilf uns beweisen, dass Software mit eingebauten Datenschutz die Normalität sein sollte"; - out.features_f_subscribe = "Premium kaufen"; - out.features_f_subscribe_note = "Du muss zuerst in CryptPad eingeloggt sein"; - - // faq.html - - out.faq_link = "FAQ"; - out.faq_title = "Häufige Fragen"; - out.faq_whatis = "Was ist CryptPad?"; - out.faq = {}; - out.faq.keywords = { - title: 'Schlüsselkonzepte', - pad: { - q: "Was ist ein Pad?", - a: "Ein CryptPad-Dokument wird meist einfach Pad genannt. Dies wurde von Etherpad übernommen, einem kollaborativen Echtzeit-Editor.\n"+ - "Es beschreibt ein Dokument, das du in deinem Browser bearbeiten kannst, normalerweise mit der Möglichkeit für andere Personen, die Veränderungen nahezu in Echtzeit zu sehen." - }, - owned: { - q: "Was ist ein eigenes Pad?", - a: "Ein eigenes Pad ist ein Pad mit einem definierten Eigentümer, der anhand seiner Unterschrift mit öffentlichen Schlüssel erkannt wird." + - "Der Eigentümer eines Pads kann entscheiden, das Pad zu löschen. In diesem Fall ist das Pad auch für andere Nutzer nicht mehr verfügbar. Dabei spielt es keine Rolle, ob das Pad im CryptDrive der anderen Nutzer gespeichert war oder nicht." - }, - expiring: { - q: "Was sind ablaufende Pads?", - a: "Ein Pad kann mit einem Ablaufdatum versehen werden. Nach diesem Datum wird es automatisch vom Server gelöscht." + - " Das Ablaufdatum kann sowohl sehr bald sein (in ein paar Stunden) oder in weiter Zukunft liegen (in hunderten Monaten)." + - " Das Pad und sein gesamter Verlauf wird nach dem Ablaufdatum endgültig gelöscht, auch wenn es gerade noch bearbeitet wird.

    " + - "Wenn ein Dokument ein Ablaufdatum hat, kann man dieses Datum in den Eigenschaften sehen: entweder mit einem Rechtsklick im CryptDrive oder mit der Eigenschaften-Ansicht im geöffneten Pad." - }, - tag: { - q: "Wie kann ich Tags verwenden?", - a: "Du kannst Pads und im CryptDrive hochgeladene Dateien taggen. Dies bedeutet, sie mit einem Stichwort (Tag) zu versehen. Während der Bearbeitung gibt es dafür die Schaltfläche Tag () in der Werkzeugleiste." + - " Wenn du die Pads und Dateien in deinem CryptDrive nach einem Tag durchsuchen möchtest, beginne den Suchbegriff mit einem Hashtag, also beispielsweise #crypto." - }, - template: { - q: "Was ist eine Vorlage?", - a: "Eine Vorlage ist ein Pad, das dazu verwendet werden kann, um den Inhalt für neu erstellte Pads zu definieren." + - " Jedes existierende Pad kann in eine Vorlage umgewandelt werden, indem es in den Bereich Vorlagen des CryptDrives verschoben wird." + - " Du kannst auch eine Kopie eines Dokuments erstellen, die zur Vorlage wird, indem du auf die Vorlagen-Schaltfläche () der Werkzeugleiste des Editors klickst." - }, - abandoned: { - q: "Was ist ein verlassenes Pad?", - a: "Ein verlassenes Pad ist ein Pad, das kein registrierter Benutzer in seinem CryptDrive gespeichert hat und in den letzten sechs Monaten nicht bearbeitet wurde. Verlassene Pads werden automatisch vom Server gelöscht." - }, - }; - out.faq.privacy = { - title: 'Privatsphäre', - different: { - q: "Wie unterscheidet sich CryptPad von anderen Pad-Diensten?", - a: "CryptPad verschlüsselt Veränderungen deiner Dokumente, bevor diese Information zum Server gesendet wird. Somit können wir nicht lesen, was du getippt hast." - }, - me: { - q: "Welche Informationen hat der Server über mich?", - a: "Die Administratoren des Servers können die IP-Adresse der Personen sehen, die CryptPad besuchen." + - " Wir speichern nicht, welche Adresse welches Pad besucht, aber wir könnten es tun. Wir haben aber keinen Zugriff auf den entschlüsselten Inhalt der Pads." + - " Wenn du besorgt bist, dass wir diese Informationen auswerten, solltest du davon auszugehen, dass wir es tun. Denn wir können nicht beweisen, dass wir es nicht tun.

    " + - - " Wir sammeln grundlegende technische Informationen darüber, wie CryptPad benutzt wird. Dies umfasst beispielsweise die Größe des Bildschirms und welche Schaltflächen am häufigsten angeklickt werden." + - " Das hilft uns dabei, unsere Software besser zu machen. Aber diese Sammlung unterbleibt, wenn du den Haken bei Rückmeldung aktivieren entfernst.

    " + - - "Wir verfolgen, welche Pads im CryptDrive eines Nutzers gespeichert werden. Dies ist notwendig, um die Speicherbegrenzungen umzusetzen. Den Inhalt der Pads kennen wir nicht." + - " Die Speicherbegrenzungen sind mit dem öffentlichen Schlüssel eines Benutzers verbunden. Aber wir verbinden Namen oder E-Mail-Adressen nicht mit diesen öffentlichen Schlüsseln.

    " + - - " Du kannst mehr darüber in diesem Blogeintrag lesen." - }, - register: { - q: "Weisst der Server mehr über mich, wenn ich registriere?", - a: "Wir verlangen nicht Deine Emailadresse und der Server kennt Benutzername und Passwort auch dann nicht, wenn du dich registrierst. " + - " Statt dessen generiert das Registrierungs- und Anmeldeformular ein Schlüsselpaar mit deiner Eingabe. Nur der öffentliche Schlüssel dieses Schlüsselpaars wird zum Server geschickt." + - " Mit diesem öffentlichen Schlüssel könenn wir z.B. die Menge der Daten, die du benutzt, kontrollieren, denn jeder Benutzer hat eine beschränkte Quota.

    " + - - " Wir benutzen die Rückmeldungs-Funktion, um den Server zu informieren, dass jemand mit deiner IP ein Konto registriert hat." + - " Damit können wir messen, wie viele Benutzer CryptPad Konten registrieren und aus welchen Regionen. Somit können wir erfahren, welche Sprache besseren Support braucht.

    " + - - " Wenn Du registrierst, erstellst Du einen öffentlichen Schlüssel, der benutzt wird, um den Server zu informieren, dass er Dokumente auch dann nicht löschen sollte, wenn sie nicht aktiv benutzt werden." + - " Diese Information zeigt dem Server, wie Du CryptPad benutzt und dieses System erlaubt uns, die Dokumente zu löschen, wofür sich keiner mehr interessiert." - }, - other: { - q: "Was können andere Benutzer über mich erfahren?", - a: "Wenn du ein Pad mit jemand anderen bearbeitest, kommunizierst du mit dem Server. Nur wir kennen deine IP-Adresse." + - " Andere Benutzer sehen deinen Benutzernamen, dein Benutzerbild, den Link zu deinem Profils (wenn du eins hast) und deinen öffentlichen Schlüssel (um die Nachrichten zu diesen Benutzern zu verschlüsseln)." - }, - anonymous: { - q: "Macht mich CryptPad anonym?", - a: "Auch wenn CryptPad so konzipiert wurde, dass es so wenig wie möglich über dich weiß, liefert es keine strenge Anonymität." + - " Unsere Server kennen deine IP-Adresse, allerdings kannst du diese Information verbergen, indem du Tor verwendest." + - " Tor zu verwenden, ohne dein Verhalten zu ändern, garantiert auch keine Anonymität, da der Server Benutzer anhand ihrer einzigartigen öffentlichen Schlüssel identifizieren kann." + - " Wenn du denselben Schlüssel mit und ohne Tor benutzt, kann deine Sitzung de-anonymisiert werden.

    " + - - " Für Benutzer mit niedrigeren Ansprüchen an ihre Privatsphäre erfordert CryptPad im Gegenteil zu anderen Onlinediensten keine Identifikation mit Namen, Telefonnummer oder E-Mail-Adressen." - }, - policy: { - q: "Habt ihr eine Datenschutzerklärung?", - a: "Ja! Sie ist hier verfügbar." - } - }; - out.faq.security = { - title: 'Sicherheit', - proof: { - q: "Wie benutzt ihr Zero-Knowledge-Beweise?", - a: "Wir benutzen den Begriff Ohne Preisgabe von Daten (Zero Knowledge) nicht im Sinn eines Zero-Knowledge-Beweises, sondern im Sinn eines Zero-Knowledge-Webdienstes." + - " Ein Zero-Knowledge-Webdienst verschlüsselt die Benutzerdaten im Browser, ohne dass der Server je Zugang zu den unverschlüsselten Daten oder zu den Schlüsseln hat.

    " + - " Wir haben hier eine kurze Liste von Zero-Knowledge-Webdiensten erstellt." - }, - why: { - q: "Wieso sollte ich CryptPad verwenden?", - a: "Unsere Position ist, dass Clouddienste nicht Zugang zu deinen Daten verlangen sollten, damit du sie mit deinen Kontakten und Mitarbeitern teilen kannst." + - " Wenn du einen Webdienst benutzt, der nicht explizit angibt, dass kein Zugang zu deinen Information möglich ist, ist es sehr wahrscheinlich, dass deine Information für andere Zwecke verwertet werden." - }, - compromised: { - q: "Liefert mir CryptPad einen Schutz, wenn mein Gerät kompromittiert wird?", - a: "Für den Fall, dass dein Gerät gestohlen wird, ermöglicht CryptPad, das Ausloggen aller Geräte zu erzwingen - außer dem, das du gerade verwendest." + - " Gehe dazu zur Seite mit deinen Einstellungen und klicke auf Überall ausloggen." + - " Alle anderen Geräte, die mit diesem Konto verbunden sind, werden dann ausgeloggt. " + - " Alle früher verbundenen Geräte werden ausgeloggt, sobald sie CryptPad besuchen.

    " + - - "Die beschriebene Funktion ist derzeit im Browser implementiert und nicht im Server." + - " Somit schützt sie nicht vor staatlichen Akteuren. Aber sie sollte ausreichend sein, wenn du nach Verwendung eines öffentlichen Computers vergessen hast dich auszuloggen." - }, - crypto: { - q: "Welche Kryptografie benutzt ihr?", - a: "CryptPad basiert auf zwei quelloffenen Kryptografiebibliotheken: " + - "tweetnacl.js und scrypt-async.js.

    " + - - "Scrypt ist eine Passwort-basierte Schlüsselableitungsfunktion. Wir werden sie, um deinen Benutzernamen und dein Passwort in ein einzigartiges Schlüsselpaar umzuwandeln. Dieses sichert den Zugang zu deinem CryptDrive, so dass nur du auf die Liste deiner Pads zugreifen kannst.

    " + - - " Wir verwenden die Verschlüsselung xsalsa20-poly1305 und x25519-xsalsa20-poly1305 von tweetnacl, um Dokumente und den Chatverlauf zu verschlüsseln." - } - }; - out.faq.usability = { - title: 'Bedienung', - register: { - q: "Was kriege ich, wenn ich mich registriere?", - a: "Registrierte Benutzer können Funktionen verwenden, die anonyme Nutzer nicht verwenden können. Es gibt hier eine entsprechende Übersicht." - }, - share: { - q: "Wie kann ich den Zugang zu einem verschlüsselten Pad mit Freunden teilen?", - a: "CryptPad fügt den geheimen Schlüssel deines Pad nach dem Zeichen # zur URL hinzu." + - " Alles, was nach diesem Zeichen kommt, wird nicht zum Server gesendet. Also haben wir nie Zugang zu deinen Schlüsseln." + - " Wenn du den Link zu einem Pad teilst, teilst du auch die Fähigkeit zum Lesen und zum Bearbeiten." - }, - remove: { - q: "Ich habe ein Dokument aus meinem CryptDrive gelöscht, aber der Inhalt ist noch verfügbar. Wie kann ich es entfernen?", - a: "Nur eigene Pads, die im Februar 2018 eingeführt wurden, können gelöscht werden und zwar nur von deren Eigentümer " + - " (der Benutzer, der das Dokument ursprünglich erstellt hat). Wenn du nicht der Eigentümer des Pads bist, musst du den Eigentümer bitten, dass er dieses für dich löscht." + - " Bei Pads, deren Eigentümer du bist, kannst du auf das Pad in deinem CryptDrive rechtsklicken und Vom Server löschen wählen." - }, - forget: { - q: "Was passiert, wenn ich mein Passwort vergesse?", - a: " Wenn wir dein Passwort zurücksetzen könnten, könnten wir auch auf deine Daten zugreifen." + - " Wenn du dein Passwort nicht aufgeschrieben hast und dich auch nicht daran erinnern kannst, kannst du vielleicht deine Pads aus deinem Browserverlauf zurückgewinnen." - }, - change: { - q: "Was ist, wenn ich mein Passwort ändern möchte?", - a: "Du kannst dein CrypPad-Passwort in den Einstellungen ändern." - }, - devices: { - q: "Ich bin auf zwei Geräten eingeloggt und sehe zwei unterschiedliche CryptDrives. Wie ist das möglich?", - a: "Es ist möglich, dass du zweimal mit dem gleichen Benutzernamen registriert bist, aber mit unterschiedlichen Passwörtern." + - " Weil der CyrptPad-Server dich anhand deiner kryptografischen Unterschrift und nicht anhand deines Namens identifiziert, kann er nicht verhindern, dass der gleiche Name mehrmals verwendet wird." + - " Somit hat jedes Benutzerkonto eine einzigartige Kombination aus Benutzername und Passwort." + - " Angemeldete Benutzer können ihren Benutzernamen im oberen Teil der Einstellungsseite sehen." - }, - folder: { - q: "Kann ich ganze Ordner in CryptDrive teilen?", - a: "Ja, du kannst ganze Ordner und alle Pads darin teilen." - }, - feature: { - q: "Könnt ihr diese eine Funktion hinzufügen, die ich brauche?", - a: "Viele Funktionen wurden in CryptPad umgesetzt, weil Benutzer darum gebeten haben." + - " Auf unserer Kontaktseite haben wir die Möglichkeiten aufgelistet, wie man mit uns in Kontakt treten kann.

    " + - - "Leider können wir aber nicht garantieren, dass wir alle Funktionen umsetzen, um die Benutzer bitten." + - " Wenn eine Funktion kritisch für deine Organisation ist, kannst du die Entwicklung dieser Funktion sponsern und somit deren Realisierung sichern." + - " Bitte kontaktiere sales@cryptpad.fr für mehr Informationen.

    " + - - "Auch wenn du nicht die Entwicklung einer Funktion sponsorn kannst, sind wir an Rückmeldungen interessiert. Diese helfen uns dabei, CryptPad zu verbessern." + - " Kontaktiere uns jederzeit über einen der oben angegebenen Wege." - }, - }; - out.faq.other = { - title: "Andere Fragen", - pay: { - q: "Wieso soll ich zahlen, wenn so viele Funktionen sowieso kostenfrei sind?", - a: "Wir geben Unterstützern zusätzlichen Speicherplatz sowie die Möglichkeit, die Speicherplatzbegrenzung ihrer Freunde zu erhöhen (erfahre mehr).

    " + - - " Über diese diese kurzfristigen Vorteile hinaus kannst du, wenn du ein Premiumangebot annimmst, die aktive Weiterentwicklung von CryptPad fördern. Das beinhaltet, Fehler zu beseitigen, neue Funktionen zu umzusetzen und Installationen von CryptPad auf eigenen Servern zu erleichtern." + - " Zusätzlich hilfst du, anderen Anbietern zu beweisen, dass Leute datenschutzfreundliche Technologien unterstützen. Wir hoffen, dass Geschäftsmodelle, die auf dem Verkauf von Benutzerdaten basieren, letztendlich der Vergangenheit angehören werden.

    " + - - "Außerdem glauben wir, dass es gut ist, die Funktionen von CryptPad kostenfrei anzubieten. Denn jeder verdient persönlichen Datenschutz und nicht nur Personen mit hohem Einkommen." + - " Durch deine Unterstützung hilfst du uns, zu ermöglichen, dass auch Menschen mit geringerem Einkommen diese grundlegenden Funktionen genießen können, ohne dass ein Preisetikett daran klebt." - }, - goal: { - q: "Was ist euer Ziel?", - a: "Durch die Verbesserung von Technologien, die die Privatsphäre der Nutzer respektieren, möchten wir die Erwartungen der Benutzer an den Datenschutz auf Cloudplattformen erhöhen." + - " Wir hoffen, dass unsere Arbeit andere Dienstanbieter in allen Bereichen anspornt, ähnliche oder bessere Dienste anzubieten." + - " Wir wissen, dass ein großer Teil des Internets durch gezielte Werbung finanziert wird." + - " Es gibt in dieser Hinsicht viel mehr zu tun als wir jemals schaffen können. Wir freuen uns über die Förderung, Unterstützung und Beiträge aus unserer Community, um diesem Ziel näher zu kommen." - }, - jobs: { - q: "Sucht Ihr Mitarbeiter?", - a: "Ja! Bitte schicke eine kurze Vorstellung an jobs@xwiki.com." - }, - host: { - q: "Könnt ihr mir helfen, meine eigene Installation von CryptPad aufzubauen?", - a: "Wir bieten gerne Support für das Aufsetzen eines internen CryptPads in deiner Organisation. Setze dich bitte mit sales@cryptpad.fr in Verbindung für mehr Information.", - }, - revenue: { - q: "Wie kann ich meine Einnahmen mit den Entwicklern teilen?", - a: " Wenn du deine eigene Installation von CrytPad betreibst und die Einnahmen für deine bezahlten Konten mit Entwicklern teilen möchtest, muss dein Server als Partnerservice konfiguriert werden.

    " + - - "In deinem CryptPad-Verzeichnis befindet sich config.example.js. Darin wird erklärt, wie du deinen Server dafür konfigurieren musst. "+ - "Danach solltest du sales@cryptpad.fr kontaktieren, damit geprüft wird, dass dein Server richtig mit HTTPS konfiguriert ist, und die Zahlungsmethoden abgesprochen werden können. " - }, - }; - - // terms.html - - out.tos_title = "Nutzungsbedingungen für CryptPad"; - out.tos_legal = "Sei nicht bösartig oder missbrauchend und mache nichts illegales."; - out.tos_availability = "Wir hoffen, dass dir dieser Dienst nützt, aber Erreichbarkeit und Performanz können nicht garantiert werden. Bitte exportiere deine Daten regelmäßig."; - out.tos_e2ee = "CryptPad-Inhalte können von allen gelesen oder bearbeitet werden, die den Fragmentbezeichner des Dokuments erraten oder auf eine andere Art davon erfahren. Wir empfehlen dir Ende-Zu-Ende verschlüsselte Nachrichtentechnik (e2ee) zum Versenden der URLs zu nutzen. Wir übernehmen keine Haftung, falls eine URL erschlichen oder abgegriffen wird."; - out.tos_logs = "Metadaten, die dein Browser übermittelt, können geloggt werden, um den Dienst aufrechtzuerhalten."; - out.tos_3rdparties = "Wir geben keine persönlichen Daten an Dritte weiter, außer auf richterliche Anordnung."; - - // 404 page - out.four04_pageNotFound = "Wir konnten die Seite, die du angefordert hast, nicht finden."; - - // BottomBar.html - - //out.bottom_france = 'Hergestellt mit Liebe in Frankreich'; - //out.bottom_support = 'Ein Projekt von XWiki SAS Labs Project mit der Unterstützung von OpenPaaS-ng'; - - // Header.html - - out.updated_0_header_logoTitle = 'Zu deinem CryptDrive'; - out.header_logoTitle = out.updated_0_header_logoTitle; - out.header_homeTitle = 'Zur CryptPad-Hauptseite'; - - // Initial states - - out.help = {}; - - out.help.title = "Mit CryptPad anfangen"; - out.help.generic = { - more: 'Erfahre mehr über die Nutzung von CryptPad, indem du unsere FAQ liest.', - share: 'Benutze das Teilen-Menü (), um Links zu generieren, die Mitarbeiter zum Lesen oder Bearbeiten einladen.', - //stored: 'Jedes Dokument, das du besuchst, wird automatisch in deinem CryptDrive gespeichert.', - save: "Alle Änderungen werden automatisch synchronisiert. Du misst sie also nicht speichern." - }; - - out.help.text = { - formatting: 'Du kannst die Werkzeugleiste anzeigen oder verbergen, indem du auf oder klickst.', - embed: 'Registrierte Benutzer können mit Bilder oder Dateien einbetten, die in ihrem CryptDrive gespeichert sind.', - history: 'Du kannst das Menü Verlauf benutzen, um frühere Versionen anzusehen oder wiederherzustellen.', - }; - - out.help.pad = { - export: 'Du kannst Pads als PDF exportieren, indem du auf die Schaltfläche in der Werkzeugleiste klickst.', - }; - - out.help.code = { - modes: 'Benutze das Dropdown-Menü im Untermenü , um die Syntaxhervorhebung oder das Farbschema zu ändern.', - }; - - out.help.beta = { - warning: 'Dieser Editor ist noch experimentell, du kannst Fehler hier melden' - }; - out.help.oo = { - access: "Zugriff ist auf registrierte Nutzer beschränkt, Mitarbeiter werden sich einloggen müssen", - }; - - out.help.slide = { - markdown: 'Schreibe Folien in Markdown and trenne sie mit --- in einer Zeile.', - present: 'Starte die Präsentation mit der Schaltfläche .', - settings: 'Ändere die Einstellungen der Präsentation (Hintergrund, Übergang, Anzeige der Foliennummer etc.) über die Schaltfläche im Untermenü .', - colors: 'Ändere Text- und Hintergrundfarbe mit den Schaltflächen und .', - }; - - out.help.poll = { - decisions: 'Treffe Entscheidungen gemeinsam mit deinen Bekannten', - options: 'Mache Vorschläge und teile deine Präferenzen mit', - choices: 'Klicke in die Zellen in deiner Spalte, um zwischen ja (), viellecht (~), oder nein () zu wählen.', - submit: 'Klicke auf Senden, damit deine Auswahl für andere sichtbar wird.', - }; - - out.help.whiteboard = { - colors: 'Ein Doppelklick auf Farben erlaubt, die Palette zu verändern.', - mode: 'Deaktiviere den Zeichenmodus, um die vorhandenen Striche zu verschieben und zu verlängern.', - embed: 'Bette Bilder von deiner Festplatte oder von deinem CryptDrive ein und exportiere sie als PNG zu deiner Festplatte oder zu deinem CryptDrive .' - }; - - out.help.kanban = { - add: 'Füge ein neues Board hinzu mit der Schaltfläche in der rechten oberen Ecke.', - task: 'Verschiebe Einträge von einem Board zum anderen per Drag & Drop.', - color: 'Ändere die Farben durch Klicken auf den farbigen Teil neben den Boardtiteln.', - }; - - // Readme - - out.driveReadmeTitle = "Was ist CryptPad?"; - out.readme_welcome = "Willkommen zu CryptPad!"; - out.readme_p1 = "Willkommen zu CryptPad, hier kannst du deine Notizen aufschreiben, allein oder mit Bekannten."; - out.readme_p2 = "Dieses Dokument gibt dir einen kurzen Überblick, wie du CryptPad verwenden kannst, um Notizen zu schreiben, sie zu organisieren und mit anderen zusammen zu arbeiten."; - out.readme_cat1 = "Lerne dein CryptDrive kennen"; - out.readme_cat1_l1 = "Ein Pad erstellen: Klicke in deinem CryptDrive auf {0} und dann auf {1}."; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "Ein Pad deines CryptDrives öffnen: Doppelklicke auf das Symbol eines Pads, um es zu öffnen."; - out.readme_cat1_l3 = "Deine Pads organisieren: Wenn du eingeloggt bist, wird jedes geöffnete Pad im Bereich {0} deines CryptDrives angezeigt."; - out.readme_cat1_l3_l1 = "Im Bereich {0} deines CryptDrives kannst du Dateien zwischen Ordnern verschieben oder neue Ordner anlegen."; // 0: Documents - out.readme_cat1_l3_l2 = "Ein Rechtsklick auf die Symbole zeigt zusätzliche Menüfunktionen."; - out.readme_cat1_l4 = "Verschiebe deine alten Pads in den Papierkorb: Du kannst deine Pads in den {0} verschieben, genauso wie du es bei einem Ordner machst."; // 0: Trash - out.readme_cat2 = "Pads wie ein Profi gestalten"; - out.edit = "Bearbeiten"; - out.view = "Ansehen"; - out.readme_cat2_l1 = "Die Schaltfläche {0} in deinem Pad erlaubt dir, anderen einen Zugang für die Mitarbeit zu geben (entweder zum {1} oder zum {2})."; - out.readme_cat2_l2 = "Der Titel eines Pads kann mit einem Klick auf den Stift geändert werden."; - out.readme_cat3 = "Entdecke CryptPad-Anwendungen"; - - out.readme_cat3_l1 = "Mit dem CryptPad Codeeditor kannst du Code wie JavaScript, Markdown oder HTML bearbeiten"; - out.readme_cat3_l2 = "Mit dem CryptPad Präsentationseditor kannst du schnell Vorträge mit Hilfe von Markdown gestalten"; - out.readme_cat3_l3 = "Mit der CryptPad Umfrage kannst du schnell Abstimmungen durchführen, insbesondere, um Meetings zu planen, die in den Kalender von allen passen."; - - // Tips - out.tips = {}; - out.tips.store = "Jedes Mal, wenn du ein Dokument besuchst und eingeloggt bist, wird es in deinem CryptDrive gespeichert."; - out.tips.marker = "Du kannst Text in einem Dokument mit \"Marker\" Menü in dem Stilmenü markieren."; - out.tips.driveUpload = "Registrierte Benutzer können verschlüsselte Dateien aus ihrer Festplatte hochladen, indem sie sie einfach verschieben und in ihrem CryptDrive ablegen."; - out.tips.filenames = "Du kannst Dateien in deinem CryptDrive neubenennen. Dieser Name ist nur für dich."; - out.tips.drive = "Eingeloggte Benutzern können ihre Dateien in ihrem CryptDrive organisieren. Dieses ist mit einem Klick auf das CryptPad Symbol oben links erreichbar, wenn man in einem Dokument ist."; - out.tips.profile = "Registrierte Benutzer können ihr Profil im Benutzer-Menü oben rechts bearbeiten."; - out.tips.avatars = "Du kannst ein Benutzerbild in dein Profil hochladen. Andere sehen es, wenn sie in einem Dokument zusammenarbeiten."; - out.tips.tags = "Bringe Tags auf deinen Dokumenten an und starte eine Suche-nach-Tags mit dem # Zeichen in der CryptDrive-Suche."; - out.tips.shortcuts = "Mit den Tastenkürzeln `Strg+b`, `Strg+i` und `Strg+u` formatierst du Text fett, kursiv oder unterstrichen."; - out.tips.indent = "In nummerierten Listen oder Aufzählungen kannst du mit Tab und Umschalt+Tab den Einzug erhöhen oder reduzieren."; - out.tips.store = "Jedes Mal, wenn du ein Pad besuchst und eingeloggt bist, wird es in deinem CryptDrive gespeichert."; - out.tips.marker = "Du kannst Text in einem Pad markieren, in dem du den Eintrag \"Marker\" aus dem Stil-Menü auswählst."; - out.tips.driveUpload = "Registrierte Benutzer können verschlüsselte Dateien von ihrer Festplatte hochladen, indem sie diese einfach per Drag & Drop in ihrem CryptDrive ablegen."; - out.tips.filenames = "Du kannst Dateien in deinem CryptDrive umbenennen. Dieser Name ist nur für dich."; - out.tips.drive = "Eingeloggte Benutzer können ihre Dateien in ihrem CryptDrive organisieren. Das CryptDrive ist in allen Pads mit einem Klick auf das CryptPad-Symbol oben links erreichbar."; - out.tips.profile = "Registrierte Benutzer können ihr Profil über das Benutzer-Menü oben rechts bearbeiten."; - out.tips.avatars = "Du kannst ein Profilbild hochladen. Andere Nutzer sehen es, wenn sie mit dir in einem Pad zusammenarbeiten."; - out.tips.tags = "Füge Tags zu deinen Pads hinzu und starte in deinem CryptDrive eine Suche mit dem Zeichen #, um sie zu finden."; - - out.feedback_about = "Wenn du das liest, fragst du dich wahrscheinlich, weshalb dein Browser bei der der Ausführung mancher Aktionen Anfragen an Webseiten sendet."; - out.feedback_privacy = "Wir respektieren deine Datenschutz, aber gleichzeitig wollen wir, dass die Benutzung von CryptPad sehr leicht ist. Deshalb wollen wir erfahren, welche Funktion am wichtigsten für unsere Benutzer ist, indem wir diese mit einer genauen Parameterbeschreibung anfordern."; - out.feedback_optout = "Wenn du das nicht möchtest, kannst du es in deinen Einstellungen deaktivieren."; - - // Creation page - out.creation_404 = "Dieses Pad existiert nicht mehr. Benutze das folgende Formular, um ein neues Pad zu gestalten."; - out.creation_ownedTitle = "Pad-Typ"; - out.creation_owned = "Eigenes Pad"; // Creation page - out.creation_ownedTrue = "Eigenes Pad"; // Settings - out.creation_ownedFalse = "Offenes Pad"; - out.creation_owned1 = "Ein eigenes Pad kann vom Server gelöscht werden, wenn der Eigentümer so entscheidet. Die Löschung eines eigenen Pads bewirkt die Löschung aus allen anderen CryptDrives."; - out.creation_owned2 = "Ein offenes Pad hat keinen Eigentümer. Es kann also nicht vom Server gelöscht werden, es sei denn es hat sein Ablaufdatum erreicht."; - out.creation_expireTitle = "Ablaufdatum"; - out.creation_expire = "Auslaufendes Pad"; - out.creation_expireTrue = "Ein Ablaufdatum hinzufügen"; - out.creation_expireFalse = "Unbegrenzt"; - out.creation_expireHours = "Stunde(n)"; - out.creation_expireDays = "Tag(e)"; - out.creation_expireMonths = "Monat(e)"; - out.creation_expire1 = "Ein unbegrenztes Pad wird nicht vom Server entfernt, solange der Eigentümer es nicht löscht."; - out.creation_expire2 = "Ein auslaufendes Pad hat eine begrenzte Lebensdauer, nach der es automatisch vom Server und aus den CryptDrives anderer Nutzer entfernt wird."; - out.creation_password = "Passwort hinzufügen"; - out.creation_noTemplate = "Keine Vorlage"; - out.creation_newTemplate = "Neue Vorlage"; - out.creation_create = "Erstellen"; - out.creation_saveSettings = "Dieses Dialog nicht mehr anzeigen"; - out.creation_settings = "Mehr Einstellungen anzeigen"; - out.creation_rememberHelp = "Gehe zu deinen Einstellungen, um diese Auswahl zurückzusetzen"; - // Properties about creation data - out.creation_owners = "Eigentümer"; - out.creation_ownedByOther = "Eigentum eines anderen Benutzers"; - out.creation_noOwner = "Kein Eigentümer"; - out.creation_expiration = "Ablaufdatum"; - out.creation_passwordValue = "Passwort"; - out.creation_propertiesTitle = "Verfügbarkeit"; - out.creation_appMenuName = "Fortgeschrittener Modus (Strg + E)"; - out.creation_newPadModalDescription = "Klicke auf einen Pad-Typ, um das entsprechende Pad zu erstellen. Du kannst auch die Tab-Taste für die Auswahl und die Enter-Taste zum Bestätigen benutzen."; - out.creation_newPadModalDescriptionAdvanced = "Du kannst das Kästchen markieren (oder den Wert mit der Leertaste ändern), um den Dialog bei der Pad-Erstellung anzuzeigen (für eigene oder auslaufende Dokumente etc.)."; - out.creation_newPadModalAdvanced = "Dialog bei der Pad-Erstellung anzeigen"; - - // Password prompt on the loading screen - out.password_info = "Das Pad, das du öffnen möchtest, ist mit einem Passwort geschützt. Gib das richtige Passwort ein, um den Inhalt anzuzeigen."; - out.password_error = "Pad nicht gefunden!
    Dieser Fehler kann zwei Ursachen haben: Entweder ist das Passwort ungültig oder das Pad wurde vom Server gelöscht."; - out.password_placeholder = "Gib das Passwort hier ein..."; - out.password_submit = "Abschicken"; - out.password_show = "Anzeigen"; - - // Change password in pad properties - out.properties_addPassword = "Passwort hinzufügen"; - out.properties_changePassword = "Passwort ändern"; - out.properties_confirmNew = "Bist du sicher? Das Hinzufügen eines Passworts wird die URL dieses Pads ändern und den Verlauf löschen. Benutzer ohne das Passwort werden den Zugang zu diesem Pad verlieren."; - out.properties_confirmChange = "Bist du sicher? Das Ändern des Passworts wird den Verlauf löschen. Benutzer ohne das neue Passwort werden den Zugang zu diesem Pad verlieren."; - out.properties_passwordSame = "Das neue Passwort muss sich von dem alten Passwort unterscheiden."; - out.properties_passwordError = "Beim Versuch das Passwort zu ändern ist ein Fehler aufgetreten. Bitte versuche es nochmal."; - out.properties_passwordWarning = "Das Passwort wurde erfolgreich geändert, aber dein CryptDrive konnte nicht aktualisiert werden. Du musst möglicherweise die alte Version des Pads manuell entfernen.
    Klicke auf OK, um die Seite neu zu laden und die Zugriffsrechte zu aktualisieren."; - out.properties_passwordSuccess = "Das Passwort wurde erfolgreich geändert.
    Klicke auf OK, um die Seite neu zu laden und die Zugriffsrechte zu aktualisieren."; - out.properties_changePasswordButton = "Absenden"; - - // New share modal - out.share_linkCategory = "Link teilen"; - out.share_linkAccess = "Zugriffsrechte"; - out.share_linkEdit = "Bearbeiten"; - out.share_linkView = "Ansehen"; - out.share_linkOptions = "Linkoptionen"; - out.share_linkEmbed = "Einbettungsmodus (Werkzeugleiste und Benutzerliste sind verborgen)"; - out.share_linkPresent = "Anzeigemodus (Bearbeitbare Abschnitte sind verborgen)"; - out.share_linkOpen = "In einem neuen Tab öffnen"; - out.share_linkCopy = "In die Zwischenablage kopieren"; - out.share_embedCategory = "Einbetten"; - out.share_mediatagCopy = "Media-Tag in die Zwischenablage kopieren"; - - // Loading info - out.loading_pad_1 = "Initialisiere Pad"; - out.loading_pad_2 = "Lade Pad-Inhalt"; - out.loading_drive_1 = "Lade Daten"; - out.loading_drive_2 = "Aktualisiere Datenformat"; - out.loading_drive_3 = "Verifiziere Datenintegrität"; - - // Shared folders - out.sharedFolders_forget = "Dieses Pad ist nur in einem geteilten Ordner gespeichert. Du kannst es nicht in den Papierkorb verschieben. Aber du kannst es in deinem CryptDrive löschen."; - out.sharedFolders_duplicate = "Einige zu verschiebende Pads waren schon im Zielordner geteilt."; - out.sharedFolders_create = "Erstelle einen geteilten Ordner"; - out.sharedFolders_create_name = "Neuer Ordner"; - out.sharedFolders_create_owned = "Eigener Ordner"; - out.sharedFolders_create_password = "Ordnerpasswort"; - out.sharedFolders_share = "Teile diese URL mit anderen registrierten Benutzern, um ihnen Zugriff auf den geteilten Ordner zu geben. Sobald sie diese URL öffnen, wird der geteilte Ordner zu ihrem CryptDrive hinzugefügt."; - - out.chrome68 = "Anscheinend benutzt du Chrome oder Chromium in Version 68. Ein darin enthaltener Fehler führt dazu, dass nach ein paar Sekunden die Seite komplett weiß wird oder nicht mehr auf Klicks reagiert. Um das Problem zu beheben, wechsle den Tab und kehre zu CryptPad zurück, oder versuche zu scrollen. Dieser Fehler sollte in der nächsten Version deines Browsers behoben sein."; - - // Manual pad storage popup - out.autostore_file = "Diese Datei"; - out.autostore_sf = "Dieser Ordner"; - out.autostore_pad = "Dieses Dokument"; - out.autostore_notstored = "{0} ist nicht in deinem CryptDrive. Möchtest du es jetzt dort speichern?"; - out.autostore_settings = "Du kannst die automatische Speicherung in deinen Einstellungen aktivieren!"; - out.autostore_store = "Speichern"; - out.autostore_hide = "Nicht speichern"; - out.autostore_error = "Unerwarteter Fehler: Wir konnten das Pad nicht speichern, bitte versuche es nochmal."; - out.autostore_saved = "Das Pad wurde erfolgreich in deinem CryptDrive gespeichert!"; - out.autostore_forceSave = "Speichere die Datei in deinem CryptDrive"; // File upload modal - out.autostore_notAvailable = "Du musst dieses Pad in deinem CryptDrive speichern, bevor du diese Funktion benutzen kannst."; // Properties/tags/move to trash - - // Crowdfunding messages - out.crowdfunding_home1 = "CryptPad braucht deine Hilfe!"; - out.crowdfunding_home2 = "Klicke auf die Schaltfläche, um mehr über die Crowdfunding-Kampagne zu erfahren."; - out.crowdfunding_button = "Unterstütze CryptPad"; - - out.crowdfunding_popup_text = "

    Wir brauchen deine Hilfe!

    " + - "Um sicherzustellen, dass CryptPad weiter aktiv entwickelt wird, unterstütze bitte das Projekt über die " + - 'OpenCollective Seite, wo du unsere Roadmap und Funding-Ziele lesen kannst.'; - out.crowdfunding_popup_yes = "OpenCollective besuchen"; - out.crowdfunding_popup_no = "Nicht jetzt"; - out.crowdfunding_popup_never = "Nicht mehr darum bitten."; - - return out; -}); diff --git a/www/common/translations/old/messages.el.js b/www/common/translations/old/messages.el.js deleted file mode 100644 index 2428a0425..000000000 --- a/www/common/translations/old/messages.el.js +++ /dev/null @@ -1,783 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - - - out.main_title = "CryptPad: Zero Knowledge, συνεργατική επεξεργασία σε πραγματικό χρόνο"; - out.main_slogan = "Ισχύς εν τη ενώσει - Η συνεργασία είναι η λύση"; // TODO remove? - - out.type = {}; - out.type.pad = 'Εμπλουτισμένο κείμενο'; - out.type.code = 'Κώδικας'; - out.type.poll = 'Δημοσκόπηση'; - out.type.slide = 'Παρουσίαση'; - out.type.drive = 'Αποθηκευτικός χώρος'; - out.type.whiteboard = 'Πίνακας σχεδιασμού'; - out.type.file = 'Αρχείο'; - out.type.media = 'Πολυμέσα'; - out.type.todo = "Εργασίες"; - out.type.contacts = 'Επαφές'; - - out.button_newpad = 'Νέο pad εμπλουτισμένου κειμένου'; - out.button_newcode = 'Νέο pad κώδικα'; - out.button_newpoll = 'Νέα δημοσκόπηση'; - out.button_newslide = 'Νέα παρουσίαση'; - out.button_newwhiteboard = 'Νέος πίνακας'; - - // NOTE: We want to update the 'common_connectionLost' key. - // Please do not add a new 'updated_common_connectionLostAndInfo' but change directly the value of 'common_connectionLost' - out.updated_0_common_connectionLost = "Η σύνδεση με τον διακομιστή χάθηκε
    Βρίσκεστε σε λειτουργία ανάγνωσης μόνο μέχρι να επανέλθει η σύνδεση."; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = 'Αδυναμία σύνδεσης στον διακομιστή...'; - out.typeError = "Αυτό το pad δεν είναι συμβατό με την επιλεγμένη εφαρμογή"; - out.onLogout = 'Έχετε αποσυνδεθεί, {0}κάντε "κλικ" εδώ{1} για να συνδεθείτε
    ή πατήστε Escape για να προσπελάσετε το έγγραφο σε λειτουργία ανάγνωσης μόνο.'; - out.wrongApp = "Αδυναμία προβολής του περιεχομένου αυτής της συνεδρίας στον περιηγητή σας. Παρακαλώ δοκιμάστε επαναφόρτωση της σελίδας."; - - out.loading = "Φόρτωση..."; - out.error = "Σφάλμα"; - out.saved = "Αποθηκεύτηκε"; - out.synced = "Όλα έχουν αποθηκευτεί"; - out.deleted = "Το έγγραφο διαγράφηκε από τον αποθηκευτικό σας χώρο"; - - out.realtime_unrecoverableError = "Η μηχανή πραγματικού χρόνου αντιμετώπισε κάποιο ανεπανόρθωτο σφάλμα. Πατήστε OK για επαναφόρτωση."; - - out.disconnected = 'Έγινε αποσύνδεση'; - out.synchronizing = 'Γίνεται συγχρονισμός'; - out.reconnecting = 'Γίνεται επανασύνδεση...'; - out.typing = "Γίνεται επεξεργασία"; - out.initializing = "Γίνεται προετοιμασία..."; - out.forgotten = 'Μετακινήθηκε στον κάδο ανακύκλωσης'; - out.errorState = 'Κρίσιμο σφάλμα: {0}'; - out.lag = 'Αργή σύνδεση'; - out.readonly = 'Λειτουργία ανάγνωσης μόνο'; - out.anonymous = "Ανώνυμος/η"; - out.yourself = "Ο εαυτός σας"; - out.anonymousUsers = "Ανώνυμοι συντάκτες"; - out.anonymousUser = "Ανώνυμος συντάκτης"; - out.users = "Χρήστες"; - out.and = "Και"; - out.viewer = "Θεατής"; - out.viewers = "Θεατές"; - out.editor = "Συντάκτης"; - out.editors = "Συντάκτες"; - out.userlist_offline = "Είσαστε προς το παρόν εκτός σύνδεσης, η λίστα χρηστών δεν είναι διαθέσιμη."; - - out.language = "Γλώσσα"; - - out.comingSoon = "Έρχεται σύντομα..."; - - out.newVersion = 'To CryptPad αναβαθμίστηκε!
    ' + - 'Δείτε τι καινούριο υπάρχει στην πιο πρόσφατη έκδοση:
    '+ - 'Σημειώσεις κυκλοφορίας του CryptPad {0}'; - - out.upgrade = "Αναβάθμιση"; - out.upgradeTitle = "Αναβαθμίστε τον λογαριασμό σας για να αυξήσετε το όριο αποθηκευτικού χώρου"; - - out.upgradeAccount = "Αναβάθμιση λογαριασμού"; - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - - out.supportCryptpad = "Υποστηρίξτε το CryptPad"; - - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.greenLight = "Όλα λειτουργούν σωστά"; - out.orangeLight = "Η αργή σύνδεση ίσως έχει αντίκτυπο στην διάδραση"; - out.redLight = "Έχετε αποσυνδεθεί από τη συνεδρία"; - - out.pinLimitReached = "Έχετε φτάσει το όριο αποθηκευτικού χώρου"; - out.updated_0_pinLimitReachedAlert = "Έχετε φτάσει το όριο αποθηκευτικού χώρου. Τα νέα pads δεν θα αποθηκευτούν στο CryptDrive σας.
    " + - 'Μπορείτε είτε να διαγράψετε αρχεία από το CryptDrive σας, είτε να αναβαθμισετε τον λογαριασμό σας για να αυξήσετε το όριο αποθήκευσης.'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinLimitReachedAlertNoAccounts = out.pinLimitReached; - out.pinLimitNotPinned = "Έχετε φτάσει το όριο αποθηκευτικού χώρου.
    "+ - "Αυτό το pad δεν θα αποθηκευτεί στο CryptDrive σας."; - out.pinLimitDrive = "Έχετε φτάσει το όριο αποθηκευτικού χώρου.
    " + - "Δεν μπορείτε να δημιουργήσετε νέα pads."; - - out.moreActions = "Περισσότερες επιλογές"; - - out.importButton = "Εισαγωγή"; - out.importButtonTitle = 'Εισάγετε ένα pad από τοπικό αρχείο'; - - out.exportButton = "Εξαγωγή"; - out.exportButtonTitle = 'Εξάγετε αυτό το pad σε τοπικό αρχείο'; - out.exportPrompt = 'Πως θα θέλατε να ονομάσετε το αρχείο σας;'; - - out.changeNamePrompt = 'Αλλάξτε το όνομα σας (αφήστε το κενό για ανωνυμία): '; - out.user_rename = "Αλλαγή εμφανιζόμενου ονόματος"; - out.user_displayName = "Εμφανιζόμενο όνομα"; - out.user_accountName = "Όνομα χρήστη"; - - out.clickToEdit = "Κάντε \"κλικ\" για επεξεργασία"; - out.saveTitle = "Αποθήκευση τίτλου (enter)"; - - out.forgetButton = "Διαγραφή"; - out.forgetButtonTitle = 'Μετακίνηση αυτού του pad στον κάδο'; - out.forgetPrompt = 'Πατώντας OK θα μετακινηθεί αυτό το pad στον κάδο ανακύκλωσης. Είστε σίγουρος;'; - out.movedToTrash = 'Το pad μετακινήθηκε στον κάδο.
    Μεταφερθείτε στο CryptDrive σας'; - - out.shareButton = 'Διαμοιρασμός'; - out.shareSuccess = 'Ο σύνδεσμος αντιγράφηκε στην προσωρινή μνήμη'; - - out.userListButton = "Λίστα χρηστών"; - - out.userAccountButton = "Ο λογαριασμός σας"; - - out.newButton = 'Νέο'; - out.newButtonTitle = 'Δημιουργία νέου pad'; - out.uploadButton = 'Μεταφόρτωση αρχείου'; - out.uploadButtonTitle = 'Μεταφόρτωση νέου αρχείου στον τρέχοντα φάκελο'; - - out.saveTemplateButton = "Αποθήκευση ως πρότυπο"; - out.saveTemplatePrompt = "Επιλέξτε τίτλο για αυτό το πρότυπο"; - out.templateSaved = "Το πρότυπο αποθηκεύτηκε!"; - out.selectTemplate = "Επιλέξτε ένα πρότυπο ή πατήστε escape"; - out.useTemplate = "Έχετε διαθέσιμα πρότυπα για αυτό το είδος pad. Θα θέλετε να χρησιμοποιήσετε κάποιο;"; //Would you like to "You have available templates for this type of pad. Do you want to use one?"; - out.useTemplateOK = 'Επιλέξτε ένα πρότυπο (Enter)'; - out.useTemplateCancel = 'Ξεκινήστε από το μηδέν (Esc)'; - - out.previewButtonTitle = "Προβολή ή απόκρυψη προεπισκόπησης της μορφοποίησης Markdown"; - - out.presentButtonTitle = "Είσοδος σε λειτουργία παρουσίασης"; - - out.backgroundButtonTitle = 'Αλλάξτε το χρώμα παρασκηνίου στην παρουσίαση'; - out.colorButtonTitle = 'Αλλάξτε το χρώμα κειμένου στην λειτουργία παρουσίασης'; - - out.printText = "Εκτύπωση"; - out.printButton = "Εκτύπωση (enter)"; - out.printButtonTitle = "Εκτυπώστε τις διαφάνειές σας ή εξάγετε τες ως αρχείο PDF"; - out.printOptions = "Επιλογές διάταξης"; - out.printSlideNumber = "Εμφάνιση του αριθμού διαφάνειας"; - out.printDate = "Εμφάνιση της ημερομηνίας"; - out.printTitle = "Εμφάνιση του τίτλου του pad"; - out.printCSS = "Προσαρμοσμένες ρυθμίσεις εμφάνισης (CSS):"; - out.printTransition = "Ενεργοποίηση κινούμενων μεταβάσεων"; - - out.filePickerButton = "Ενσωμάτωση αρχείου από το CryptDrive σας"; - out.filePicker_close = "Κλείσιμο"; - out.filePicker_description = "Επιλέξτε ένα αρχείο από το CryptDrive σας για ενσωμάτωση ή μεταφορτώστε ένα καινούριο"; - out.filePicker_filter = "Προβολή αρχείων κατά όνομα"; - out.or = 'ή'; - - out.tags_title = "Ετικέτες (για εσάς μόνο)"; - out.tags_add = "Ενημερώστε τις ετικέτες αυτής της σελίδας"; - out.tags_searchHint = "Βρείτε αρχεία από τις ετικέτες τους ψάχνωντας στο CryptDrive σας"; - out.tags_searchHint = "Ξεκινήστε μια αναζήτηση με το σύμβολο # στο CryptDrive σας για να βρείτε pads με ετικέτες."; - out.tags_notShared = "Οι ετικέτες σας δεν μοιράζονται με άλλους χρήστες"; - out.tags_duplicate = "Διπλή ετικέτα: {0}"; - out.tags_noentry = "Δεν μπορείτε να βάλετε ετικέτα σε διεγραμένο pad!"; - - out.slideOptionsText = "Επιλογές"; - out.slideOptionsTitle = "Προσαρμόστε τις διαφάνειες σας"; - out.slideOptionsButton = "Αποθήκευση (enter)"; - out.slide_invalidLess = "Μη έγκυρη προσαρμογή"; - - out.languageButton = "Γλώσσα"; - out.languageButtonTitle = "Επιλέξτε τη γλώσσα που θα χρησιμοποιήσετε για την επισήμανση σύνταξης"; - out.themeButton = "Θέμα"; - out.themeButtonTitle = "Επιλέξτε το θέμα που θα χρησιμοποιήσετε για την επεξεργασία κώδικα και διαφανειών"; - - out.editShare = "Σύνδεσμος επεξεργασίας"; - out.editShareTitle = "Αντιγραφή του συνδέσμου επεξεργασίας στην προσωρινή μνήμη"; - out.editOpen = "Άνοιγμα του συνδέσμου επεξεργασίας σε νέα καρτέλα"; - out.editOpenTitle = "Άνοιγμα αυτού του pad για επεξεργασία σε νέα καρτέλα"; - out.viewShare = "Σύνδεσμος μόνο για ανάγνωση"; - out.viewShareTitle = "Αντιγραφή του συνδέσμου μόνο για ανάγνωση στην προσωρινή μνήμη"; - out.viewOpen = "Άνοιγμα του συνδέσμου μόνο για ανάγνωση σε νέα καρτέλα"; - out.viewOpenTitle = "Άνοιγμα αυτού του pad μόνο για ανάγνωση σε νέα καρτέλα"; - out.fileShare = "Αντιγραφή συνδέσμου"; - out.getEmbedCode = "Κώδικας ενσωμάτωσης"; - out.viewEmbedTitle = "Ενσωματώστε αυτό το pad σε μία εξωτερική σελίδα"; - out.viewEmbedTag = "Για να ενσωματώσετε αυτό το pad, συμπεριλάβετε αυτό το iframe στη σελίδα σας, στο σημείο που θέλετε. Μπορείτε να το διαμορφώσετε χρησιμοποιώντας CSS η HTML παραμέτρους."; - out.fileEmbedTitle = "Ενσωματώστε το αρχείο σε μια εξωτερική σελίδα"; - out.fileEmbedScript = "Για να ενσωματώσετε αυτό το αρχείο, συμπεριλάβετε αυτό το script στη σελίδα σας για να φορτωθεί το Media Tag:"; - out.fileEmbedTag = "Έπειτα τοποθετήστε αυτό το Media Tag στο σημείο της σελίδας που επιθυμείτε να γίνει ενσωμάτωση:"; - - out.notifyJoined = "Ο/Η {0} εισήλθε στη συνεργατική συνεδρία"; - out.notifyRenamed = "Ο/Η {0} είναι τώρα γνωστός/η ως {1}"; - out.notifyLeft = "Ο/Η {0} αποχώρησε από τη συνεργατική συνεδρία"; - - out.okButton = 'OK (enter)'; - - out.cancel = "Ακύρωση"; - out.cancelButton = 'Ακύρωση (esc)'; - out.doNotAskAgain = "Να μην ρωτηθώ ξανά (Esc)"; - - out.historyText = "Ιστορικό"; - out.historyButton = "Εμφάνιση ιστορικού του εγγράφου"; - out.history_next = "Μετάβαση στην επόμενη έκδοση"; - out.history_prev = "Μετάβαση στην προηγούμενη έκδοση"; - out.history_goTo = "Μετάβαση στην επιλεγμένη έκδοση"; - out.history_close = "Επιστροφή"; - out.history_closeTitle = "Κλείσιμο ιστορικού"; - out.history_restore = "Επαναφορά"; - out.history_restoreTitle = "Επαναφορά της επιλεγμένης έκδοσης του εγγράφου"; - out.history_restorePrompt = "Είστε σίγουροι πως θέλετε να αντικαταστήσετε την τρέχουσα έκδοση του εγγράφου με την επιλεγμένη;"; - out.history_restoreDone = "Έγινε επαναφορά του εγγράφου"; - out.history_version = "Έκδοση:"; - - // Ckeditor - out.openLinkInNewTab = "Άνοιγμα συνδέσμου σε νέα καρτέλα"; - out.pad_mediatagTitle = "Ρυθμίσεις Media-Tag"; - out.pad_mediatagWidth = "Πλάτος (px)"; - out.pad_mediatagHeight = "Ύψος (px)"; - - // Polls - - out.poll_title = "Zero Knowledge επιλογή ημερομηνίας"; - out.poll_subtitle = "Zero Knowledge, πραγματικού χρόνου οργάνωση"; - - out.poll_p_save = "Οι ρυθμίσεις σας ενημερώνονται άμεσα, έτσι δεν χρειάζεται ποτέ να αποθηκεύσετε."; - out.poll_p_encryption = "Όλο το περιεχόμενο είναι κρυπτογραφημένο και έτσι μόνο τα άτομα που έχουν τον σύνδεσμο μπορούν να έχουν πρόσβαση σε αυτό. Ούτε ο διακομιστής δεν μπορεί να δει τι γράφετε."; - - out.wizardLog = "Πατήστε το κουμπί πάνω αριστερά για να επιστρέψετε στη δημοσκόπηση σας"; - out.wizardTitle = "Χρησιμοποιήστε τον οδηγό για να δημιουργήσετε τη δημοσκόπηση σας"; - out.wizardConfirm = "Είσαστε έτοιμοι να προσθέσετε αυτές τις επιλογές στη δημοσκόπηση σας;"; - - out.poll_publish_button = "Δημοσίευση"; - out.poll_admin_button = "Διαχείριση"; - out.poll_create_user = "Προσθέστε έναν νέο χρήστη"; - out.poll_create_option = "Προσθέστε μια νέα επιλογή"; - out.poll_commit = "Υποβολή"; - - out.poll_closeWizardButton = "Κλείσιμο οδηγού"; - out.poll_closeWizardButtonTitle = "Κλείσιμο οδηγού"; - out.poll_wizardComputeButton = "Υπολογισμός επιλογών"; - out.poll_wizardClearButton = "Εκκαθάριση πεδίων"; - out.poll_wizardDescription = "Αυτόματα δημιουργήστε έναν αριθμό επιλογών εισάγοντας όσες ημερομηνίες και χρόνους θέλετε"; - out.poll_wizardAddDateButton = "+ Ημερομηνίες"; - out.poll_wizardAddTimeButton = "+ Χρόνους"; - - out.poll_optionPlaceholder = "Επιλογή"; - out.poll_userPlaceholder = "Το όνομα σας"; - out.poll_removeOption = "Είστε σίγουροι πως θέλετε να αφαιρέσετε αυτή την επιλογή;"; - out.poll_removeUser = "Είστε σίγουροι πως θέλετε να αφαιρέσετε αυτόν τον χρήστη;"; - - out.poll_titleHint = "Τίτλος"; - out.poll_descriptionHint = "Περιγράψτε τη δημοσκόπηση σας και χρησιμοποιήστε το κουμπί ✓ (δημοσίευση) όταν έχετε τελειώσει.\n" + - "Η περιγραφή μπορεί να γραφτεί χρησιμοποιώντας μορφοποίηση markdown και μπορείτε να ενσωματώσετε γραφικά στοιχεία από το CryptDrive σας.\n" + - "Οποιοσδήποτε με τον σύνδεσμο της δημοσκόπησης μπορεί να αλλάξει την περιγραφή, αλλά αυτό δεν συνίσταται."; - - out.poll_remove = "Αφαίρεση"; - out.poll_edit = "Επεξεργασία"; - out.poll_locked = "Κλείδωμα"; - out.poll_unlocked = "Ξεκλείδωμα"; - - out.poll_show_help_button = "Εμφάνιση βοήθειας"; - out.poll_hide_help_button = "Απόκρυψη βοήθειας"; - - out.poll_bookmark_col = 'Αποθηκεύστε αυτή τη στήλη ώστε να είναι πάντα ξεκλείδωτη και εμφανής κατά την εκκίνηση για εσάς'; - out.poll_bookmarked_col = 'Αυτή είναι η στήλη σελιδοδεικτών σας. Θα είναι πάντα ξεκλείδωτη και εμφανής κατά την εκκίνηση για εσάς.'; - out.poll_total = 'Σύνολο'; - - out.poll_comment_list = "Σχόλια"; - out.poll_comment_add = "Κάντε ένα σχόλιο"; - out.poll_comment_submit = "Αποστολή"; - out.poll_comment_remove = "Διαγράψτε αυτό το σχόλιο"; - out.poll_comment_placeholder = "Το σχόλιό σας"; - - out.poll_comment_disabled = "Δημοσιεύστε αυτή τη δημοσκόπηση χρησημοποιώντας το κουμπί ✓ για να ενεργοποιηθεί ο σχολιασμός."; - - // Canvas - out.canvas_clear = "Εκκαθάριση"; - out.canvas_delete = "Διαγραφή επιλογής"; - out.canvas_disable = "Απενεργοποίηση σχεδιασμού"; - out.canvas_enable = "Ενεργοποίηση σχεδιασμού"; - out.canvas_width = "Πλάτος"; - out.canvas_opacity = "Αδιαφάνεια"; - out.canvas_opacityLabel = "Αδιαφάνεια: {0}"; - out.canvas_widthLabel = "Πλάτος: {0}"; - out.canvas_saveToDrive = "Αποθηκεύστε αυτή την εικόνα ως αρχείο στο CryptDrive σας"; - out.canvas_currentBrush = "Τρέχων πινέλο"; - out.canvas_chooseColor = "Επιλογή χρώματος"; - out.canvas_imageEmbed = "Εισάγετε μια εικόνα από τον υπολογιστή σας"; - - // Profile - out.profileButton = "Προφίλ"; // dropdown menu - out.profile_urlPlaceholder = 'Διεύθυνση'; - out.profile_namePlaceholder = 'Το όνομα που θα εμφανίζετε στο προφίλ σας'; - out.profile_avatar = "Αβατάρ"; - out.profile_upload = " Μεταφορτώστε ένα νέο αβατάρ"; - out.profile_uploadSizeError = "Σφάλμα: το αβατάρ σας πρέπει να είναι μικρότερο από {0}"; - out.profile_uploadTypeError = "Σφάλμα: αυτό το είδος αρχείου δεν επιτρέπεται. Επιτρεπόμενα αρχεία: {0}"; - out.profile_error = "Σφάλμα κατά τη δημιουργία του προφίλ σας: {0}"; - out.profile_register = "Πρέπει να εγγραφείτε για να δημιουργήσετε προφίλ!"; - out.profile_create = "Δημιουργήστε προφίλ"; - out.profile_description = "Περιγραφή"; - out.profile_fieldSaved = 'Η καινούρια καταχώρηση αποθηκεύτηκε: {0}'; - - out.profile_inviteButton = "Σύνδεση"; - out.profile_inviteButtonTitle ='Δημιουργήστε έναν σύνδεσμο για να προσκαλέσετε αυτόν το χρήστη να συνδεθεί μαζί σας.'; - out.profile_inviteExplanation = "Πατώντας OK θα δημιουργηθεί ένας σύνδεσμος προς μια ασφαλή συνεδρία επικοινωνίας όπου μόνο ο/η {0} θα μπορεί να ανοίξει.

    Ο σύνδεσμος θα αντιγραφεί στην προσωρινή μνήμη και μπορεί να διαμοιραστεί δημόσια."; - out.profile_viewMyProfile = "Προβολή του προφίλ μου"; - - // contacts/userlist - out.userlist_addAsFriendTitle = 'Προσθήκη του/της "{0}" ως επαφή'; - out.userlist_thisIsYou = 'Αυτός είστε εσείς ("{0}")'; - out.userlist_pending = "Εκρεμμεί..."; - out.contacts_title = "Επαφές"; - out.contacts_addError = 'Σφάλμα κατά την προσθήκη αυτής της επαφής στη λίστα'; - out.contacts_added = 'Η επαφή αποδέχτηκε την πρόσκληση.'; - out.contacts_rejected = 'Η επαφή απέρριψε την πρόσκληση'; - out.contacts_request = 'Ο/Η {0} Θα ήθελε να σας προσθέσει ως επαφή. Αποδοχή;'; - out.contacts_send = 'Αποστολή'; - out.contacts_remove = 'Αφαίρεση αυτής της επαφής'; - out.contacts_confirmRemove = 'Είσαστε σίγουροι πως θέλετε να αφαιρέσετε τον/την {0} από τις επαφές σας;'; - out.contacts_typeHere = "Πληκτρολογήστε ένα μήνυμα εδώ..."; - - out.contacts_info1 = "Αυτές είναι οι επαφές σας. Από εδώ, μπορείτε να:"; - out.contacts_info2 = "Πατήσετε στο εικονίδιο της επαφής για να συνομιλήσετε μαζί τους"; - out.contacts_info3 = "Κάνετε \"διπλό κλικ\" στο εικονίδιο για να δείτε το προφίλ τους"; - out.contacts_info4 = "Ο κάθε συμμετέχων μπορεί να διαγράψει μόνιμα το ιστορικό μιας συνομιλίας"; - - out.contacts_removeHistoryTitle = 'Εκκαθάριση του ιστορικού συνομιλίας'; - out.contacts_confirmRemoveHistory = 'Είστε σίγουροι πως θέλετε να διαγράψετε μόνιμα το ιστορικό; Τα δεδομένα δεν μπορούν να επαναφερθούν'; - out.contacts_removeHistoryServerError = 'Προέκυψε ένα σφάλμα κατά της εκκαθάριση του ιστορικού. Δοκιμάστε ξανά αργότερα'; - out.contacts_fetchHistory = "Ανάκτηση παλαιότερου ιστορικού"; - - // File manager - - out.fm_rootName = "Έγγραφα"; - out.fm_trashName = "Σκουπίδια"; - out.fm_unsortedName = "Αταξινόμητα"; - out.fm_filesDataName = "Όλα τα αρχεία"; - out.fm_templateName = "Πρότυπα"; - out.fm_searchName = "Αναζήτηση"; - out.fm_recentPadsName = "Πρόσφατα pads"; - out.fm_searchPlaceholder = "Αναζήτηση..."; - out.fm_newButton = "Νέο"; - out.fm_newButtonTitle = "Δημιουργήστε ένα νέο pad ή φάκελο, εισάγετε ένα αρχείο στον τρέχοντα φάκελο"; - out.fm_newFolder = "Νέος φάκελος"; - out.fm_newFile = "Νέο pad"; - out.fm_folder = "Φάκελος"; - out.fm_folderName = "Όνομα φακέλου"; - out.fm_numberOfFolders = "# φακέλων"; - out.fm_numberOfFiles = "# αρχείων"; - out.fm_fileName = "Όνομα αρχείου"; - out.fm_title = "Τίτλος"; - out.fm_type = "Τύπος"; - out.fm_lastAccess = "Τελευταία προσπέλαση"; - out.fm_creation = "Δημιουργία"; - out.fm_forbidden = "Απαγορευμένη ενέργεια"; - out.fm_originalPath = "Πρωτότυπη διαδρομή"; - out.fm_openParent = "Προβολή στον φάκελο"; - out.fm_noname = "Έγγραφο χωρίς τίτλο"; - out.fm_emptyTrashDialog = "Θέλετε σίγουρα να αδειάσετε τον κάδο;"; - out.fm_removeSeveralPermanentlyDialog = "Θέλετε σίγουρα να αφαιρέσετε αυτά τα {0} αντικείμενα από το CryptDrive σας μόνιμα;"; - out.fm_removePermanentlyDialog = "Θέλετε σίγουρα να αφαιρέσετε αυτό το αντικείμενο από το CryptDrive σας μόνιμα;"; - out.fm_removeSeveralDialog = "Θέλετε σίγουρα να μετακινήσετε αυτά τα {0} αντικείμενα στον κάδο;"; - out.fm_removeDialog = "Θέλετε σίγουρα να μετακινήσετε το {0} στον κάδο;"; - out.fm_restoreDialog = "Θέλετε σίγουρα να επαναφέρετε το {0} στην προηγούμενη τοποθεσία του;"; - out.fm_unknownFolderError = "Η επιλεγμένη ή πιο πρόσφατη τοποθεσία δεν υπάρχει πλέον. Γίνεται άνοιγμα του τρέχοντα φακέλου..."; - out.fm_contextMenuError = "Αδυναμία ανοίγματος μενού για αυτό το αντικείμενο. Αν το πρόβλημα επιμείνει, δοκιμάστε να επαναφορτώσετε τη σελίδα."; - out.fm_selectError = "Αδυναμία επιλογής του συγκεκριμένου αντικειμένου. Αν το πρόβλημα επιμείνει, δοκιμάστε να επαναφορτώσετε τη σελίδα."; - out.fm_categoryError = "Αδυναμία ανοίγματος της επιλεγμένης κατηγορίας, γίνεται προβολή του γονικού φακέλου."; - out.fm_info_root = "Δημιουργήστε εδώ όσους υποφακέλους θέλετε για να ταξινομήσετε τα αρχεία σας."; - out.fm_info_unsorted = 'Περιέχει όλα τα αρχεία που έχετε επισκεφτεί αλλά δεν έχουν ταξινομηθεί στα "Έγγραφα", ούτε έχουν μετακινηθεί στα "Σκουπίδια".'; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" - out.fm_info_template = 'Περιέχει όλα τα pads που έχουν αποθηκευτεί ως πρότυπα και μπορείτε να ξαναχρησιμοποιήσετε όταν δημιουργείτε ένα νέο pad.'; - out.fm_info_recent = "Λίστα των πρόσφατα τροποποιημένων ή ανοιγμένων pads."; - out.updated_0_fm_info_trash = 'Αδειάστε τον κάδο σας για να απελευθερώσετε χώρο στο CryptDrive σας.'; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = 'Περιέχει όλα τα αρχεία από τα "Έγγραφα", "Αταξινόμητα" και "Σκουπίδια". Δεν μπορείτε να μετακινήσετε ή να αφαιρέσετε αρχεία από εδώ.'; // Same here - out.fm_info_anonymous = 'Δεν έχετε συνδεθεί, οπότε τα pads σας θα διαγραφούν μετά από 3 μήνες (μάθετε περισσότερα). ' + - 'Εγγραφείτε ή Συνδεθείτε για να τα κρατήσετε επ\' αόριστον.'; - out.fm_alert_backupUrl = "Σύνδεσμος ασφαλείας για αυτόν τον αποθηκευτικό χώρο.
    " + - "Συνίσταται ιδιαιτέρως να τον κρατήσετε μυστικό.
    " + - "Μπορείτε να τον χρησιμοποιήσετε για να ανακτήσετε όλα σας τα αρχεία σε περίπτωση που διαγραφεί η μνήμη του περιηγητή σας.
    " + - "Οποιοσδήποτε με αυτόν τον σύνδεσμο μπορεί να επεξεργαστεί ή να αφαιρέσει όλα τα αρχεία σας στον διαχειριστή αρχείων.
    "; - out.fm_alert_anonymous = "Γεια σας! Αυτή τη στιγμή χρησιμοποιείτε το CryptPad ανώνυμα, αυτό είναι ok αλλά τα pads σας ίσως διαγραφούν μετά από ένα διάστημα " + - "αδράνειας. Έχουμε απενεργοποιήσει προηγμένες λειτουργίες του αποθηκευτικού χώρου για τους ανώνυμους χρήστες επειδή θέλουμε να καταστήσουμε ξεκάθαρο πως " + - 'δεν είναι ένα ασφαλές μέρος για να αποθηκεύετε πράγματα. Μπορείτε να διαβάσετε περισσότερα σχετικά ' + - 'με το γιατί το κάνουμε αυτό και γιατί θα έπρεπε να Εγγραφείτε ή να Συνδεθείτε.'; - out.fm_backup_title = 'Σύνδεσμος ασφαλείας'; - out.fm_nameFile = 'Πως θα θέλατε να ονομάσετε αυτό το αρχείο;'; - out.fm_error_cantPin = "Εσωτερικό σφάλμα διακομιστή. Παρακαλούμε επαναφορτώστε τη σελίδα και προσπαθήστε ξανά."; - out.fm_viewListButton = "Προβολή λίστας"; - out.fm_viewGridButton = "Προβολή πλέγματος"; - out.fm_renamedPad = "Έχετε ορίσει ένα προσαρμοσμένο όνομα για αυτό το pad. Ο διαμοιραζόμενος τίτλος του είναι:
    {0}"; - out.fm_prop_tagsList = "Ετικέτες"; - out.fm_burnThisDriveButton = "Διαγραφή όλων των πληροφοριών που έχουν αποθηκευτεί από το CryptPad στον περιηγητή σας"; - out.fm_burnThisDrive = "Είστε σίγουροι πως θέλετε να διαγράψετε όλα όσα έχουν αποθηκευτεί από το CryptPad στον περιηγητή σας;
    " + - "Αυτό θα αφαιρέσει το CryptDrive σας και το ιστορικό του από τον περιηγητή σας, αλλά τα pads σας θα εξακολουθήσουν να υπάρχουν (κρυπτογραφημένα) στον διακομιστή μας."; - // File - Context menu - out.fc_newfolder = "Νέος φάκελος"; - out.fc_rename = "Μετονομασία"; - out.fc_open = "Άνοιγμα"; - out.fc_open_ro = "Άνοιγμα για προβολή μόνο"; - out.fc_delete = "Μετακίνηση στον κάδο"; - out.fc_restore = "Επαναφορά"; - out.fc_remove = "Αφαίρεση από το CryptDrive σας"; - out.fc_empty = "Άδειασμα του κάδου"; - out.fc_prop = "Ιδιότητες"; - out.fc_hashtag = "Ετικέτες"; - out.fc_sizeInKilobytes = "Μέγεθος σε Kilobytes"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "Δεν μπορείτε να μετακινήσετε έναν φάκελο στη λίστα των αταξινόμητων pads"; - out.fo_existingNameError = "Το όνομα χρησμοποιείται ήδη σε αυτή την τοποθεσία. Παρακαλώ επιλέξτε ένα άλλο."; - out.fo_moveFolderToChildError = "Δεν μπορείτε να μετακινήσετε έναν φάκελο μέσα σε κάποιο από τα περιεχόμενα του"; - out.fo_unableToRestore = "Αδυναμία επαναφοράς αυτού του αρχείο στην αρχική τοποθεσία του. Μπορείτε να δοκιμάσετε να το μετακινήσετε σε μια νέα τοποθεσία."; - out.fo_unavailableName = "Ένα αρχείο ή ένας φάκελος με το ίδιο όνομα υπάρχει ήδη στη νέα τοποθεσία. Μετονομάστε το αρχείο και προσπαθήστε ξανά."; - - out.fs_migration = "Το CryptDrive σας αναβαθμίστηκε σε μια νεότερη έκδοση. Ως αποτέλεσμα, η τρέχουσα σελίδα θα πρέπει να επαναφορτωθεί.
    Παρακαλούμε επαναφορτώστε τη σελίδα για να συνεχίσετε να την χρησιμοποιείτε."; - - // login - out.login_login = "Σύνδεση"; - out.login_makeAPad = 'Δημιουργήστε ένα pad ανώνυμα'; - out.login_nologin = "Περιηγηθείτε στα τοπικά pads"; - out.login_register = "Εγγραφή"; - out.logoutButton = "Αποσύνδεση"; - out.settingsButton = "Ρυθμίσεις"; - - out.login_username = "Όνομα χρήστη"; - out.login_password = "Κωδικός"; - out.login_confirm = "Επιβεβαίωση κωδικού"; - out.login_remember = "Απομνημόνευση"; - - out.login_hashing = "Κρυπτογραφούμε τον κωδικό σας, αυτό μπορεί να πάρει λίγη ώρα."; - - out.login_hello = 'Καλησπέρα {0},'; // {0} is the username - out.login_helloNoName = 'Καλησπέρα,'; - out.login_accessDrive = 'Περιηγήθείτε στον αποθηκευτικό σας χώρο'; - out.login_orNoLogin = 'ή'; - - out.login_noSuchUser = 'Μη έγκυρο όνομα χρήστη ή λάθος κωδικός. Προσπαθήστε ξανά, ή εγγραφείτε'; - out.login_invalUser = 'Απαιτείται όνομα χρήστη'; - out.login_invalPass = 'Απαιτείται κωδικός'; - out.login_unhandledError = 'Προέκυψε ένα μη αναμενόμενο σφάλμα :('; - - out.register_importRecent = "Εισαγωγή ιστορικού (Συνίσταται)"; - out.register_acceptTerms = "Αποδέχομαι τους όρους χρήσης της υπηρεσίας"; - out.register_passwordsDontMatch = "Οι κωδικοί δεν ταιριάζουν!"; - out.register_passwordTooShort = "Οι κωδικοί πρέπει να αποτελούνται από τουλάχιστον {0} χαρακτήρες."; - - out.register_mustAcceptTerms = "Πρέπει να αποδεχτείτε τους όρους της υπηρεσίας."; - out.register_mustRememberPass = "Δεν μπορούμε να επαναφέρουμε τον κωδικό σας αν τον ξεχάσετε. Είναι πολύ σημαντικό να τον θυμάστε! Παρακαλούμε πατήστε στο κουτάκι για επιβεβαίωση."; - - out.register_header = "Καλώς ήρθατε στο CryptPad"; - out.register_explanation = [ - "

    Ας δούμε κάνα-δυο πράγματα πρώτα:

    ", - "
      ", - "
    • Ο κωδικός σας είναι το μυστικό κλειδί που κρυπτογραφεί όλα τα pads σας. Αν το χάσετε, δεν υπάρχει τρόπος να επαναφέρουμε τα δεδομένα σας.
    • ", - "
    • Μπορείτε να εισάγετε τα pads που ανοίξατε πρόσφατα στον περιηγητή σας ώστε να τα έχετε στον λογαριασμό σας.
    • ", - "
    • Αν χρησιμοποιείτε έναν κοινόχρηστο υπολογιστή, θα πρέπει να αποσυνδεθείτε όταν τελειώσετε, το να κλείσετε την καρτέλα δεν είναι αρκετό.
    • ", - "
    " - ].join(''); - - out.register_writtenPassword = "Έχω σημειώσει το όνομα χρήστη και τον κωδικό μου, συνέχεια"; - out.register_cancel = "Επιστροφή"; - - out.register_warning = "Zero Knowledge σημαίνει πως δεν μπορούμε να επαναφέρουμε τον λογαριασμό σας αν χάσετε τον κωδικό σας."; - - out.register_alreadyRegistered = "Αυτός ο χρήστης υπάρχει ήδη, μήπως θέλετε να συνδεθείτε;"; - - // Settings - out.settings_cat_account = "Λογαριασμός"; - out.settings_cat_drive = "CryptDrive"; - out.settings_cat_code = "Κώδικας"; - out.settings_title = "Ρυθμίσεις"; - out.settings_save = "Αποθήκευση"; - - out.settings_backupCategory = "Αντίγραφο ασφαλείας"; - out.settings_backupTitle = "Αποθηκεύστε ή επαναφέρετε όλα σας τα δεδομένα"; - out.settings_backup = "Δημιουργία αντιγράφου ασφαλείας"; - out.settings_restore = "Επαναφορά από αντίγραφο ασφαλείας"; - - out.settings_resetNewTitle = "Εκκαθάριση του CryptDrive"; - out.settings_resetButton = "Αφαίρεση"; - out.settings_reset = "Αφαίρεση όλων των αρχείων και φακέλων από το CryptDrive σας"; - out.settings_resetPrompt = "Αυτή η ενέργεια θα αφαιρέσει όλα τα pads από τον αποθηκευτικό σας χώρο.
    "+ - "Θέλετε σίγουρα να συνεχίσετε;
    " + - "Πληκτρολογήστε “I love CryptPad” για επιβεβαίωση."; - out.settings_resetDone = "Ο αποθηκευτικός σας χώρος είναι πλέον άδειος!"; - out.settings_resetError = "Λάθος κείμενο επιβεβαίωσης. Το CryptDrive σας δεν έχει αλλαχθεί."; - - out.settings_resetTipsAction = "Επαναφορά"; - out.settings_resetTips = "Συμβουλές"; - out.settings_resetTipsButton = "Επαναφέρετε όλες τις διαθέσιμες συμβουλές για το CryptDrive"; - out.settings_resetTipsDone = "Όλες οι συμβουλές είναι πάλι ορατές."; - - out.settings_thumbnails = "Μικρογραφίες"; - out.settings_disableThumbnailsAction = "Απενεργοποίηση μικρογραφιών στο CryptDrive σας"; - out.settings_disableThumbnailsDescription = "Οι μικρογραφίες δημιουργούνται αυτόματα και αποθηκεύονται στον περιηγητή σας όταν επισκέπτεστε ένα νέο pad. Μπορείτε να απενεργοποιήσετε αυτό το χαρακτηριστικό εδώ."; - out.settings_resetThumbnailsAction = "Εκκαθάριση"; - out.settings_resetThumbnailsDescription = "Εκκαθάριση όλων των μικρογραφιών που έχουν αποθηκευτεί στον περιηγητή σας."; - out.settings_resetThumbnailsDone = "Όλες οι μικρογραφίες έχουν διαγραφεί."; - - out.settings_importTitle = "Εισάγετε τα πρόσφατα pads αυτού του περιηγητή στο CryptDrive σας"; - out.settings_import = "Εισαγωγή"; - out.settings_importConfirm = "Είσαστε σίγουρος ότι θέλετε να εισάγετε τα πρόσφατα pads από αυτόν τον περιηγητή στον λογαριασμό χρήστη σας στο CryptDrive?"; - out.settings_importDone = "Εισαγωγή ολοκληρώθηκε"; - - out.settings_userFeedbackTitle = "Αναπληροφόρηση"; - out.settings_userFeedbackHint1 = "Το CryptPad αποστέλλει κάποιες πολύ βασικές πληροφορίες σ' εμάς, ώστε να μας ενημερώσει για το πως μπορούμε να βελτιώσουμε την εμπειρία σας."; - out.settings_userFeedbackHint2 = "Το περιεχόμενο των pads σας δεν διαμοιράζεται ποτέ μαζί μας."; - out.settings_userFeedback = "Ενεργοποίηση αναπληροφόρησης χρήστη"; - - out.settings_anonymous = "Δεν είσαστε συνδεδεμένος. Οι τρέχουσες ρυθμίσεις ισχύουν μόνο για τον συγκεκριμένο περιηγητή."; - out.settings_publicSigningKey = "Δημόσιο κλειδί κρυπτογράφησης"; - - out.settings_usage = "Χρήση"; - out.settings_usageTitle = "Δείτε ολόκληρο το μέγεθος των καρφιτσωμένων pads σας σε MB"; - out.settings_pinningNotAvailable = "Τα καρφιτσωμένα pads είναι διαθέσιμα μόνο σε εγγεγραμένους χρήστες."; - out.settings_pinningError = "Κάτι πήγε στραβά"; - out.settings_usageAmount = "Τα καρφιτσωμένα pads σας καταναλώνουν σε χώρο {0}MB"; - - out.settings_logoutEverywhereButton = "Αποσύνδεση"; - out.settings_logoutEverywhereTitle = "Αποσύνδεση παντού"; - out.settings_logoutEverywhere = "Εξαναγκασμός αποσύνδεσης όλων των άλλων διαδικτυακών συνεδριών."; - out.settings_logoutEverywhereConfirm = "Είσαστε σίγουροι; Θα χρειαστεί να επανασυνδεθείτε σε όλες σας τις συσκευές."; - - out.settings_codeIndentation = 'Εσοχές στον επεξεργαστή κώδικα (κενά)'; - out.settings_codeUseTabs = "Εισαγωγή εσoχών με χρήση του πλήκτρου tab, αντί κενών"; - - out.upload_title = "Μεταφόρτωση αρχείου"; - out.upload_rename = "Θέλετε να μετονομάσετε το {0} πριν το μεταφορτώσετε στον διακομιστή;
    " + - "Η κατάληξη του αρχείου ({1}) θα προστεθεί αυτόματα. "+ - "Αυτό το όνομα θα είναι μόνιμο και ορατό σε άλλους χρήστες."; - out.upload_serverError = "Λάθος Διακομιστή: δεν μπορούμε να μεταφορτώσουμε το αρχείο σας αυτή την στιγμή."; - out.upload_uploadPending = "Προσπαθείτε ήδη να μεταφορτώσετε κάτι αυτή την στιγμή. Ακύρωση και μεταφόρτωση του κανούριου σας αρχείου;"; - out.upload_success = "Το αρχείο σας ({0}) έχει μεταφορτωθεί επιτυχώς κι έχει προστεθεί στον αποθηκευτικό σας χώρο."; - out.upload_notEnoughSpace = "Δεν υπάρχει αρκετός αποθηκευτικός χώρος γι' αυτό το αρχείο στο CryptDrive σας."; - out.upload_tooLarge = "Αυτό το αρχείο ξεπερνάει το μέγιστο μέγεθος μεταφόρτωσης."; - out.upload_choose = "Επιλέξτε ένα αρχείο"; - out.upload_pending = "Εκρεμμεί"; - out.upload_cancelled = "Ακυρώθηκε"; - out.upload_name = "Όνομα αρχείου"; - out.upload_size = "Μέγεθος"; - out.upload_progress = "Εξέλιξη"; - out.upload_mustLogin = "Πρέπει να είσαστε συνδεδεμένος για να μεταφορτώσετε ένα αρχείο"; - out.download_button = " Αποκρυπτογράφηση & Κατέβασμα"; - out.download_mt_button = "Λήψη"; - - out.todo_title = "CryptTodo"; - out.todo_newTodoNamePlaceholder = "Περιγράψτε την εργασία σας..."; - out.todo_newTodoNameTitle = "Προσθέστε την εργασία σας στη λίστα εργασιών"; - out.todo_markAsCompleteTitle = "Σημειώστε αυτή την εργασία ως ολοκληρωμένη"; - out.todo_markAsIncompleteTitle = "Σημειώστε αυτή την εργασία ως ανολοκλήρωτη"; - out.todo_removeTaskTitle = "Αφαιρέστε αυτή την εργασία από την λίστα εργασιών σας"; - - // pad - out.pad_showToolbar = "Εμφάνιση γραμμής εργαλείων"; - out.pad_hideToolbar = "Απόκρυψη γραμμής εργαλείων"; - - // general warnings - out.warn_notPinned = "Αυτό το pad δεν είναι αποθηκευμένο σε κάποιο CryptDrive. Θα διαγραφεί σε 3 μήνες. Μάθετε περισσότερα..."; - - // markdown toolbar - out.mdToolbar_button = "Εμφάνιση ή απόκρυψη της γραμμής εργαλείων Markdown"; - out.mdToolbar_defaultText = "Το κείμενο σας εδώ"; - out.mdToolbar_help = "Βοήθεια"; - out.mdToolbar_tutorial = "http://www.markdowntutorial.com/"; - out.mdToolbar_bold = "Έντονα"; - out.mdToolbar_italic = "Πλάγια"; - out.mdToolbar_strikethrough = "Διεγραμμένα"; - out.mdToolbar_heading = "Επικεφαλίδα"; - out.mdToolbar_link = "Σύνδεσμος"; - out.mdToolbar_quote = "Παράθεση"; - out.mdToolbar_nlist = "Λίστα με αριθμούς"; - out.mdToolbar_list = "Λίστα με σημεία"; - out.mdToolbar_check = "Λίστα εργασιών"; - out.mdToolbar_code = "Κώδικας"; - - // index.html - - - //about.html - out.main_p2 = 'Αυτό το εγχείρημα χρησιμοποιεί τον γραφικό επεξεργαστή CKEditor, CodeMirror, και την μηχανή πραγματικού χρόνου ChainPad.'; - out.main_howitworks_p1 = 'Το CryptPad χρησιμοποιεί μια παραλλαγή του αλγόριθμου Operational transformation με τον οποίο καταφέρνει να πετύχει κατανεμημένη συναίνεση χρησιμοποιώντας Blockchain, μια δομή που έγινε δημοφιλής μέσω του Bitcoin. Με αυτό τον τρόπο ο αλγόριθμος αποφεύγει την ανάγκη ύπαρξης ενός κεντρικού διακομιστή για να επιλύσει συγκρούσεις ταυτόχρονης επεξεργασίας και χωρίς την ανάγκη επίλυσης αυτών των συγκρούσεων, ο διακομιστής δεν χρειάζεται να έχει γνώση του περιεχομένου που υπάρχει στο pad.'; - - // contact.html - out.main_about_p2 = 'Αν έχετε απορίες ή σχόλια, επικοινωνήστε μαζί μας!
    Μπορείτε να στείλετε ένα tweet, να δημιουργήσετε ένα θέμα στο GitHub. Ελάτε να πείτε "γεια" στο Matrix κανάλι μας ή στο IRC (#cryptpad on irc.freenode.net), ή στείλτε μας ένα email.'; - out.main_about_p22 = 'Στείλτε μας ένα tweet'; - out.main_about_p23 = 'Δημιουργήστε ένα θέμα στο GitHub'; - out.main_about_p24 = 'Πείτε "γεια" στο Matrix'; - out.main_about_p25 = 'Στείλτε μας ένα email'; - out.main_about_p26 = 'Αν έχετε απορίες ή σχόλια, επικοινωνήστε μαζί μας!'; - - out.main_info = "

    Συνεργαστείτε με ασφάλεια

    Αναπτύξτε τις ιδέες σας μαζί με κοινά αρχεία όσο η τεχνολογία Zero Knowledge εξασφαλίζει την ιδιωτικότητά σας; ακόμη κι από εμάς."; - out.main_catch_phrase = "Το Zero Knowledge σύννεφο"; - - out.main_howitworks = 'Πως Λειτουργεί'; - out.main_zeroKnowledge = 'Πρωτόκολλο Zero Knowledge'; - out.main_zeroKnowledge_p = "Δεν χρειάζεται να μας εμπιστευθείτε όταν σας λέμε πως δεν θα κοιτάξουμε τα pads σας, διότι με την επαναστατική τεχνολογία Zero Knowledge του CryptPad δεν μπορούμε να τα κοιτάξουμε. Μάθετε περισσότερα για το πως προστατεύουμε την Ασφάλεια και Ιδιωτικότητά σας."; - out.main_writeItDown = 'Σημειώστε το'; - - out.main_writeItDown_p = "Τα μεγαλύτερα έργα προέρχονται από τις μικρότερες ιδέες. Καταγράψτε τις στιγμές έμπνευσης και τις απροσδόκητες ιδέες σας διότι ποτέ δεν ξέρετε ποια από αυτές μπορεί να είναι η επόμενη μεγάλη ανακάλυψη."; - out.main_share = 'Μοιραστείτε τον σύνδεσμο, μοιραστείτε το pad'; - out.main_share_p = "Αναπτύξτε τις ιδέες σας μαζί: πραγματοποιήστε αποτελεσματικές συναντήσεις, συνεργαστείτε στις λίστες εργασιών και κάντε γρήγορες παρουσιάσεις με όλους τους φίλους σας και από όλες τις συσκευές σας."; - out.main_organize = 'Οργανωθείτε'; - out.main_organize_p = "Με το CryptPad Drive, μπορείτε να συγκεντρωθείτε στο τι είναι σημαντικό. Οι φάκελοι σας επιτρέπουν να ελέγχετε τα έργα σας και να έχετε μία συνολική εικόνα για το πως προχωράνε τα πράγματα."; - out.tryIt = 'Δοκιμάστε το!'; - out.main_richText = 'Επεξεργαστής Εμπλουτισμένου Κειμένου'; - out.main_richText_p = 'Επεξεργαστείτε pads εμπλουτισμένου κειμένου συνεργατικά με την πραγματικού χρόνου Zero Knowledge εφαρμογή μας CkEditor.'; - out.main_code = 'Επεξεργαστής κώδικα'; - out.main_code_p = 'Επεξεργαστείτε κώδικα συνεργατικά με την πραγματικού χρόνου Zero Knowledge εφαρμογή μας CodeMirror.'; - out.main_slide = 'Επεξεργαστής Slide'; - out.main_slide_p = 'Δημιουργείστε τις παρουσιάσεις σας χρησιμοποιώντας μορφοποίηση Markdown και προβάλλετέ τις στον περιηγητή σας.'; - out.main_poll = 'Δημοσκοπήσεις'; - out.main_poll_p = 'Προγραμματίστε την συνάντησή σας ή την δραστηριότητά σας, ή ψηφίστε την καλύτερη λύση σχετικά με το πρόβλημά σας.'; - out.main_drive = 'CryptDrive'; - - out.main_richTextPad = 'Pad εμπλουτισμένου κειμένου'; - out.main_codePad = 'Pad κώδικα'; - out.main_slidePad = 'Markdown παρουσίαση'; - out.main_pollPad = 'Δημοσκόπηση ή Χρονοδιάγραμμα'; - out.main_whiteboardPad = 'Πίνακας σχεδιασμού'; - out.main_localPads = 'Τοπικά pads'; - out.main_yourCryptDrive = 'Το CryptDrive σας'; - out.main_footerText = "Με το CryptPad, μπορείτε να δημιουργήσετε γρήγορα συνεργατικά έγγραφα για κοινόχρηστες σημειώσεις και καταγραφή ιδεών."; - - out.footer_applications = "Εφαρμογές"; - out.footer_contact = "Επικοινωνία"; - out.footer_aboutUs = "Σχετικά με εμάς"; - - out.about = "Σχετικά"; - out.privacy = "Ιδιωτικότητα"; - out.contact = "Επικοινωνία"; - out.terms = "Όροι χρήσης"; - out.blog = "Ιστολόγιο"; - - out.topbar_whatIsCryptpad = "Τι είναι το CryptPad"; - - // what-is-cryptpad.html - - out.whatis_title = 'Τι είναι το CryptPad'; - out.whatis_collaboration = 'Γρήγορη, εύκολη συνεργασία'; - out.whatis_collaboration_p1 = 'Με το CryptPad, μπορείτε να δημιουργείτε όλοι μαζί γρήγορα συνεργατικά έγγραφα για τις σημειώσεις σας και τις ιδέες που καταγράφετε. Όταν εγγραφείτε και συνδεθείτε, σας δίνεται άμεσα η δυνατότητα \'ανεβάσματος\' κι έναν \'αποθηκευτικό χώρο\' CryptDrive όπου μπορείτε να οργανώσετε όλα σας τα pads. Ως εγγεγραμένος χρήστης παίρνετε 50MB δωρεάν.'; - out.whatis_collaboration_p2 = 'Μπορείτε να μοιραστείτε την πρόσβαση σε ένα έγγραφο του CryptPad απλά δίνοντας τον σύνδεσμο σε κάποιον άλλο. Μπορείτε επίσης να μοιραστείτε ένα σύνδεσμο ο οποίος παρέχει πρόσβαση μόνο για ανάγνωση σε ένα pad, επιτρέποντάς σας να κοινοποιήσετε την συλλογική σας δουλειά ενώ ταυτόχρονα έχετε ακόμα τη δυνατότητα να το επεξεργαστείτε.'; - out.whatis_collaboration_p3 = 'Μπορείτε να δημιουργήσετε απλά εμπλουτισμένα κείμενα με το CKEditor όπως επίσης κείμενα με γλώσσα προγραμματισμού Markdown τα οποία τροποποιούνται σε πραγματικό χρόνο καθώς πληκτρολογείτε. Μπορείτε επίσης να χρησιμοποιήσετε την εφαρμογή δημοσκόπησης για να προγραμματίσετε δραστηριότητες με πολλαπλούς συμμετέχοντες.'; - out.whatis_zeroknowledge = 'Zero Knowledge'; - out.whatis_zeroknowledge_p1 = "Δεν θέλουμε να ξέρουμε τι πληκτρολογείτε και με τον σύγχρονο τρόπο κρυπτογράφησης μπορείτε να είσαστε σίγουροι ότι δεν μπορούμε να ξέρουμε. Το CryptPad χρησιμοποιεί 100% κρυπτογράφηση client side για να προστατεύσει το περιεχόμενο που πληκτρολογείτε από εμάς, τους ανθρώπους που φιλοξενούν τον διακομιστή."; - out.whatis_zeroknowledge_p2 = 'Όταν κάνετε εγγραφή και συνδέεστε, το όνομα χρήστη σας κι ο κωδικός σας μετατρέπονται σε ένα κρυπτογραφημένο κλειδί χρησιμοποιώντας το scrypt key derivation function. Το συγκεκριμένο κλειδί, το όνομα χρήστη κι ο κωδικός χρήστη δεν στέλνονται καν στον διακομιστή. Αντιθέτως χρησιμοποιούνται από το client side για να αποκρυπτογραφήσουν το περιεχόμενο του CryptDrive σας, το οποίο περιέχει όλα τα κλειδιά για όλα τα pads στα οποία μπορείτε να έχετε πρόσβαση.'; - out.whatis_zeroknowledge_p3 = 'Όταν μοιράζεστε έναν σύνδεσμο προς ένα έγγραφο, μοιράζεστε το κρυπτογραφημένο κλειδί για το συγκεκριμένο έγγραφο αλλά εφόσον το κλειδί είναι στο fragment identifier, δεν στέλνεται ποτέ απευθείας στον διακομιστή. Επισκεφθείτε το privacy blog post για να μάθετε περισσότερα σχετικά με το σε ποια μεταδεδομένα έχουμε πρόσβαση και σε ποια όχι.'; - out.whatis_drive = 'Οργάνωση με το CryptDrive'; - out.whatis_drive_p1 = 'Κάθε φορά που επισκέπτεσθε ένα pad στο CryptPad, το pad προστίθεται αυτόματα στο CryptDrive στον κυρίως φάκελο. Αργότερα μπορείτε να οργανώσετε αυτά τα pad σε φακέλους ή μπορείτε να τα μετακινήσετε στον κάδο ανακύκλωσης. Το CryptDrive σας επιτρέπει να περιηγηθείτε ανάμεσα στα pads σας και να τα οργανώνετε όποτε κι όπως θέλετε.'; - out.whatis_drive_p2 = 'Με το κλασικό drag-and-drop, μπορείτε να μεταφέρετε pads μέσα στον αποθηκευτικό σας χώρο και ο σύνδεσμος αυτών των pads θα παραμείνει ο ίδιος ώστε οι συνεργάτες σας να μην σταματήσουν ποτέ να έχουν πρόσβαση.'; - out.whatis_drive_p3 = 'Μπορείτε επίσης να ανεβάσετε αρχεία στο CryptDrive σας και να τα μοιραστείτε με συνεργάτες. Τα ανεβασμένα αρχεία μπορούν να οργανωθούν ακριβώς όπως τα συνεργατικά pads.'; - out.whatis_business = 'Το CryptPad για επιχειρήσεις'; - out.whatis_business_p1 = 'Το πρωτόκολλο κρυπτογράφησης Zero Knowledge του CryptPad είναι ιδανικό για να πολλαπλασιαστεί η αποτελεσματικότητα των ήδη υπάρχοντων πρωτοκόλλων ασφαλείας προστατεύοντας τα εταιρικά στοιχεία πρόσβασης με ισχυρή κρυπτογράφηση. Επειδή τα ευαίσθητα δεδομένα μπορούν να αποκρυπτογραφηθούν μόνο με την χρήση των στοιχείων των υπαλλήλων, το CryptPad εξαλείφει τον παράγοντα hacker ο οποίος ενυπάρχει σε παραδοσιακούς εταιρικούς διακομιστές. Διαβάστε το CryptPad Whitepaper για να μάθετε περισσότερα σχετικά με το πως μπορεί να βοηθήσει την επιχείρησή σας.'; - out.whatis_business_p2 = 'To CryptPad μπορεί να εγκατασταθεί τοπικά και οι προγραμματιστές του στην XWiki SAS είναι σε θέση να προσφέρουν εμπορική υποστήριξη, τροποποιήσεις και περαιτέρω ανάπτυξη. Επικοινωνήστε στο sales@cryptpad.fr για περισσότερες πληροφορίες.'; - - // privacy.html - - out.policy_title = 'Πολιτική απορρήτου του CryptPad'; - out.policy_whatweknow = 'Τι γνωρίζουμε για εσάς'; - out.policy_whatweknow_p1 = 'Ως εφαρμογή η οποία φιλοξενείται στο διαδίκτυο, το CryptPad έχει πρόσβαση στα μεταδεδομένα που είναι εκτεθειμένα από το πρωτόκολλο HTTP. Αυτό συμπεριλαμβάνει την διεύθυνση IP σας και ποικίλες HTTP κεφαλίδες που μπορούν να χρησιμοποιηθούν για να ταυτοποιήσουν τον συγκεκριμένο περιηγητή. Μπορείτε να δείτε τι πληροφορίες μοιράζεται ο περιηγητής σας με το να επισκεφθείτε WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'Χρησιμοποιούμε το Kibana, μια πλατφόρμα ανάλυσης ανοιχτού κώδικα, για να μάθουμε περισσότερα για τους χρήστες μας. Το Κibana μας ενημερώνει για το πως βρήκατε το CryptPad, μέσω απευθείας σύνδεσης, μέσω μηχανής αναζήτησης, ή μέσω αναφοράς από άλλη διαδυκτιακή υπηρεσία όπως το Reddit ή το Twitter.'; - out.policy_howweuse = 'Πώς χρησιμοποιούμε αυτά που μαθαίνουμε'; - out.policy_howweuse_p1 = 'Χρησιμοποιούμε αυτές τις πληροφορίες για να παίρνουμε καλύτερες αποφάσεις σχετικά με την προώθηση του CryptPad, εξετάζοντας ποιες από τις προηγούμενες προσπάθειές μας υπήρξαν επιτυχείς. Οι πληροφορίες σχετικά με την τοποθεσία σας μας βοηθούν στο να σκεφτούμε αν θα έπρεπε να παρέχουμε καλύτερη υποστήριξη για γλώσσες εκτός των Αγγλικών.'; - out.policy_howweuse_p2 = "Οι πληροφορίες σχετικά με τον περιηγητή σας (είτε είναι επιτραπέζιου είτε φορητού λειτουργικού συστήματος) μας βοηθάνε να παίρνουμε αποφάσεις στο θέμα προτεραιοτήτων βελτίωσης χαρακτηριστικών. Η ομάδα προγραμματισμού μας είναι μικρή και προσπαθούμε να κάνουμε επιλογές οι οποίες θα βελτιώσουν την εμπειρία όσων το δυνατό περισσότερων χρηστών."; - out.policy_whatwetell = 'Τι λέμε σε άλλους για εσάς'; - out.policy_whatwetell_p1 = 'Δεν παρέχουμε σε τρίτους τις πληροφορίες που συλλέγουμε ή τις πληροφορίες που μας δίνετε εκτός κι αν είμαστε υποχρεωμένοι νομικά.'; - out.policy_links = 'Σύνδεσμοι σε άλλες σελίδες'; - out.policy_links_p1 = 'Αυτή η ιστοσελίδα περιέχει συνδέσμους προς άλλες σελίδες, συμπεριλαμβανομένων αυτών που δημιουργήθηκαν από άλλους οργανισμούς. Δεν είμαστε υπεύθυνοι για την πολιτική απορρήτου ή το περιεχόμενο μιας εξωτερικής σελίδας. Ως γενικό κανόνα έχουμε πως οι σύνδεσμοι σε διαφορετικές σελίδες ανοίγουν σε καινούριο παράθυρο για να είναι ξεκάθαρο ότι φεύγετε από το CryptPad.fr.'; - out.policy_ads_p1 = 'Δεν προβάλουμε διαφημίσεις εντός της υπηρεσίας, όμως μπορεί να παρέχουμε συνδέσμους στους ανθρώπους που ενισχύουν οικονομικά την έρευνά μας.'; - out.policy_choices = 'Οι επιλογές που έχετε'; - out.policy_choices_open = 'Ο κώδικάς μας διατίθεται ελεύθερα, οπότε έχετε πάντα την επιλογή να φιλοξενήσετε το Cryptpad σε δικό σας διακομιστή.'; - out.policy_choices_vpn = 'Εάν θέλετε να χρησιμοποιήσετε τη δική μας εκδοχή του Cryptpad, αλλά δεν θέλετε να φαίνεται η IP διεύθυνσή σας, μπορείτε να προστατέψετε την IP σας χρησιμοποιώντας το Tor browser bundle, ή ένα VPN.'; - out.policy_choices_ads = 'Εάν θα θέλατε απλά να εμποδίσετε την πλατφόρμα ανάλυσής μας, μπορείτε να χρησιμοποιήσετε εργαλεία απόκρυψης διαφημίσεων όπως το Privacy Badger.'; - - // terms.html - - out.tos_title = " Όροι και Προϋποθέσεις του CryptPad"; - out.tos_legal = "Παρακαλούμε μην κάνετε κακή χρήση ή/και κατάχρηση της υπηρεσίας ή οτιδήποτε παράνομο."; - out.tos_availability = "Ελπίζουμε να βρείτε χρήσιμη αυτή την υπηρεσία, αλλά η προσβασιμότητα κι η απόδοση δεν μπορούν να εγγυηθούν. Παρακαλούμε κάνετε εξαγωγή των δεδομένων σας συχνά."; - out.tos_e2ee = "Τα περιεχόμενα του CryptPad μπορούν να διαβαστούν ή να αλλαχθούν από οποιονδήποτε μπορεί να μαντέψει ή να αποκτήσει την ηλεκτρονική διεύθυνση του pad. Προτείνουμε να χρησιμοποιείτε τεχνολογία κρυπτογραφημένων μηνυμάτων από άκρη σε άκρη (e2ee) για να μοιράζεστε συνδέσμους και να μην αναλάβετε καμία ευθύνη σε περίπτωση που διαρρέυσει κάποιος τέτοιος σύνδεσμος."; - out.tos_logs = "Τα μεταδεδομένα που παρέχονται από τον περιηγητή σας στον διακομιστή μπορεί να καταγράφονται με σκοπό τη συντήρηση της υπηρεσίας."; - out.tos_3rdparties = "Δεν παρέχουμε προσωπικά δεδομένα σε τρίτους παρά μόνο εάν ζητηθεί από το νόμο."; - - // 404 page - out.four04_pageNotFound = "Η σελίδα που ψάχνετε, δεν βρέθηκε!"; - - // BottomBar.html - - //out.bottom_france = 'Δημιουργήθηκε με love στην Γαλλία'; - //out.bottom_support = 'Ένα XWiki SAS Labs Project με την υποστήριξη του OpenPaaS-ng'; - - // Header.html - - out.header_france = 'Με love στην Γαλλία από την XWiki SAS'; - - out.header_support = ' OpenPaaS-ng'; - out.updated_0_header_logoTitle = 'Μετάβαση στο CryptDrive σας'; - out.header_logoTitle = out.updated_0_header_logoTitle; - out.header_homeTitle = 'Μετάβαση στην αρχική σελίδα του CryptPad'; - - // Initial states - - out.initialState = [ - '

    ', - 'Αυτό είναι CryptPad, ο συνεργατικός επεξεργαστής πραγματικού χρόνου Zero Knowledge. Τα πάντα αποθηκεύονται καθώς πληκτρολογείτε.', - '
    ', - 'Μοιραστείτε τον σύνδεσμο σε αυτό το pad για να το επεξεργαστείτε με φίλους ή χρησιμοποιήστε το κουμπί για να μοιραστείτε ένα κείμενο με δικαιώματα read-only link το οποίο επιτρέπει να το αναγνώσει κάποιος αλλά όχι να το επεξεργαστεί.', - '

    ', - ].join(''); - - out.codeInitialState = [ - '# Ο συνεργατικός επεξεργαστής Zero Knowledge του CryptPad\n', - '\n', - '* Ό,τι πληκτρολογείτε εδώ είναι κρυπτογραφημένο έτσι ώστε μόνο οι άνθρωποι που έχουν τον σύνδεσμο να μπορούν να έχουν πρόσβαση.\n', - '* Μπορείτε να επιλέξετε την γλώσσα προγραμματισμού για να υπογραμμίζετε και το χρώμα του θέματος UI πάνω δεξιά.' - ].join(''); - - out.slideInitialState = [ - '# CryptSlide\n', - '1. Γράψτε τα περιεχόμενα των slides σας χρησιμοποιώντας σύνταξη markdown\n', - ' - Μάθετε περισσότερα για την σύνταξη markdown [εδώ](http://www.markdowntutorial.com/)\n', - '2. Διαχωρίστε τα slides σας με ---\n', - '3. Πατήστε το κουμπάκι "Play" για να δείτε το αποτέλεσμα', - ' - Τα slides σας ενημερώνονται σε πραγματικό χρόνο' - ].join(''); - - // Readme - - out.driveReadmeTitle = "Τι είναι το CryptPad;"; - out.readme_welcome = "Καλωσήρθατε στο CryptPad!"; - out.readme_p1 = "Καλωσήρθατε στο CryptPad, όπου μπορείτε να έχετε τις σημειώσεις σας μόνοι σας ή με φίλους."; - out.readme_p2 = "Αυτό το pad έχει έναν γρήγορο οδηγό χρήσης του πως να χρησιμοποιήσετε το CryptPad για να κρατάτε σημειώσεις, να τις έχετε οργανωμένες και να δουλέψετε πάνω τους συνεργατικά."; - out.readme_cat1 = "Μάθετε το CryptDrive σας"; - out.readme_cat1_l1 = "Δημιούργηστε ένα pad: Στο CryptDrive σας, κάντε \"κλικ\" στο {0} και έπειτα στο {1} και μπορείτε να δημιουργήσετε ένα pad."; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "Ανοίξτε pads από το CryptDrive σας: κάντε διπλό \"κλικ\" σε ένα εικονίδιο pad για να το ανοίξετε."; - out.readme_cat1_l3 = "Οργάνωστε τα pads σας: Όταν είσαστε συνδεδεμένοι, κάθε pad στο οποίο έχετε πρόσβαση θα εμφανίζεται ως {0} στο τμήμα του δίσκου σας."; // 0: Unsorted files - out.readme_cat1_l3_l1 = "Μπορείτε να κάνετε \"κλικ\" και να σύρετε αρχεία μέσα σε φακέλους στον τομέα {0} του δίσκου σας και να δημιουργήσετε καινούρια αρχεία."; // 0: Documents - out.readme_cat1_l3_l2 = "Θυμηθείτε να δοκιμάζετε το δεξί \"κλικ\" στα εικονίδια διότι συχνά υπάρχουν επιπρόσθετα μενού."; - out.readme_cat1_l4 = "Πετάξτε τα παλιά pads στα σκουπίδια: Μπορείτε να κάνετε \"κλικ\" και να σύρετε τα pads μέσα στα {0} με τον ίδιο τρόπο που τα σύρετε μέσα στους φακέλους."; // 0: Trash - out.readme_cat2 = "Δημιουργείστε pads σαν επαγγελματίας"; - out.edit = "επεξεργασία"; - out.view = "προβολή"; - out.readme_cat2_l1 = "Το κουμπί {0} στο pad σας επιτρέπει να δίνετε πρόσβαση στους συνεργάτες σας είτε να κάνουν {1} είτε να κάνουν {2} το pad."; // 0: Share, 1: edit, 2: view - out.readme_cat2_l2 = "Αλλάξτε τον τίτλο του pad κάνοντας \"κλικ\" στο μολύβι"; - out.readme_cat3 = "Ανακαλύψτε CryptPad εφαρμογές"; - out.readme_cat3_l1 = "Με το CryptPad code editor, μπορείτε να συνεργαστείτε σε κώδικα όπως οι γλώσσες προγραμματισμού Javascript και markdown ή HTML και Markdown"; - out.readme_cat3_l2 = "Με το CryptPad slide editor, μπορείτε να κάνετε γρήγορες παρουσιάσεις χρησιμοποιώντας γλώσσα Markdown"; - out.readme_cat3_l3 = "Με το CryptPoll μπορείτε να ψηφίζετε γρήγορα, ειδικά για να ορίζετε συναντήσεις σε ημερομηνίες που ταιριάζουν με το πρόγραμμα όλων"; - - // Tips - out.tips = {}; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` και `ctrl+u` είναι γρήγορες συντομεύσεις για έντονα, πλάγια και υπογραμμισμένα γράμματα."; - out.tips.indent = "Σε αριθμημένες λίστες όπως και λίστες με τελείες, μπορείτε να χρησιμοποιήσετε tab ή shift+tab για να αυξήσετε ή να μειώσετε τις εσοχές με γρήγορο τρόπο."; - out.tips.store = "Κάθε φορά που επισκέπτεστε ένα pad, εάν είσαστε συνδεδεμένοι, θα σώζεται αυτόματα στο CryptDrive σας."; - out.tips.marker = "Μπορείτε να υπογραμμίσετε κείμενο σε ένα pad χρησιμοποιώντας τον \"μαρκαδόρο\" από το μενού μορφoποίησης."; - out.tips.driveUpload = "Οι εγγεγραμένοι χρήστες μπορούν να ανεβάσουν κρυπτογραφημένα αρχεία σύροντάς τα και πετώντας τα στο CryptDrive τους."; - out.tips.filenames = "Μπορείτε να μετονομάσετε αρχεία στο CryptDrive σας. Το όνομα που θα δώσετε είναι μόνο για εσάς."; - out.tips.drive = "Οι συνδεδεμένοι χρήστες μπορούν να οργανώσουν τα αρχεία τους στο CryptDrive τους, τα οποία είναι προσβάσιμα από το εικονίδιο CryptPad που είναι πάνω αριστερά σε όλα τα pads."; - out.tips.profile = "Οι εγγεγραμένοι χρήστες μπορούν να δημιουργήσουν ένα προφίλ από το μενού χρήστη πάνω δεξιά."; - out.tips.avatars = "Μπορείτε να ανεβάσετε ένα άβαταρ στο προφίλ σας. Θα το βλέπουν οι άλλοι όταν συνεργάζεστε σε ένα pad."; - out.tips.tags = "Βάλτε ετικέτες στα pads σας και ψάξτε με # στο CryptDrive σας για να τα βρείτε"; - - out.feedback_about = "Εάν το διαβάζετε αυτό, πιθανότατα ήσασταν περίεργοι για ποιο λόγο το CryptPad ζητά ιστοσελίδες όταν κάνετε συγκεκριμένες ενέργειες"; - out.feedback_privacy = "Ενδιαφερόμαστε για την ιδιωτικότητά σας και ταυτόχρονα θέλουμε το CryptPad να είναι πολύ εύκολο στην χρήση. Χρησιμοποιούμε αυτό το αρχείο για να καταλάβουμε ποια χαρακτηριστικά του περιβάλλοντος διάδρασης ενδιαφέρουν τους χρήστες μας, με το να το ζητήσουμε σε συνδυασμό με μια παράμετρο η οποία μας δείχνει συγκεκριμένα ποια ενέργεια έγινε."; - out.feedback_optout = "Εάν θα θέλατε να απέχετε, επισκεφθείτε τη σελίδα ρυθμίσεων του λογαριασμού σας, όπου θα βρείτε ένα κουτί στο οποίο μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε την αναπληροφόρηση"; - - return out; -}); diff --git a/www/common/translations/old/messages.es.js b/www/common/translations/old/messages.es.js deleted file mode 100644 index 74f983e20..000000000 --- a/www/common/translations/old/messages.es.js +++ /dev/null @@ -1,583 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - out._languageName = 'Español'; - - out.main_title = "Cryptpad: Zero Knowledge, Editor Colaborativo en Tiempo Real"; - out.main_slogan = "La unidad es la fuerza - la colaboración es la clave"; - - out.type = {}; - out.type.pad = 'Pad'; - out.type.code = 'Código'; - out.type.poll = 'Encuesta'; - out.type.slide = 'Presentación'; - out.type.whiteboard = 'Pizarra'; - out.type.contacts = 'Contactos'; - - out.disconnected = "Desconectado"; - out.synchronizing = "Sincronización"; - out.reconnecting = "Reconectando..."; - out.lag = "Retraso"; - out.readonly = 'Sólo lectura'; - out.anonymous = 'Anónimo'; - out.yourself = "Tú mismo"; - out.anonymousUsers = "usuarios anónimos"; - out.anonymousUser = "usuario anónimo"; - out.users = "Usuarios"; - out.and = "y"; - out.viewer = "espectador"; - out.viewers = "espectadores"; - out.editor = "editor"; - out.editors = "editores"; - - out.greenLight = "Todo funciona bien"; - out.orangeLight = "La conexión es lenta y podría afectar la experiencia"; - out.redLight = "Has sido desconectado de la sesión"; - - out.importButtonTitle = 'Importar un documento de tus archivos locales'; - - out.exportButtonTitle = 'Exportar este documento a un archivo local'; - out.exportPrompt = '¿Cómo te gustaría llamar a este archivo?'; - - out.changeNamePrompt = 'Cambiar tu nombre (dejar vacío para ser anónimo): '; - - out.clickToEdit = "Haz clic para cambiar"; - - out.forgetButtonTitle = 'Eliminar este documento de la lista en la pagina de inicio'; - out.forgetPrompt = 'Pulsar OK eliminará este documento del almacenamiento local (localStorage), ¿estás seguro?'; - - out.shareButton = 'Compartir'; - out.shareSuccess = 'URL copiada al portapapeles'; - - out.presentButtonTitle = "Entrar en el modo presentación"; - - out.backgroundButtonTitle = 'Cambiar el color de fondo en el modo presentación'; - out.colorButtonTitle = 'Cambiar el color de texto en el modo presentación'; - - out.editShare = "URL de edición compartida"; - out.editShareTitle = "Copiar la URL de edición al portapapeles"; - out.viewShare = "Compartir URL de sólo lectura"; - out.viewShareTitle = "Copiar la URL de sólo lectura al portapapeles"; - out.viewOpen = "Ver en pestaña nueva"; - out.viewOpenTitle = "Abrir el documento en sólo lectura en una pestaña nueva"; - - out.notifyJoined = "{0} se ha unido a la sesión de colaboración"; - out.notifyRenamed = "{0} ahora se conoce como {1}"; - out.notifyLeft = "{0} ha dejado la sesión de colaboración"; - - out.tryIt = '¡Pruébalo!'; - - out.okButton = 'OK (Enter)'; - out.cancelButton = 'Cancelar (Esc)'; - - // Polls - - out.poll_title = "Selector de fecha Zero Knowledge"; - out.poll_subtitle = "Agenda en tiempo real Zero Knowledge"; - - out.poll_p_save = "Tus configuraciones se actualizan instantáneamente, no es necesario guardar cambios."; - out.poll_p_encryption = "Todos los datos entrados son cifrados, sólo las personas que poseen el enlace tienen acceso. Incluso el servidor no puede ver el contenido."; - - out.wizardLog = "Presiona el botón en la parte superior izquierda para volver a la encuesta"; - out.wizardTitle = "Utiliza el asistente para crear tu encuesta"; - out.wizardConfirm = "¿Estás realmente seguro de agregar estas opciones a tu encuesta?"; - - out.poll_closeWizardButton = "Cerrar el asistente"; - out.poll_closeWizardButtonTitle = "Cerrar el asistente"; - out.poll_wizardComputeButton = "Generar opciones"; - out.poll_wizardClearButton = "Limpiar tabla"; - out.poll_wizardDescription = "Crear opciones automáticamente ingresando cualquier cantidad de fechas y horas"; - out.poll_wizardAddDateButton = "+ Fechas"; - out.poll_wizardAddTimeButton = "+ Horas"; - - out.poll_optionPlaceholder = "Opción"; - out.poll_userPlaceholder = "Tu nombre"; - out.poll_removeOption = "¿Estás seguro de que quieres eliminar esta opción?"; - out.poll_removeUser = "¿Estás seguro de que quieres eliminar este usuario?"; - - out.poll_titleHint = "Título"; - out.poll_descriptionHint = "Descripción"; - - // index.html - - out.main_p2 = 'Este proyecto utiliza el editor de texto visual CKEditor, CodeMirror, y el motor en tiempo real ChainPad.'; - out.main_howitworks = '¿Cómo funciona?'; - out.main_howitworks_p1 = "CryptPad utiliza una variante del algoritmo de transformación operacional (página en inglés) que es capaz de encontrar un consenso distribuido usando un Blockchain Nakamoto (página en inglés), popularizado por Bitcoin. De esta manera el algoritmo puede evitar la necesidad de un servidor central para resolver conflictos de edición de la transformación operacional y sin necesidad de resolver conflictos, el servidor puede mantenerse inconsciente del contenido que se está editando en el pad."; - out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes enviarnos un tweet, abrir un issue en GitHub. saludarnos en nuestro canal Matrix o en IRC (#cryptpad on irc.freenode.net), o envianos un email.'; - - out.button_newpad = 'Crear nuevo pad de texto enriquecido'; - out.button_newcode = 'Crear nuevo pad de código'; - out.button_newpoll = 'Crear nueva encuesta'; - out.button_newslide = 'Crear nueva presentación'; - - // privacy.html - - out.policy_title = 'Política de privacidad Cryptpad'; - out.policy_whatweknow = 'Qué sabemos sobre tí'; - out.policy_whatweknow_p1 = 'Como cualquier aplicación que está en la red, Cryptpad tiene acceso a los metadatos expuestos por el protocolo HTTP. Esto incluye tu dirección IP, y otros headers HTTP que pueden ser utilizados para identificar a tu navegador propio. Puedes ver la información que comparte tu navegador visitando WhatIsMyBrowser.com (página en inglés).'; - out.policy_whatweknow_p2 = 'Nosotros usamos Piwik, una plataforma de analítica de datos abierta, para conocer mejor a nuestros usuarios. Piwik nos dice como encontraste Cryptpad, en entrada manual, por un motor de búsqueda, or por referal de otra página como Reddit o Twitter. También aprendemos cuándo visitas, qué páginas ves en nuestra web, y cuánto tiempo te quedas en cada una.'; - out.policy_howweuse = 'Cómo usamos lo que aprendemos'; - out.policy_howweuse_p1 = 'Usamos esta información para tomar mejores decisiones para promocionar Cryptpad, para evaluar cuáles de nuestros esfuerzos han sido exitosos. La información sobre tu ubicación nos permite saber si deberíamos considerar mejor soporte para idiomas diferentes al inglés.'; - out.policy_howweuse_p2 = "La información sobre tu navegador (en escritorio o móvil) nos ayuda a saber qué características que debemos mejorar. Nuestro equipo de desarrollo es pequeño, e intentamos tomar decisiones que beneficien a la experiencia de la mayoría de nuestros usuarios."; - out.policy_whatwetell = 'Lo que decimos a otros sobre tí'; - out.policy_whatwetell_p1 = 'No suministramos la información que recolectamos a terceros a menos de estar legalmente obligados a hacerlo.'; - out.policy_links = 'Enlaces a otras páginas'; - out.policy_links_p1 = 'Esta web contiene enlaces a otros sitios, incluyendo algunos producidos por otras organizaciones. No somos responsables del tratamiento de la privacidad de los datos ni el contenido de páginas externas. Como regla general, los enlaces externos se abren en una nueva pestaña del navegador, para clarificar que estás abandonando a Cryptpad.fr.'; - out.policy_ads = 'Anuncios'; - out.policy_ads_p1 = 'Nosotros no mostramos anuncios, pero podemos poner enlaces a las organizaciones que financian nuestro trabajo de investigación.'; - out.policy_choices = 'Lo que puedes hacer'; - out.policy_choices_open = 'Nuestro código fuente es abierto para que siempre tengas la opción de desplegar tu propia instancia de Cryptpad.'; - out.policy_choices_vpn = 'Si deseas utilizar nuestra instancia, pero no deseas exponer tu dirección IP, puedes protegerla utilizando el navegador Tor, o un VPN.'; - out.policy_choices_ads = 'Si deseas no ser seguido por nuestra plataforma, puedes utilizar herramientas como Privacy Badger.'; - - // terms.html - - out.tos_title = "Condiciones de servicio Cryptpad"; - out.tos_legal = "Por favor, no seas malicioso, abusivo o hagas algo ilegal."; - out.tos_availability = "Esperamos que este servicio te parezca útil, pero nuestra disponibilidad o rendimiento no pueden ser garantizados. Por favor, exporta tus datos regularmente."; - out.tos_e2ee = "Los documentos Cryptpad pueden ser leídos o modificados por cualquiera que pueda adivinar o que pueda tener el enlace. Recomendamos que utilices mensajes cifrados de punto a punto (e2ee) para compartir URLs, no asumimos ninguna responsabilidad en el evento de alguna fuga."; - out.tos_logs = "Los metadatos entregados por el navegador al servidor pueden ser almacenados para la mantenencia del servicio."; - out.tos_3rdparties = "No proveemos datos individualizados a terceros a menos de ser obligados por la ley."; - - // BottomBar.html - - out.bottom_france = 'Hecho con amor en Francia'; - out.bottom_support = 'Un XWiki SASProyecto Labs con el soporte de OpenPaaS-ng'; - - // Header.html - - out.header_france = 'Con amor de Francia por XWiki SAS'; - out.header_support = ' OpenPaaS-ng'; - out.header_logoTitle = 'Ir a la página principal'; - - out.websocketError = "Error al conectarse al servidor WebSocket"; - out.typeError = "Este documento no es compatible con la aplicación seleccionada"; - out.onLogout = "Tu sesión está cerrada, {0}haz clic aquí{1} para iniciar sesión
    o pulsa Escape para acceder al documento en modo sólo lectura."; - out.loading = "Cargando..."; - out.error = "Error"; - out.language = "Idioma"; - out.user_rename = "Cambiar nombre"; - out.user_displayName = "Nombre visible"; - out.user_accountName = "Nombre de cuenta"; - out.newButton = "Nuevo"; - out.newButtonTitle = "Nuevo documento"; - out.cancel = "Cancelar"; - out.poll_publish_button = "Publicar"; - out.poll_admin_button = "Administrar"; - out.poll_create_user = "Añadir usuario"; - out.poll_create_option = "Añadir opción"; - out.poll_commit = "Validar"; - out.fm_rootName = "Documentos"; - out.fm_trashName = "Papelera"; - out.fm_unsortedName = "Sin organizar"; - out.fm_filesDataName = "Todos los archivos"; - out.fm_templateName = "Plantilla"; - out.fm_newButton = "Nuevo"; - out.fm_newFolder = "Nueva carpeta"; - out.fm_folder = "Carpeta"; - out.fm_folderName = "Nombre de carpeta"; - out.fm_numberOfFolders = "# de carpetas"; - out.fm_numberOfFiles = "# de archivos"; - out.fm_fileName = "Nombre"; - out.fm_title = "Título"; - out.fm_lastAccess = "Último acceso"; - out.fm_creation = "Creación"; - out.fm_forbidden = "Acción prohibida"; - out.fm_originalPath = "Enlace original"; - out.fm_noname = "Documento sin título"; - out.fm_emptyTrashDialog = "¿Seguro que quieres vaciar la papelera?"; - out.fm_removeSeveralPermanentlyDialog = "¿Seguro que quieres eliminar estos {0} elementos de la papelera para siempre?"; - out.fm_removePermanentlyDialog = "¿Seguro que quieres eliminar este elemento para siempre?"; - out.fm_removeSeveralDialog = "¿Seguro que quieres mover estos {0} elementos a la papelera?"; - out.fm_removeDialog = "¿Seguro que quieres mover {0} a la papelera?"; - out.fm_restoreDialog = "¿Seguro que quieres recuperar {0}?"; - out.fm_unknownFolderError = "La carpeta seleccionada ya no existe. Abriendo la carpeta anterior..."; - out.fm_contextMenuError = "No se pudo abrir el menú para este elemento. Si persiste el problema, recarga la página."; - out.fm_selectError = "No se pudo abrir el elemento. Si persiste el problema, recarga la página."; - out.fm_info_root = "Crea carpetas aquí para organizar tus documentos."; - out.fm_info_unsorted = "Contiene todos los documentos que has visitado que no están organizados en \"Documentos\" o movidos a la \"Papelera\"."; - out.fm_info_template = "Contiene todas las plantillas que puedes volver a usar para crear nuevos documentos."; - out.fm_info_allFiles = "Contiene todos los archivos de \"Documentos\", \"Sin organizar\" y \"Papelera\". No puedes mover o eliminar archivos aquí."; - out.fm_alert_backupUrl = "Enlace de copia de seguridad para este drive. Te recomendamos encarecidamente que lo guardes secreto.
    Lo puedes usar para recuperar todos tus archivos en el caso que la memoria de tu navegador se borre.
    Cualquiera con este enlace puede editar o eliminar todos los archivos en el explorador.
    "; - out.fm_backup_title = "Enlace de copia de seguridad"; - out.fm_nameFile = "¿Cómo quieres nombrar este archivo?"; - out.fc_newfolder = "Nueva carpeta"; - out.fc_rename = "Cambiar nombre"; - out.fc_open = "Abrir"; - out.fc_open_ro = "Abrir (sólo lectura)"; - out.fc_delete = "Eliminar"; - out.fc_restore = "Recuperar"; - out.fc_remove = "Eliminar para siempre"; - out.fc_empty = "Vaciar la papelera"; - out.fc_prop = "Propiedades"; - out.fo_moveUnsortedError = "No puedes mover una carpeta en la lista de documentos no organizados"; - out.fo_existingNameError = "Nombre ya utilizado en esta carpeta. Por favor elige otro."; - out.fo_moveFolderToChildError = "No puedes mover una carpeta en una de sus subcarpetas"; - out.fo_unableToRestore = "No se pudo restaurar este archivo a la localización de origen. Puedes intentar moverlo a otra localización."; - out.fo_unavailableName = "Un archivo o carpeta ya tiene este nombre. Cámbialo y vuelve a intentarlo."; - out.login_login = "Iniciar sesión"; - out.login_makeAPad = "Crear documento anónimo"; - out.login_nologin = "Ver documentos locales"; - out.login_register = "Registrarse"; - out.logoutButton = "Cerrar sesión"; - out.settingsButton = "Preferencias"; - out.login_username = "Nombre de usuario"; - out.login_password = "Contraseña"; - out.login_confirm = "Confirmar contraseña"; - out.login_remember = "Recuérdame"; - out.login_hashing = "Generando hash de tu contraseña, esto puede tardar un poco."; - out.login_hello = "Hola {0},"; - out.login_helloNoName = "Hola,"; - out.login_accessDrive = "Acceder a tu drive"; - out.login_orNoLogin = "o"; - out.login_noSuchUser = "Credenciales inválidos. Inténtalo de nuevo, o regístrate"; - out.login_invalUser = "Nombre de usuario requerido"; - out.login_invalPass = "Contraseña requerida"; - out.login_unhandledError = "Ha ocurrido un error inesperado :("; - out.register_importRecent = "Importe el historial de tu sesión anónima"; - - out.register_acceptTerms = "Acepto los términos de servicio"; - out.register_passwordsDontMatch = "Las contraseñas no corresponden"; - out.register_mustAcceptTerms = "Tienes que aceptar los términos de servicio"; - out.register_mustRememberPass = "No podemos reiniciar tu contraseña si la olvidas. ¡Es muy importante que la recuerdes! Marca la casilla para confirmarlo."; - out.register_header = "Bienvenido a CryptPad"; - out.register_explanation = ["

    Vamos a ver algunas cosas antes

    ", "
      ", "
    • Tu contraseña es tu clave secreta que cifra todos tus documentos. Si la pierdes no podremos recuperar tus datos.
    • ", "
    • Puedes importar documentos que has visto recientemente en tu navegador para tenerlos en tu cuenta.
    • ", "
    • Si estás usando un ordenador compartido, tienes que cerrar sesión cuando terminas, cerrar la pestaña no es suficiente.
    • ", "
    "].join(''); - out.settings_title = "Preferencias"; - out.settings_save = "Guardar"; - out.settings_backupTitle = "Copia de seguridad"; - out.settings_backup = "Copia de seguridad"; - out.settings_restore = "Recuperar datos"; - out.settings_reset = "Quita todos los documentos de tu CryptDrive"; - out.settings_resetPrompt = "Esta acción eliminará todos tus documentos.
    ¿Seguro que quieres continuar?
    Introduce “I love CryptPad” para confirmar."; - out.settings_resetDone = "¡Tu drive ahora está vacio!"; - out.settings_resetTips = "Consejos en CryptDrive"; - out.settings_resetTipsButton = "Restaurar consejos"; - out.settings_resetTipsDone = "Todos los consejos ahora están visibles"; - out.main_info = "

    Colabora con Confianza


    Cultiva ideas juntos con documentos compartidos con tecnología Zero Knowledge que protege tu privacidad."; - out.main_zeroKnowledge = "Zero Knowledge"; - out.main_zeroKnowledge_p = "No tienes que confiar en que no veremos tus documentos, con la tecnología Zero Knowledge de CryptPad no podemos. Aprende más sobre cómo protegemos tu Privacidad y Seguridad."; - out.main_writeItDown = "Escríbelo"; - out.main_writeItDown_p = "Los mejores proyectos vienen de las más pequeñas ideas. Escribe tus momentos de inspiración e ideas inesperadas porque nunca sabrás cuál será tu próximo descubrimiento."; - out.main_share = "Comparte el enlace, comparte el pad"; - out.main_share_p = "Cultiva ideas juntos: ten reuniones eficaces, colabora en listas y haz presentaciones rápidas en todos tus dispositivos."; - out.main_organize = "Organízate"; - out.main_organize_p = "Con CryptPad Drive, mantén tu atención en lo más importante. Las carpetas te permiten organizar tus proyectos y tener una visión global de dónde van las cosas."; - out.main_richText = "Editor de Texto Enriquecido"; - out.main_richText_p = "Colabora en texto enriquecido con nuestro editor Zero Knowledge en tiempo real CkEditor."; - out.main_code = "Editor de código"; - out.main_code_p = "Edita código fuente para tus programas con nuestro editor Zero Knowledge en tiempo real CodeMirror."; - out.main_slide = "Editor de presentación"; - out.main_slide_p = "Crea presentaciones utilizando Markdown, y visualízalos en tu navegador"; - out.main_poll = "Encuestas"; - out.main_poll_p = "Planifica tus reuniones y eventos, o vota para la mejor solución a un problema."; - out.main_drive = "CryptDrive"; - out.footer_applications = "Aplicaciones"; - out.footer_contact = "Contacto"; - out.footer_aboutUs = "Acerca de nosotros"; - out.about = "Acerca de nosotros"; - out.privacy = "Privacidad"; - out.contact = "Contacto"; - out.terms = "Términos de Servicio"; - - // 1.1.0 - Bunyip - out.movedToTrash = "Este pad fue movido a la papelera.
    Acceder a mi Drive"; - out.fm_newFile = "Nuevo pad"; - out.fm_type = "Tipo"; - out.fm_categoryError = "No se pudo abrir la categoría seleccionada, mostrando la raíz."; - out.settings_userFeedbackHint1 = "CryptPad suministra informaciones muy básicas al servidor, para ayudarnos a mejorar vuestra experiencia."; - out.settings_userFeedbackHint2 = "El contenido de tu pad nunca será compartido con el servidor."; - out.settings_userFeedback = "Activar feedback"; - out.settings_anonymous = "No has iniciado sesión. Tus ajustes se aplicarán sólo a este navegador."; - out.blog = "Blog"; - - out.initialState = [ - '

    ', - 'Esto es CryptPad, el editor colaborativo en tiempo real Zero Knowledge. Todo está guardado cuando escribes.', - '
    ', - 'Comparte el enlace a este pad para editar con amigos o utiliza el botón para obtener un enlace sólo lectura que permite leer pero no escribir.', - '

    ', - ].join(''); - - out.codeInitialState = "/*\n Esto es CryptPad, el editor colaborativo en tiempo real zero knowledge.\n Lo que escribes aquí está cifrado de manera que sólo las personas con el enlace pueden acceder a ello.\n Incluso el servidor no puede ver lo que escribes.\n Lo que ves aquí, lo que escuchas aquí, cuando sales, se queda aquí\n*/"; - out.slideInitialState = "# CryptSlide\n1. Escribe tu contenido en Markdown\n - Puedes aprender más sobre Markdown [aquí](http://www.markdowntutorial.com/)\n2. Separa tus diapositivas con ---\n3. Haz clic en \"Presentar\" para ver el resultado - Tus diapositivas se actualizan en tiempo real"; - out.driveReadmeTitle = "¿Qué es CryptPad?"; - out.readme_welcome = "¡Bienvenido a CryptPad!"; - out.readme_p1 = "Bienvenido a CryptPad, aquí podrás anotar cosas solo o con otra gente."; - out.readme_p2 = "Este pad es una guía rápida para aprender a usar a CryptPad para tomar notas, organizarlas y trabajar con más personas."; - out.readme_cat1 = "Conoce tu CryptDrive"; - out.readme_cat1_l1 = "Crea un pad: En CryptDrive, haz clic en {0} y luego en {1} para crear un pad."; - out.readme_cat1_l2 = "Abrir pads desde CryptDrive: haz doble clic en un icono para abrirlo."; - out.readme_cat1_l3 = "Organiza tus pads: Cuando has iniciado sesión, cada pad al que accedes se quedará en tu drive en {0}."; - out.readme_cat1_l3_l1 = "Puedes hacer clic y arrastrar archivos en carpetas desde {0}, y crear nuevas carpetas."; - out.readme_cat1_l3_l2 = "Recuerda hacer clic derecho en los iconos, ya que suele haber menús adicionales."; - out.readme_cat1_l4 = "Elimina tus viejos pads: Haz clic y arrastra tus pads en la {0} de la misma manera que lo harías con carpetas."; - out.readme_cat2 = "Haz pads como un pro"; - out.edit = "editar"; - out.view = "ver"; - out.readme_cat2_l1 = "El botón {0} en tu pad te permite dar acceso a colaboradores para {1} o {2} el pad."; - out.readme_cat2_l2 = "Cambia el título del pad haciendo clic en el lápiz"; - out.readme_cat3 = "Descubre las apps CryptPad"; - out.readme_cat3_l1 = "Con el editor de código CryptPad, puedes colaborar en código fuente, como por ejemplo JavaScript y Markdown"; - out.readme_cat3_l2 = "Con los slides CryptPad, puedes hacer presentaciones rápidas con Markdown"; - out.readme_cat3_l3 = "Con CryptPoll puedes hacer una encuesta rápida, especialmente útil para programar un horario que conviene a todo el mundo"; - - // 1.2.0 - Chupacabra - - out.settings_resetError = "Verificación no válida. Tu CryptDrive no fue cambiado."; - out.saved = "Guardado"; - out.printButton = "Imprimir"; - out.printButtonTitle = "Imprimir tu presentación o exportar a PDF"; - out.printOptions = "Opciones de impresión"; - out.printSlideNumber = "Mostrar el número de diapositiva"; - out.printDate = "Mostrar la fecha"; - out.printTitle = "Mostrar el título"; - out.printCSS = "CSS personalizado:"; - out.editOpen = "Abrir enlaces de edición en pestaña nueva"; - out.editOpenTitle = "Abrir en modo edición en pestaña nueva"; - out.settings_importTitle = "Importar pads recientes locales en CryptDrive"; - out.settings_import = "Importar"; - out.settings_importConfirm = "¿Seguro que quieres importar tus pads recientes a tu cuenta CryptDrive?"; - out.settings_importDone = "Importación terminada"; - - out.tips = {}; - out.tips.lag = "El icono verde en la parte superior derecha muestra la calidad de tu connexión a CryptPad."; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i`, y `ctrl+u` son accesos rápidos para negrita, itálica y subrayado."; - out.tips.indent = "Cuando editas listas, puedes usar tab o shift+tab para incrementar o decrementar la sangría."; - out.tips.title = "Puedes cambiar el título de tus pads en la parte superior de la pantalla."; - out.tips.store = "Cada vez que visitas un pad con una sesión iniciada se guardará en tu CryptDrive."; - out.tips.marker = "Puedes resaltar texto en un pad utilizando el \"marcador\" en el menú de estílo."; - out.tips.driveUpload = "Los usuarios registrados pueden subir archivos cifrados arrastrándolos hacia CryptDrive."; - - out.feedback_about = "Si estas leyendo esto, quizás sientas curiosidad por saber por qué CryptPad solicita páginas cuando realizas algunas acciones"; - out.feedback_privacy = "Nos importa tu privacidad, y al mismo tiempo queremos que CryptPad sea muy fácil de usar. Utilizamos este archivo para conocer las funcionalidades que importan a nuestros usuarios, pidiéndolo con un parametro que nos dice qué acción fue realizada."; - out.feedback_optout = "Si quieres darte de baja, visita tus preferencias, donde podrás activar o desactivar el feedback"; - - out.fm_searchName = "Buscar"; - out.fm_searchPlaceholder = "Buscar..."; - out.fm_newButtonTitle = "Crear un nuevo pad o carpeta"; - out.fm_openParent = "Mostrar en carpeta"; - out.register_writtenPassword = "He escrito mi usuario y contraseña, continuar"; - out.register_cancel = "Volver"; - out.register_warning = "Zero Knowledge significa que no podemos recuperar tus datos si pierdes tu contraseña."; - out.register_alreadyRegistered = "Este usuario ya existe, ¿iniciar sesión?"; - - // 1.4.0 - Easter Bunny - - out.button_newwhiteboard = "Nueva Pizarra"; - out.wrongApp = "No se pudo mostrar el contenido de la sesión en tiempo real en tu navegador. Por favor, actualiza la página."; - out.synced = "Todo está guardado."; - out.saveTemplateButton = "Guardar como plantilla"; - out.saveTemplatePrompt = "Elige un título para la plantilla"; - out.templateSaved = "¡Plantilla guardada!"; - out.selectTemplate = "Elige una plantilla o pulsa ESC"; - out.slideOptionsTitle = "Personaliza tus diapositivas"; - out.slideOptionsButton = "Guardar (enter)"; - out.canvas_clear = "Limpiar"; - out.canvas_delete = "Borrar selección"; - out.canvas_disable = "No permitir dibujos"; - out.canvas_enable = "Permitir dibujos"; - out.canvas_width = "Talla"; - out.canvas_opacity = "Opacidad"; - out.settings_publicSigningKey = "Clave de Firma Pública"; - out.settings_usage = "Utilización"; - out.settings_usageTitle = "Ve el uso total de tus pads en MB"; - out.settings_pinningNotAvailable = "Los pads pegados sólo están disponibles para usuarios registrados."; - out.settings_pinningError = "Algo salió mal"; - out.settings_usageAmount = "Tus pads pegados utilizan {0}MB"; - out.historyButton = "Mostrar el historial del documento"; - out.history_next = "Ir a la versión anterior"; - out.history_prev = "Ir a la versión posterior"; - out.history_goTo = "Ir a la versión seleccionada"; - out.history_close = "Volver"; - out.history_closeTitle = "Cerrar el historial"; - out.history_restore = "Restaurar"; - out.history_restoreTitle = "Restaurar la versión seleccionada del documento"; - out.history_restorePrompt = "¿Estás seguro de que quieres cambiar la versión actual del documento por ésta?"; - out.history_restoreDone = "Documento restaurado"; - out.fc_sizeInKilobytes = "Tamaño en Kilobytes"; - - // 1.5.0/1.6.0 - Fenrir/Grootslang - - out.deleted = "El pad fue borrado de tu CryptDrive"; - out.upgrade = "Mejorar"; - out.upgradeTitle = "Mejora tu cuenta para obtener más espacio"; - out.upgradeAccount = "Mejorar cuenta"; - - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.pinLimitReached = "Has llegado al límite de espacio"; - out.pinLimitNotPinned = "Has llegado al límite de espacio.
    Este pad no estará presente en tu CryptDrive."; - out.pinLimitDrive = "Has llegado al límite de espacio.
    No puedes crear nuevos pads."; - out.printTransition = "Activar transiciones"; - out.history_version = "Versión: "; - out.settings_logoutEverywhereTitle = "Cerrar sesión en todas partes"; - out.settings_logoutEverywhere = "Cerrar todas las otras sesiones"; - out.settings_logoutEverywhereConfirm = "¿Estás seguro? Tendrás que volver a iniciar sesión con todos tus dispositivos."; - out.upload_serverError = "Error: no se pudo subir tu archivo en este momento."; - out.upload_uploadPending = "Ya tienes una subida en progreso. ¿Cancelar y subir el nuevo archivo?"; - out.upload_success = "Tu archivo ({0}) ha sido subido con éxito y fue añadido a tu drive."; - - // 1.7.0 - Hodag - out.comingSoon = "Próximamente..."; - out.newVersion = ["CryptPad ha sido actualizado!", - "Puedes ver lo que ha cambiado aquí (en inglés):", - "Notas de versión para CryptPad {0}"].join("
    "); - out.pinLimitReachedAlertNoAccounts = "Has llegado a tu límite de espacio"; - out.previewButtonTitle = "Mostrar/esconder la vista previa Markdown"; - out.fm_info_anonymous = "No estás conectado, así que estos pads pueden ser borrados (¿por qué?). Regístrate o Inicia sesión para asegurarlos."; - out.fm_alert_anonymous = "Hola, estás usando CryptPad anónimamente. Está bien, pero tus pads pueden ser borrados después de un périodo de inactividad. Hemos desactivado funciones avanzadas de CryptDrive para usuarios anónimos porque queremos dejar claro que no es un lugar seguro para almacenar cosas. Puedes leer este articulo (en inglés) acerca de por qué hacemos esto y por qué deberías Registrarte e Iniciar sesión."; - out.fm_error_cantPin = "Error del servidor. Por favor, recarga la página e inténtalo de nuevo."; - out.upload_notEnoughSpace = "No tienes suficiente espacio para este archivo en tu CryptDrive"; - out.upload_tooLarge = "Este archivo supera el límite de carga."; - out.upload_choose = "Escoge un archivo"; - out.upload_pending = "Esperando"; - out.upload_cancelled = "Cancelado"; - out.upload_name = "Nombre"; - out.upload_size = "Tamaño"; - out.upload_progress = "Progreso"; - out.download_button = "Descifrar y descargar"; - out.warn_notPinned = "Este pad no está en ningún CryptDrive. Expirará después de 3 meses. Acerca de..."; - - out.poll_remove = "Quitar"; - out.poll_edit = "Editar"; - out.poll_locked = "Cerrado"; - out.poll_unlocked = "Abierto"; - - out.poll_show_help_button = "Mostrar ayuda"; - out.poll_hide_help_button = "Esconder ayuda"; - - // 1.8.0 - Idopogo - - out.common_connectionLost = "Conexión perdida
    El documento está ahora en modo sólo lectura hasta que la conexión vuelva."; - out.updated_0_common_connectionLost = out.common_connectionLost; - out.supportCryptpad = "Ayudar a CryptPad"; - out.pinLimitReachedAlert = ["Has llegado a tu límite de espacio. Los nuevos pads no serán guardados en tu CryptDrive.", - "Puedes eliminar pads de tu CryptDrive o suscribirte a una oferta premium para obtener más espacio."].join("
    "); - out.updated_0_pinLimitReachedAlert = out.pinLimitReachedAlert; - out.fm_info_trash = "Vacía tu papelera para liberar espacio en tu CryptDrive."; - out.updated_0_fm_info_trash = out.fm_info_trash; - - out.fs_migration = "Tu CryptDrive fue actualizado a una nueva versión.
    Por favor, recarga la página."; - out.login_notRegistered = "¿No estás registrado?"; - out.upload_mustLogin = "Tienes que estar conectado para subir archivos"; - - out.uploadButton = "Subir"; - out.uploadButtonTitle = "Subir un archivo a la carpeta"; - out.filePickerButton = "Incrustar un archivo"; - out.filePicker_close = "Cerrar"; - out.filePicker_description = "Elige un archivo de tu CryptDrive para incrustarlo o sube uno nuevo"; - out.filePicker_filter = "Filtrar por nombre"; - out.or = "o"; - out.languageButton = "Lenguaje"; - out.languageButtonTitle = "Elige el lenguaje para resaltado de sintaxis"; - out.themeButton = "Tema"; - out.themeButtonTitle = "Selecciona el tema de color para los editores de código y presentación"; - out.canvas_opacityLabel = "Opacidad: {0}"; - out.canvas_widthLabel = "Talla: {0}"; - - // 1.10.0 - Kraken - - out.moreActions = "Más acciones"; - out.importButton = "Importar"; - out.exportButton = "Exportar"; - out.saveTitle = "Guardar título (enter)"; - out.forgetButton = "Eliminar"; - out.printText = "Imprimir"; - out.slideOptionsText = "Opciones"; - out.historyText = "Historial"; - out.openLinkInNewTab = "Abrir enlace en pestaña nueva"; - out.profileButton = "Perfil"; - out.profile_urlPlaceholder = "URL"; - out.profile_namePlaceholder = "Nombre mostrado en su perfil"; - out.profile_avatar = "Imagen"; - out.profile_upload = "Subir una imagen"; - out.profile_error = "Error al crear tu perfil: {0}"; - out.profile_register = "Tienes que registrarte para crear un perfil"; - out.profile_create = "Crear perfil"; - out.profile_description = "Descripción"; - out.profile_fieldSaved = "Guardado: {0}"; - out.download_mt_button = "Descargar"; - out.updated_0_header_logoTitle = "Volver a tu CryptDrive"; - out.header_logoTitle = out.updated_0_header_logoTitle; - - // 1.11.0 - Lutin - - out.realtime_unrecoverableError = "El motor de tiempo real ha encontrado un error. Haga clic en OK para recargar la página."; - out.typing = "Escribiendo"; - out.profile_inviteButton = "Conectar"; - out.profile_inviteButtonTitle = "Crear un enlace de invitación para este usuario."; - out.profile_inviteExplanation = "Hacer clic en OK creará un enlace de mensaje seguro que sólo {0} podrá ver.

    El enlace será copiado a tu portapapeles y puede ser compartido públicamente."; - out.profile_viewMyProfile = "Ver mi perfil"; - out.userlist_addAsFriendTitle = 'Agregar "{0}" como contacto'; - out.userlist_thisIsYou = 'Tú mismo ("{0}")'; - out.contacts_title = "Contactos"; - out.contacts_addError = "Error al agregar este contacto a la lista"; - out.contacts_added = "Invitación aceptada"; - out.contacts_rejected = "Invitación denegada"; - out.contacts_request = "{0} quiere agregarte como contacto. ¿Aceptar?"; - out.contacts_send = "Enviar"; - out.contacts_remove = "Eliminar este contacto"; - out.contacts_confirmRemove = "¿Estás seguro de que quieres eliminar {0} de tus contactos?"; - out.contacts_info1 = "Estos son tus contactos. Desde aquí, puedes:"; - out.contacts_info2 = "Hacer clic en el icono de tu contacto para chatear"; - out.contacts_info3 = "Hacer doble-clic para ver su perfil"; - out.contacts_info4 = "Cualquier participante puede eliminar definitivamente el historial de chat"; - out.settings_cat_account = "Cuenta"; - out.settings_cat_drive = "CryptDrive"; - out.settings_backupCategory = "Copia de seguridad"; - out.settings_resetNewTitle = "Limpiar CryptDrive"; - out.settings_resetButton = "Eliminar"; - out.settings_resetTipsAction = "Reiniciar"; - out.settings_userFeedbackTitle = "Feedback"; - out.settings_logoutEverywhereButton = "Cerrar sesión"; - out.upload_title = "Subir archivo"; - - // 1.12.0 - Minotaur - out.userlist_pending = "Pendiente..."; - out.contacts_typeHere = "Escribe un mensaje aquí..."; - out.contacts_removeHistoryTitle = "Borrar el historial de chat"; - out.contacts_confirmRemoveHistory = "¿Estás seguro de que quieres borrar el historial de forma permanente? No se podrán recuparar los datos."; - out.contacts_removeHistoryServerError = "Hubo un error al borrar el historial. Inténtalo de nuevo más tarde."; - out.todo_title = "CryptTodo"; - out.todo_newTodoNamePlaceholder = "Describe tu tarea..."; - out.todo_newTodoNameTitle = "Añadir tarea a la lista"; - out.todo_markAsCompleteTitle = "Marcar esta tarea como completa"; - out.todo_markAsIncompleteTitle = "Marcar esta tarea como incompleta"; - out.todo_removeTaskTitle = "Borrar esta tarea de la lista"; - - // 1.13.0 - Naiad - out.topbar_whatIsCryptpad = "Qué es CryptPad"; - out.header_homeTitle = "Volver a la página de inicio"; - out.userListButton = "Lista de usuarios"; - out.userAccountButton = "Tu cuenta"; - out.canvas_saveToDrive = "Guardar esta imagen como archivo en tu CryptDrive"; - out.canvas_currentBrush = "Pincel actual"; - out.canvas_chooseColor = "Eligir un color"; - out.fm_viewListButton = "Lista"; - out.fm_viewGridButton = "Cuadrícula"; - out.settings_cat_code = "Código"; - out.settings_codeIndentation = "Indentación del editor de código (espacios)"; - out.settings_codeUseTabs = "Utilizar tabulaciones en vez de espacios"; - out.pad_showToolbar = "Mostrar la barra de herramientas"; - out.pad_hideToolbar = "Esconder la barra de herramientas"; - out.main_catch_phrase = "El Cloud Zero Knowledge"; - out.main_richTextPad = "Pad de Texto Enriquecido"; - out.main_codePad = "Pad de Código"; - out.main_slidePad = "Presentación Markdown"; - out.main_pollPad = "Encuesta"; - out.main_whiteboardPad = "Pizarra"; - out.main_localPads = "Pad Locales"; - out.main_yourCryptDrive = "Tu CryptDrive"; - - return out; -}); diff --git a/www/common/translations/old/messages.fr.js b/www/common/translations/old/messages.fr.js deleted file mode 100644 index b444f082f..000000000 --- a/www/common/translations/old/messages.fr.js +++ /dev/null @@ -1,1317 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - out.main_title = "CryptPad : Éditeur collaboratif en temps réel, zero knowledge"; - - out.type = {}; - out.type.pad = 'Texte'; - out.type.code = 'Code'; - out.type.poll = 'Sondage'; - out.type.kanban = 'Kanban'; - out.type.slide = 'Présentation'; - out.type.drive = 'CryptDrive'; - out.type.whiteboard = "Tableau Blanc"; - out.type.file = "Fichier"; - out.type.media = "Média"; - out.type.todo = "Todo"; - out.type.contacts = "Contacts"; - out.type.sheet = 'Tableur (Beta)'; - - out.button_newpad = 'Nouveau document texte'; - out.button_newcode = 'Nouvelle page de code'; - out.button_newpoll = 'Nouveau sondage'; - out.button_newslide = 'Nouvelle présentation'; - out.button_newwhiteboard = 'Nouveau tableau blanc'; - out.button_newkanban = 'Nouveau kanban'; - - out.updated_0_common_connectionLost = "Connexion au serveur perdue
    Vous êtes désormais en mode lecture seule jusqu'au retour de la connexion."; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = 'Impossible de se connecter au serveur WebSocket...'; - out.typeError = "Ce pad n'est pas compatible avec l'application sélectionnée"; - out.onLogout = 'Vous êtes déconnecté de votre compte utilisateur, {0}cliquez ici{1} pour vous authentifier
    ou appuyez sur Échap pour accéder au pad en mode lecture seule.'; - out.wrongApp = "Impossible d'afficher le contenu de ce document temps-réel dans votre navigateur. Vous pouvez essayer de recharger la page."; - out.padNotPinned = 'Ce pad va expirer après 3 mois d\'inactivité, {0}connectez-vous{1} ou {2}enregistrez-vous{3} pour le préserver.'; - out.anonymousStoreDisabled = "L'administrateur de cette instance de CryptPad a désactivé le drive pour les utilisateurs non enregistrés. Vous devez vous connecter pour pouvoir utiliser CryptDrive."; - out.expiredError = "Ce pad a atteint sa date d'expiration est n'est donc plus disponible."; - out.deletedError = 'Ce pad a été supprimé par son propriétaire et n\'est donc plus disponible.'; - out.inactiveError = 'Ce pad a été supprimé en raison de son inactivité. Appuyez sur Échap pour créer un nouveau pad.'; - out.chainpadError = 'Une erreur critique est survenue lors de la mise à jour du contenu. Le pad est désormais en mode lecture seule afin de s\'assurer que vous ne perdiez pas davantage de données.
    ' + - 'Appuyez sur Échap pour voir le pad ou rechargez la page pour pouvoir le modifier à nouveau.'; - out.errorCopy = ' Vous pouvez toujours copier son contenu ailleurs en appuyant sur Échap.
    Dés que vous aurez quitté la page, il sera impossible de le récupérer.'; - out.errorRedirectToHome = 'Appuyez sur Échap pour retourner vers votre CryptDrive.'; - out.newVersionError = "Une nouvelle version de CryptPad est disponible.
    " + - "Rechargez la page pour utiliser la nouvelle version, ou appuyez sur Échap pour accéder au contenu actuel en mode hors-ligne."; - - out.loading = "Chargement..."; - out.error = "Erreur"; - out.saved = "Enregistré"; - out.synced = "Tout est enregistré"; - out.deleted = "Pad supprimé de votre CryptDrive"; - out.deletedFromServer = "Pad supprimé du serveur"; - - out.mustLogin = "Vous devez être enregistré pour avoir accès à cette page."; - out.disabledApp = "Cette application a été désactivée. Pour plus d'information, veuillez contacter l'administrateur de ce CryptPad."; - - out.realtime_unrecoverableError = "Une erreur critique est survenue. Cliquez sur OK pour recharger la page."; - - out.disconnected = 'Déconnecté'; - out.synchronizing = 'Synchronisation'; - out.reconnecting = 'Reconnexion'; - out.typing = "Édition"; - out.initializing = "Initialisation..."; - out.forgotten = 'Déplacé vers la corbeille'; - out.errorState = 'Erreur critique : {0}'; - out.lag = 'Latence'; - out.readonly = 'Lecture seule'; - out.anonymous = "Anonyme"; - out.yourself = "Vous-même"; - out.anonymousUsers = "éditeurs anonymes"; - out.anonymousUser = "éditeur anonyme"; - out.users = "Utilisateurs"; - out.and = "Et"; - out.viewer = "lecteur"; - out.viewers = "lecteurs"; - out.editor = "éditeur"; - out.editors = "éditeurs"; - out.userlist_offline = "Vous êtes actuellement hors-ligne, la liste des utilisateurs n'est pas disponible."; - - out.language = "Langue"; - - out.comingSoon = "Bientôt disponible..."; - - out.newVersion = 'CryptPad a été mis à jour !
    ' + - 'Découvrez les nouveautés de la dernière version :
    '+ - 'Notes de version pour CryptPad {0}'; - - out.upgrade = "Augmenter votre limite"; - out.upgradeTitle = "Améliorer votre compte pour augmenter la limite de stockage"; - - out.upgradeAccount = "Améliorer le compte"; - out.MB = "Mo"; - out.GB = "Go"; - out.KB = "Ko"; - - out.supportCryptpad = "Soutenir CryptPad"; - - out.formattedMB = "{0} Mo"; - out.formattedGB = "{0} Go"; - out.formattedKB = "{0} Ko"; - - out.greenLight = "Tout fonctionne bien"; - out.orangeLight = "Votre connexion est lente, ce qui réduit la qualité de l'éditeur"; - out.redLight = "Vous êtes déconnecté de la session"; - - out.pinLimitReached = "Vous avez atteint votre limite de stockage"; - out.updated_0_pinLimitReachedAlert = "Vous avez atteint votre limite de stockage. Les nouveaux pads ne seront pas enregistrés dans votre CryptDrive.
    " + - 'Vous pouvez soit supprimer des pads de votre CryptDrive, soit vous abonner à une offre premium pour augmenter la limite maximale.'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinLimitReachedAlertNoAccounts = out.pinLimitReached; - out.pinLimitNotPinned = "Vous avez atteint votre limite de stockage.
    "+ - "Ce pad n'est pas enregistré dans votre CryptDrive."; - out.pinLimitDrive = out.pinLimitReached+ ".
    " + - "Vous ne pouvez pas créer de nouveaux pads."; - - out.moreActions = "Autres actions"; - - out.importButton = "Importer"; - out.importButtonTitle = 'Importer un pad depuis un fichier local'; - - out.exportButton = "Exporter"; - out.exportButtonTitle = 'Exporter ce pad vers un fichier local'; - out.exportPrompt = 'Comment souhaitez-vous nommer ce fichier ?'; - - out.changeNamePrompt = 'Changer votre nom (laisser vide pour rester anonyme) : '; - out.user_rename = "Changer le nom affiché"; - out.user_displayName = "Nom affiché"; - out.user_accountName = "Nom d'utilisateur"; - - out.clickToEdit = 'Cliquer pour modifier'; - out.saveTitle = "Enregistrer le titre (Entrée)"; - - out.forgetButton = "Supprimer"; - out.forgetButtonTitle = 'Déplacer ce pad vers la corbeille'; - out.forgetPrompt = 'Cliquer sur OK déplacera ce pad vers la corbeille de votre CryptDrive, êtes-vous sûr ?'; - out.movedToTrash = 'Ce pad a été déplacé vers la corbeille.
    Accéder à mon Drive'; - - out.shareButton = 'Partager'; - out.shareSuccess = 'Lien copié dans le presse-papiers'; - - out.userListButton = "Liste d'utilisateurs"; - - out.chatButton = "Chat"; - - out.userAccountButton = "Votre compte"; - - out.newButton = 'Nouveau'; - out.newButtonTitle = 'Créer un nouveau pad'; - out.uploadButton = 'Importer des fichiers'; - out.uploadButtonTitle = 'Importer un nouveau fichier dans le dossier actuel'; - - out.saveTemplateButton = "Sauver en tant que modèle"; - out.saveTemplatePrompt = "Choisir un titre pour ce modèle"; - out.templateSaved = "Modèle enregistré !"; - out.selectTemplate = "Sélectionner un modèle ou appuyer sur Échap"; - out.useTemplate = "Commencer avec un modèle?"; - out.useTemplateOK = 'Choisir un modèle (Entrée)'; - out.useTemplateCancel = 'Document vierge (Échap)'; - out.template_import = "Importer un modèle"; - out.template_empty = "Aucun modèle disponible"; - - out.previewButtonTitle = "Afficher ou cacher la prévisualisation de Markdown"; - - out.presentButtonTitle = "Entrer en mode présentation"; - - out.backgroundButtonTitle = 'Changer la couleur de fond de la présentation'; - out.colorButtonTitle = 'Changer la couleur du texte en mode présentation'; - - out.propertiesButton = "Propriétés"; - out.propertiesButtonTitle = 'Voir les propriétés de ce pad'; - - out.printText = "Imprimer"; - out.printButton = "Imprimer (Entrée)"; - out.printButtonTitle2 = "Imprimer votre document ou l'enregistrer au format PDF"; - out.printOptions = "Options de mise en page"; - out.printSlideNumber = "Afficher le numéro des slides"; - out.printDate = "Afficher la date"; - out.printTitle = "Afficher le titre du pad"; - out.printCSS = "Personnaliser l'apparence (CSS):"; - out.printTransition = "Activer les animations de transition"; - out.printBackground = "Utiliser une image d'arrière-plan"; - out.printBackgroundButton = "Choisir une image"; - out.printBackgroundValue = "Arrière-plan actuel: {0}"; - out.printBackgroundNoValue = "Aucun arrière-plan affiché"; - out.printBackgroundRemove = "Supprimer cet arrière-plan"; - - out.filePickerButton = "Intégrer un fichier stocké dans CryptDrive"; - out.filePicker_close = "Fermer"; - out.filePicker_description = "Choisissez un fichier de votre CryptDrive pour l'intégrer ou importez-en un nouveau"; - out.filePicker_filter = "Filtrez les fichiers par leur nom"; - out.or = 'ou'; - - out.tags_title = "Mots-clés du pad (pour vous uniquement)"; - out.tags_add = "Modifier les mots-clés du pad"; - out.tags_searchHint = "Commencez une recherche par # dans votre CryptDrive pour retrouver vos pads par mot-clé."; - out.tags_notShared = "Vos mots-clés ne sont pas partagés avec les autres utilisateurs."; - out.tags_duplicate = "Mot-clé déjà présent : {0}"; - out.tags_noentry = "Vous ne pouvez pas ajouter de mots-clés à un pad supprimé!"; - - out.slideOptionsText = "Options"; - out.slideOptionsTitle = "Personnaliser la présentation"; - out.slideOptionsButton = "Enregistrer (Entrée)"; - out.slide_invalidLess = "Feuille de style non valide"; - - out.languageButton = "Langage"; - out.languageButtonTitle = "Sélectionner le langage à utiliser pour la coloration syntaxique"; - out.themeButton = "Thème"; - out.themeButtonTitle = "Sélectionner le thème de couleurs à utiliser pour les éditeurs de code et de présentations"; - - out.editShare = "Lien d'édition"; - out.editShareTitle = "Copier le lien d'édition dans le presse-papiers"; - out.editOpen = "Éditer dans un nouvel onglet"; - out.editOpenTitle = "Ouvrir le lien d'édition dans un nouvel onglet"; - out.viewShare = "Lien de lecture-seule"; - out.viewShareTitle = "Copier lien d'accès en lecture seule dans le presse-papiers"; - out.viewOpen = "Voir dans un nouvel onglet"; - out.viewOpenTitle = "Ouvrir le lien en lecture seule dans un nouvel onglet"; - out.fileShare = "Copier le lien"; - out.getEmbedCode = "Obtenir le code d'intégration"; - out.viewEmbedTitle = "Intégrer le pad dans une page web"; - out.viewEmbedTag = "Pour intégrer ce pad, veuillez inclure l'iframe suivant dans votre page là où vous souhaitez l'afficher. Vous pouvez changer sa taille en utilisant du code CSS ou des attributs HTML."; - out.fileEmbedTitle = "Intégrer le fichier dans une page web"; - out.fileEmbedScript = "Pour intégrer un fichier, veuillez inclure le script suivant une fois dans votre page afin de pouvoir charger le Media Tag :"; - out.fileEmbedTag = "Ensuite vous pouvez placer ce Media Tag où vous souhaitez dans votre page pour l'intégrer :"; - - out.notifyJoined = "{0} a rejoint la session collaborative"; - out.notifyRenamed = "{0} a changé son nom en {1}"; - out.notifyLeft = "{0} a quitté la session collaborative"; - - out.ok = 'OK'; - out.okButton = 'OK (Entrée)'; - - out.cancel = "Annuler"; - out.cancelButton = 'Annuler (Échap)'; - out.doNotAskAgain = "Ne plus demander (Échap)"; - - out.show_help_button = "Afficher l'aide"; - out.hide_help_button = "Cacher l'aide"; - out.help_button = "Aide"; - - out.historyText = "Historique"; - out.historyButton = "Afficher l'historique du document"; - out.history_next = "Version plus récente"; - out.history_prev = "Version plus ancienne"; - out.history_loadMore = "Charger davantage d'historique"; - out.history_closeTitle = "Fermer l'historique"; - out.history_restoreTitle = "Restaurer la version du document sélectionnée"; - out.history_restorePrompt = "Êtes-vous sûr de vouloir remplacer la version actuelle du document par la version affichée ?"; - out.history_restoreDone = "Document restauré"; - out.history_version = "Version :"; - - // Ckeditor - out.openLinkInNewTab = "Ouvrir le lien dans un nouvel onglet"; - out.pad_mediatagTitle = "Options du Media-Tag"; - out.pad_mediatagWidth = "Largeur (px)"; - out.pad_mediatagHeight = "Hauteur (px)"; - out.pad_mediatagRatio = "Préserver les proportions"; - out.pad_mediatagBorder = "Épaisseur de la bordure (px)"; - out.pad_mediatagPreview = "Aperçu"; - out.pad_mediatagImport = 'Sauver dans votre CryptDrive'; - out.pad_mediatagOptions = 'Propriétés de l\'image'; - - // Kanban - out.kanban_newBoard = "Nouveau tableau"; - out.kanban_item = "Élément {0}"; // Item number for initial content - out.kanban_todo = "À faire"; - out.kanban_done = "Terminé"; - out.kanban_working = "En cours"; - out.kanban_deleteBoard = "Êtes-vous sûr de vouloir supprimer ce tableau ?"; - out.kanban_addBoard = "Ajouter un tableau"; - out.kanban_removeItem = "Supprimer cet élément"; - out.kanban_removeItemConfirm = "Êtes-vous sûr de vouloir supprimer cet élément ?"; - - // Polls - - out.poll_title = "Sélecteur de date Zero Knowledge"; - out.poll_subtitle = "Planification de rendez-vous et sondages en temps-réel et Zero Knowledge"; - - out.poll_p_save = "Vos modifications sont mises à jour instantanément, donc vous n'avez jamais besoin de sauver le contenu."; - out.poll_p_encryption = "Tout ce que vous entrez est chiffré donc seules les personnes possédant le lien du sondage y ont accès. Même le serveur ne peut pas voir le contenu."; - - out.wizardLog = "Cliquez sur le bouton dans le coin supérieur gauche pour retourner au sondage"; - out.wizardTitle = "Utiliser l'assistant pour créer votre sondage"; - out.wizardConfirm = "Êtes-vous vraiment prêt à ajouter ces options au sondage ?"; - - out.poll_publish_button = "Publier"; - out.poll_admin_button = "Administrer"; - out.poll_create_user = "Ajouter un utilisateur"; - out.poll_create_option = "Ajouter une option"; - out.poll_commit = "Ajouter"; - - out.poll_closeWizardButton = "Fermer l'assistant"; - out.poll_closeWizardButtonTitle = "Fermer l'assistant"; - out.poll_wizardComputeButton = "Générer les options"; - out.poll_wizardClearButton = "Vider le tableau"; - out.poll_wizardDescription = "Créer automatiquement des options en entrant des dates et des horaires correspondant"; - out.poll_wizardAddDateButton = "+ Dates"; - out.poll_wizardAddTimeButton = "+ Horaires"; - - out.poll_optionPlaceholder = "Option"; - out.poll_userPlaceholder = "Votre nom"; - out.poll_removeOption = "Êtes-vous sûr de vouloir supprimer cette option ?"; - out.poll_removeUser = "Êtes-vous sûr de vouloir supprimer cet utilisateur ?"; - - out.poll_titleHint = "Titre"; - out.poll_descriptionHint = "Décrivez votre sondage puis cliquer sur le bouton ✓ (Publier).\n" + - "La description peut contenir de la syntaxe Markdown, et vous pouvez y ajouter des images stockées dans votre CryptDrive.\n" + - "Toutes les personnes possédant le lien d'édition de ce sondage peuvent modifier la description, bien que ce soit déconseillé."; - - out.poll_remove = "Supprimer"; - out.poll_edit = "Modifier"; - out.poll_locked = "Verrouillé"; - out.poll_unlocked = "Déverrouillé"; - - out.poll_bookmark_col = "Marquer cette colonne comme favorite pour qu'elle soit toujours déverrouillée et affichée en première position."; - out.poll_bookmarked_col = "Voici votre colonne favorite ; elle sera toujours déverrouillée et affichée en première position."; - out.poll_total = 'TOTAL'; - - out.poll_comment_list = "Commentaires"; - out.poll_comment_add = "Ajouter un commentaire"; - out.poll_comment_submit = "Envoyer"; - out.poll_comment_remove = "Supprimer ce commentaire"; - out.poll_comment_placeholder = "Votre commentaire"; - - out.poll_comment_disabled = "Publiez ce sondage en utilisant le bouton ✓ afin d'activer les commentaires."; - - // OnlyOffice - out.oo_reconnect = "La connexion au serveur est rétablie. Cliquez sur OK pour recharger la page et continuer l'édition."; - - // Canvas - out.canvas_clear = "Nettoyer"; - out.canvas_delete = "Supprimer la sélection"; - out.canvas_disable = "Désactiver le dessin"; - out.canvas_enable = "Activer le dessin"; - out.canvas_width = "Taille"; - out.canvas_opacity = "Opacité"; - out.canvas_opacityLabel = "Opacité : {0}"; - out.canvas_widthLabel = "Taille : {0}"; - out.canvas_saveToDrive = "Sauvegarder cette image en tant que fichier dans CryptDrive"; - out.canvas_currentBrush = "Pinceau actuel"; - out.canvas_chooseColor = "Choisir une couleur"; - out.canvas_imageEmbed = "Intégrer une image de votre ordinateur"; - - // Profile - out.profileButton = "Profil"; // dropdown menu - out.profile_urlPlaceholder = 'URL'; - out.profile_namePlaceholder = 'Nom ou pseudo pour le profil'; - out.profile_avatar = "Avatar"; - out.profile_upload = " Importer un nouvel avatar"; - out.profile_uploadSizeError = "Erreur : votre avatar doit avoir une taille inférieure à {0}"; - out.profile_uploadTypeError = "Erreur : le format de votre avatar est invalide. Les formats autorisés sont : {0}"; - out.profile_error = "Erreur lors de la création du profil : {0}"; - out.profile_register = "Vous devez vous inscrire pour pouvoir créer un profil !"; - out.profile_create = "Créer un profil"; - out.profile_description = "Description"; - out.profile_fieldSaved = 'Nouvelle valeur enregistrée : {0}'; - - out.profile_inviteButton = "Inviter"; - out.profile_inviteButtonTitle = 'Créer un lien pour inviter cet utilisateur à se connecter avec vous.'; - out.profile_inviteExplanation = "Cliquer sur OK créera un lien vers une session de messagerie sécurisée uniquement accessible par {0}.

    Le lien peut être copié et partagé de manière publique."; - out.profile_viewMyProfile = "Voir mon profil"; - - // contacts/userlist - out.userlist_addAsFriendTitle = 'Ajouter « {0} » comme contact'; - out.userlist_thisIsYou = 'Vous (« {0} »)'; - out.userlist_pending = "En attente..."; - out.contacts_title = "Contacts"; - out.contacts_addError = "Erreur lors de l'ajout de ce contact dans votre liste"; - out.contacts_added = 'Invitation de contact acceptée'; - out.contacts_rejected = 'Invitation de contact rejetée'; - out.contacts_request = '{0} souhaite vous ajouter en tant que contact. Accepter ?'; - out.contacts_send = 'Envoyer'; - out.contacts_remove = 'Supprimer ce contact'; - out.contacts_confirmRemove = 'Êtes-vous sûr de vouloir supprimer {0} de vos contacts ?'; - out.contacts_typeHere = "Entrez un message ici..."; - out.contacts_warning = "Tout ce que vous tapez ici est permanent et visible par tous les utilisateurs actuels et futurs de ce pad. Soyez prudent avec vos données confidentielles !"; - out.contacts_padTitle = "Chat"; - - out.contacts_info1 = "Voici vos contacts. Ici, vous pouvez :"; - out.contacts_info2 = "Cliquer sur le nom d'un contact pour discuter avec lui"; - out.contacts_info3 = "Double-cliquer sur son nom pour voir son profil"; - out.contacts_info4 = "Chaque participant peut nettoyer définitivement l'historique d'une discussion"; - - out.contacts_removeHistoryTitle = "Supprimer l'historique du chat"; - out.contacts_confirmRemoveHistory = 'Êtes-vous sûr de vouloir supprimer définitivement l\'historique de votre chat ? Les messages ne pourront pas être restaurés.'; - out.contacts_removeHistoryServerError = 'Une erreur est survenue lors de la supprimer de l\'historique du chat. Veuillez réessayer plus tard.'; - out.contacts_fetchHistory = "Récupérer l'historique plus ancien"; - - out.contacts_friends = "Amis"; - out.contacts_rooms = "Salons"; - out.contacts_leaveRoom = "Quitter ce salon"; - - out.contacts_online = "Un autre utilisateur est en ligne dans ce salon"; - - // File manager - - out.fm_rootName = "Documents"; - out.fm_trashName = "Corbeille"; - out.fm_unsortedName = "Fichiers non triés"; - out.fm_filesDataName = "Tous les fichiers"; - out.fm_templateName = "Modèles"; - out.fm_searchName = "Recherche"; - out.fm_recentPadsName = "Pads récents"; - out.fm_ownedPadsName = "Pads en votre possession"; - out.fm_tagsName = "Mots-clés"; - out.fm_sharedFolderName = "Dossier partagé"; - out.fm_searchPlaceholder = "Rechercher..."; - out.fm_newButton = "Nouveau"; - out.fm_newButtonTitle = "Créer un nouveau pad ou un dossier, importer un fichier dans le dossier courant"; - out.fm_newFolder = "Nouveau dossier"; - out.fm_newFile = "Nouveau pad"; - out.fm_folder = "Dossier"; - out.fm_sharedFolder = "Dossier partagé"; - out.fm_folderName = "Nom du dossier"; - out.fm_numberOfFolders = "# de dossiers"; - out.fm_numberOfFiles = "# de fichiers"; - out.fm_fileName = "Nom du fichier"; - out.fm_title = "Titre"; - out.fm_type = "Type"; - out.fm_lastAccess = "Dernier accès"; - out.fm_creation = "Création"; - out.fm_forbidden = "Action interdite"; - out.fm_originalPath = "Chemin d'origine"; - out.fm_openParent = "Montrer dans le dossier"; - out.fm_noname = "Document sans titre"; - out.fm_emptyTrashDialog = "Êtes-vous sûr de vouloir vider la corbeille ?"; - out.fm_removeSeveralPermanentlyDialog = "Êtes-vous sûr de vouloir supprimer ces {0} éléments de votre CryptDrive de manière permanente ?"; - out.fm_removePermanentlyNote = "Les pads dont vous êtes le propriétaire seront supprimés du serveur."; - out.fm_removePermanentlyDialog = "Êtes-vous sûr de vouloir supprimer cet élément de votre CryptDrive de manière permanente ?"; - out.fm_deleteOwnedPad = "Êtes-vous sûr de vouloir supprimer définitivement ce pad du serveur ?"; - out.fm_deleteOwnedPads = "Êtes-vous sûr de vouloir supprimer définitivement ces pads du serveur ?"; - out.fm_restoreDialog = "Êtes-vous sûr de vouloir restaurer {0} à son emplacement précédent ?"; - out.fm_removeSeveralDialog = "Êtes-vous sûr de vouloir déplacer ces {0} éléments vers la corbeille ?"; - out.fm_removeDialog = "Êtes-vous sûr de vouloir déplacer {0} vers la corbeille ?"; - out.fm_unknownFolderError = "Le dossier sélectionné ou le dernier dossier visité n'existe plus. Ouverture du dossier parent..."; - out.fm_contextMenuError = "Impossible d'ouvrir le menu contextuel pour cet élément. Si le problème persiste, essayez de rechercher la page."; - out.fm_selectError = "Impossible de sélectionner l'élément ciblé. Si le problème persiste, essayez de recharger la page."; - out.fm_categoryError = "Impossible d'afficher la catégorie sélectionnée, affichage de Documents"; - out.fm_info_root = "Créez ici autant de dossiers que vous le souhaitez pour trier vos fichiers."; - out.fm_info_unsorted = 'Contient tous les pads que vous avez ouvert et qui ne sont pas triés dans "Documents" ou déplacés vers la "Corbeille".'; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" - out.fm_info_template = "Contient tous les fichiers que vous avez sauvés en tant que modèle afin de les réutiliser lors de la création d'un nouveau pad."; - out.fm_info_recent = "Liste les derniers pads que vous avez modifiés ou ouverts."; - out.updated_0_fm_info_trash = "Vider la corbeille permet de libérer de l'espace dans votre CryptDrive"; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = 'Contient tous les fichiers de "Documents", "Fichiers non triés" et "Corbeille". Vous ne pouvez pas supprimer ou déplacer des fichiers depuis cet endroit.'; // Same here - out.fm_info_anonymous = 'Vous n\'êtes pas connecté, ces pads seront donc supprimés après 3 mois d\'inactivité (découvrez pourquoi). ' + - 'Ils sont stockés dans votre navigateur donc nettoyer votre historique peut les faire disparaître.
    ' + - 'Inscrivez-vous ou connectez-vous pour les maintenir en vie.'; - out.fm_info_sharedFolder = "Voici le contenu d'un dossier partagé. Il n'est accessible qu'en lecture seule car vous n'êtes pas connecté.
    " + - 'Inscrivez-vous ou connectez-vous pour pouvoir l\'importer dans votre CryptDrive et le modifier.'; - out.fm_info_owned = "Vous êtes propriétaire des pads affichés dans cette catégorie. Cela signifie que vous pouvez choisir de les supprimer définitivement du serveur à n'importe quel moment. Ils seront alors inaccessibles pour tous les autres utilisateurs."; - out.fm_alert_backupUrl = "Lien de secours pour ce CryptDrive.
    " + - "Il est fortement recommandé de garder ce lien pour vous-même.
    " + - "Il vous servira en cas de perte des données de votre navigateur afin de retrouver vos fichiers.
    " + - "Quiconque se trouve en possession de celui-ci peut modifier ou supprimer tous les fichiers de ce gestionnaire.
    "; - out.fm_alert_anonymous = "Bonjour ! Vous utilisez actuellement CryptPad de manière anonyme, ce qui ne pose pas de problème mais vos pads peuvent être supprimés après un certain temps " + - "d'inactivité. Nous avons désactivé certaines fonctionnalités avancées de CryptDrive pour les utilisateurs anonymes afin de rendre clair le fait que ce n'est pas " + - 'un endroit sûr pour le stockage des documents. Vous pouvez en lire plus concernant ' + - 'nos raisons pour ces changements et pourquoi vous devriez vraiment vous enregistrer et vous connecter.'; - out.fm_backup_title = 'Lien de secours'; - out.fm_nameFile = 'Comment souhaitez-vous nommer ce fichier ?'; - out.fm_error_cantPin = "Erreur interne du serveur. Veuillez recharger la page et essayer de nouveau."; - out.fm_viewListButton = "Liste"; - out.fm_viewGridButton = "Grille"; - out.fm_renamedPad = "Vous avez renommé ce pad dans votre Drive. Son titre est:
    {0}"; - out.fm_canBeShared = "Ce dossier peut être partagé"; - out.fm_prop_tagsList = "Mots-clés"; - out.fm_burnThisDriveButton = "Effacer toutes les informations stockées par CryptPad dans votre navigateur"; - out.fm_burnThisDrive = "Êtes-vous sûr de vouloir supprimer tout ce qui est stocké par CryptPad dans votre navigateur ?
    " + - "Cette action supprimera votre CryptDrive et son historique de votre navigateur, mais les pads existeront toujours (de manière chiffrée) sur notre serveur."; - out.fm_padIsOwned = "Vous êtes le propriétaire de ce pad"; - out.fm_padIsOwnedOther = "Ce pad est la propriété d'un autre utilisateur"; - out.fm_deletedPads = "Ces pads n'existent plus sur le serveur, ils ont été supprimés de votre CryptDrive: {0}"; - out.fm_tags_name = "Mot-clé"; - out.fm_tags_used = "Nombre d'utilisations"; - out.fm_restoreDrive = "Restauration de votre CryptDrive à une version antérieure. Pour de meilleurs résultats, veuillez éviter de modifier votre CryptDrive avant que cette restauration ne soit terminée."; - out.fm_moveNestedSF = "Vous ne pouvez pas placer un dossier partagé dans un autre. Le dossier {0} n'a pas été déplacé."; - // File - Context menu - out.fc_newfolder = "Nouveau dossier"; - out.fc_newsharedfolder = "Nouveau dossier partagé"; - out.fc_rename = "Renommer"; - out.fc_open = "Ouvrir"; - out.fc_open_ro = "Ouvrir (lecture seule)"; - out.fc_delete = "Déplacer vers la corbeille"; - out.fc_delete_owned = "Supprimer du serveur"; - out.fc_restore = "Restaurer"; - out.fc_remove = "Supprimer de votre CryptDrive"; - out.fc_remove_sharedfolder = "Supprimer"; - out.fc_empty = "Vider la corbeille"; - out.fc_prop = "Propriétés"; - out.fc_hashtag = "Mots-clés"; - out.fc_sizeInKilobytes = "Taille en kilo-octets"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "La liste des modèles ne peut pas contenir de dossiers."; - out.fo_existingNameError = "Ce nom est déjà utilisé dans ce répertoire. Veuillez en choisir un autre."; - out.fo_moveFolderToChildError = "Vous ne pouvez pas déplacer un dossier dans un de ses descendants"; - out.fo_unableToRestore = "Impossible de restaurer ce fichier à son emplacement d'origine. Vous pouvez essayer de le déplacer à un nouvel emplacement."; - out.fo_unavailableName = "Un fichier ou dossier avec le même nom existe déjà au nouvel emplacement. Renommez cet élément avant d'essayer à nouveau."; - - out.fs_migration = "Votre CryptDrive est en train d'être mis à jour vers une nouvelle version. Cela implique que cette page doive être rechargée.
    Veuillez recharger la page pour pouvoir continuer à l'utiliser."; - - // login - out.login_login = "Connexion"; - out.login_makeAPad = 'Créer un pad anonymement'; - out.login_nologin = "Voir les pads récents"; - out.login_register = "Inscription"; - out.logoutButton = "Déconnexion"; - out.settingsButton = "Préférences"; - - out.login_username = "Nom d'utilisateur"; - out.login_password = "Mot de passe"; - out.login_confirm = "Confirmer votre mot de passe"; - out.login_remember = "Se souvenir de moi"; - - out.login_hashing = "Traitement de vos identifiants, cela peut nécessiter quelques instants."; - - out.login_hello = 'Bonjour {0},'; // {0} is the username - out.login_helloNoName = 'Bonjour,'; - out.login_accessDrive = 'Accédez à votre drive'; - out.login_orNoLogin = 'ou'; - - out.login_noSuchUser = "Nom d'utilisateur ou mot de passe invalide. Veuillez vous inscrire ou réessayer."; - out.login_invalUser = "Nom d'utilisateur requis"; - out.login_invalPass = 'Mot de passe requis'; - out.login_unhandledError = "Une erreur inattendue s'est produite :("; - - out.register_importRecent = "Importer les pads de votre session anonyme"; - out.register_acceptTerms = "J'accepte les conditions d'utilisation"; - out.register_passwordsDontMatch = "Les mots de passe doivent être identiques!"; - out.register_passwordTooShort = "Les mots de passe doivent contenir au moins {0} caractères."; - - out.register_mustAcceptTerms = "Vous devez accepter les conditions d'utilisation."; - out.register_mustRememberPass = "Nous ne pouvons pas réinitialiser votre mot de passe si vous l'oubliez. C'est important que vous vous en souveniez! Veuillez cocher la case pour confirmer."; - out.register_writtenPassword = "J'ai bien noté mon nom d'utilisateur et mon mot de passe, continuer"; - out.register_cancel = "Retour"; - out.register_warning = "Zero Knowledge signifie que nous ne pouvons pas récupérer vos données si vous perdez vos identifiants."; - out.register_alreadyRegistered = "Cet utilisateur existe déjà, souhaitez-vous vous connecter ?"; - - out.register_whyRegister = "Pourquoi s'inscrire ?"; - out.register_header = "Bienvenue dans CryptPad"; - out.register_explanation = [ - "

    Faisons d'abord le point sur certaines choses

    ", - "
      ", - "
    • Votre mot de passe est la clé secrète de tous vos pads. Si vous le perdez, il n'y a aucun moyen de récupérer vos données.
    • ", - "
    • Vous pouvez importer les pads récents de ce navigateur pour les avoir dans votre compte utilisateur.
    • ", - "
    • Si vous utilisez un ordinateur partagé, vous devez vous déconnecter avant de partir, fermer l'onglet n'est pas suffisant.
    • ", - "
    " - ].join(''); - - // Settings - out.settings_cat_account = "Compte"; - out.settings_cat_drive = "CryptDrive"; - out.settings_cat_cursor = "Curseur"; - out.settings_cat_code = "Code"; - out.settings_cat_pad = "Documents texte"; - out.settings_cat_creation = "Nouveau pad"; - out.settings_cat_subscription = "Abonnement"; - out.settings_title = "Préférences"; - out.settings_save = "Sauver"; - - out.settings_backupCategory = "Sauvegarde"; - out.settings_backupHint = "Créer ou restaurer une sauvegarde de votre CryptDrive. Cette sauvegarde ne contient pas le contenu de vos pads mais uniquement les clés qui permettent d'y accéder."; - out.settings_backup = "Sauvegarder"; - out.settings_restore = "Restaurer"; - - out.settings_backupHint2 = "Télécharger le contenu actuel de tous vos pads. Ceux-ci seront téléchargés dans un format lisible si un tel format est disponible."; - out.settings_backup2 = "Télécharger mon CryptDrive"; - out.settings_backup2Confirm = "Vous allez télécharger tous les pads de votre CryptDrive. Si vous souhaitez continuer, choisissez un nom et appuyez sur OK."; - out.settings_exportTitle = "Téléchargement de votre CryptDrive"; - out.settings_exportDescription = "Veuillez patienter pendant que nous téléchargeons et déchiffrons vos documents. Cette opération peut prendre plusieurs minutes. Fermer l'onglet du navigateur interrompra le processus."; - out.settings_exportFailed = "Si un pad nécessite plus d'une minute pour être traité, il ne sera pas inclus dans l'archive. Une liste des pads n'ayant pas été exportés sera disponible à la fin."; - out.settings_exportWarning = "Note: cet outil est encore un prototype et peut rencontrer des difficultés lors de l'export. Pour de meilleures performances, il est recommandé de ne pas changer d'onglet pendant le téléchargement."; - out.settings_exportCancel = "Êtes-vous sûr de vouloir annuler ce téléchargement ? Vous devrez recommencer du début la prochaine fois."; - out.settings_export_reading = "Lecture de votre CryptDrive..."; - out.settings_export_download = "Téléchargement et déchiffrement des documents..."; - out.settings_export_compressing = "Compression des données..."; - out.settings_export_done = "Votre téléchargement est prêt !"; - out.settings_exportError = "Voir les erreurs"; - out.settings_exportErrorDescription = "Nous n'avons pas réussi à ajouter les documents suivant dans le téléchargement :"; - out.settings_exportErrorEmpty = "Ce document ne peut pas être exporté (document vide ou contenu invalide)"; - out.settings_exportErrorMissing = "Ce document n'est plus stocké sur nos serveurs (expiré ou supprimé par son propriétaire)"; - out.settings_exportErrorOther = "Une erreur est survenue lors de la récupération de ce document : {0}"; - - out.settings_resetNewTitle = "Vider CryptDrive"; - out.settings_resetButton = "Supprimer"; - out.settings_reset = "Supprimer tous les fichiers et dossiers de votre CryptDrive"; - out.settings_resetPrompt = "Cette action va supprimer tous les pads de votre drive.
    "+ - "Êtes-vous sûr de vouloir continuer ?
    " + - "Tapez « I love CryptPad » pour confirmer."; - out.settings_resetDone = "Votre drive est désormais vide!"; - out.settings_resetError = "Texte de vérification incorrect. Votre CryptDrive n'a pas été modifié."; - - out.settings_resetTipsAction ="Réinitialiser"; - out.settings_resetTips = "Astuces"; - out.settings_resetTipsButton = "Réinitialiser les astuces visibles dans CryptDrive"; - out.settings_resetTipsDone = "Toutes les astuces sont de nouveau visibles."; - - out.settings_thumbnails = "Miniatures"; - out.settings_disableThumbnailsAction = "Désactiver la création de miniatures dans CryptDrive"; - out.settings_disableThumbnailsDescription = "Des miniatures de vos pads sont automatiquement créées et stockées dans votre navigateur. Vous pouvez désactiver cette fonctionnalité."; - out.settings_resetThumbnailsAction = "Nettoyer"; - out.settings_resetThumbnailsDescription = "Nettoyer toutes les miniatures stockées dans votre navigateur."; - out.settings_resetThumbnailsDone = "Toutes les miniatures ont été effacées."; - - out.settings_importTitle = "Importer les pads récents de ce navigateur dans votre CryptDrive"; - out.settings_import = "Importer"; - out.settings_importConfirm = "Êtes-vous sûr de vouloir importer les pads récents de ce navigateur dans le CryptDrive de votre compte utilisateur ?"; - out.settings_importDone = "Importation terminée"; - - out.settings_autostoreTitle = "Stockage des pads dans CryptDrive"; - out.settings_autostoreHint = "Le stockage Automatique des pads permet de sauver tous les pads que vous visitez dans votre CryptDrive, sans action de votre part.
    " + - "Le stockage Manuel (toujours demander) permet de ne pas stocker automatiquement les pads, mais d'afficher un message vous demandant s'il faut le faire ou non.
    " + - "Le stockage Manuel (ne pas demander) permet de ne pas stocker les pads ni d'afficher le message. Une option permettant de les stocker sera toujours disponible, mais cachée."; - out.settings_autostoreYes = "Automatique"; - out.settings_autostoreNo = "Manuel (ne pas demander)"; - out.settings_autostoreMaybe = "Manuel (toujours demander)"; - - out.settings_userFeedbackTitle = "Retour d'expérience"; - out.settings_userFeedbackHint1 = "CryptPad peut envoyer des retours d'expérience très limités vers le serveur, de manière à nous permettre d'améliorer l'expérience des utilisateurs. "; - out.settings_userFeedbackHint2 = "Le contenu de vos pads et les clés de déchiffrement ne seront jamais partagés avec le serveur."; - out.settings_userFeedback = "Activer l'envoi de retours d'expérience"; - - out.settings_deleteTitle = "Suppression du compte"; - out.settings_deleteHint = "La suppression de votre compte utilisateur est permanente. Votre CryptDrive et votre liste de pads seront supprimés du serveur. Le reste de vos pads sera supprimé après 90 jours d'inactivité si personne ne les a stockés dans leur CryptDrive."; - out.settings_deleteButton = "Supprimer votre compte"; - out.settings_deleteModal = "Veuillez envoyer les informations suivantes à votre administrateur CryptPad afin que vos données soient supprimées du serveur."; - out.settings_deleteConfirm = "Êtes-vous sûr de vouloir supprimer votre compte utilisateur ? Cette action est irréversible."; - out.settings_deleted = "Votre compte utilisateur a été supprimé. Appuyez sur OK pour être redirigé(e) vers la page d'accueil."; - - out.settings_anonymous = "Vous n'êtes pas connecté. Ces préférences seront utilisées pour ce navigateur."; - out.settings_publicSigningKey = "Clé publique de signature"; - - out.settings_usage = "Utilisation"; - out.settings_usageTitle = "Voir la taille totale de vos pads épinglés en Mo"; - out.settings_pinningNotAvailable = "Les pads épinglés sont disponibles uniquement pour les utilisateurs enregistrés."; - out.settings_pinningError = "Un problème est survenu"; - out.settings_usageAmount = "Vos pads épinglés occupent {0} Mo"; - - out.settings_logoutEverywhereButton = "Se déconnecter"; - out.settings_logoutEverywhereTitle = "Se déconnecter partout"; - out.settings_logoutEverywhere = "Se déconnecter de force de toutes les autres sessions."; - out.settings_logoutEverywhereConfirm = "Êtes-vous sûr ? Vous devrez vous reconnecter sur tous vos autres appareils."; - - out.settings_driveDuplicateTitle = "Doublons des pads dont vous êtes propriétaire"; - out.settings_driveDuplicateHint = "Quand vous déplacez un pad dont vous êtes le propriétaire dans un dossier partagé, une copie est créée dans votre CryptDrive pour s'assurer que vous puissiez garder le contrôle de ce pad. Vous pouvez choisir de cacher ces doublons. Seules les versions partagées seront affichées, jusqu'à leur suppression, dans quels cas la version dans votre CryptDrive redeviendra visible."; - out.settings_driveDuplicateLabel = "Cacher les doublons"; - - out.settings_codeIndentation = "Indentation dans l'éditeur de code (nombre d'espaces)"; - out.settings_codeUseTabs = "Utiliser des tabulations au lieu d'espaces"; - out.settings_codeFontSize = "Taille de la police dans l'éditeur de code (px)"; - - out.settings_padWidth = "Largeur de l'éditeur de texte"; - out.settings_padWidthHint = "L'éditeur de documents texte occupe toute la largeur de l'écran disponible par défaut, ce qui peut rendre le texte difficile à lire. Vous pouvez ici réduire la largeur de l'éditeur."; - out.settings_padWidthLabel = "Réduire la largeur de l'éditeur"; - out.settings_padSpellcheckTitle = "Vérification orthographique"; - out.settings_padSpellcheckHint = "Cette option vous permet d'activer la vérification orthographique dans l'éditeur de Texte. Les fautes seront soulignées et des propositions correctes seront disponibles en effectuant un clic-droit avec la touche Ctrl ou Meta enfoncée."; - out.settings_padSpellcheckLabel = "Activer la vérification orthographique"; - - out.settings_creationSkip = "Passer l'écran de création de pad"; - out.settings_creationSkipHint = "L'écran de création de pad offre de nouvelles options pour créer un pad, permettant d'avoir plus de contrôle et de sécurité concernant vos données. Toutefois, il peut ralentir votre travail en ajoutant une étape supplémentaire et donc, ici, vous avez la possibilité de choisir de passer cet écran et d'utiliser les paramètres par défaut choisis au-dessus."; - out.settings_creationSkipTrue = "Passer"; - out.settings_creationSkipFalse = "Afficher"; - - out.settings_templateSkip = "Passer la fenêtre de choix d'un modèle"; - out.settings_templateSkipHint = "Quand vous créez un nouveau pad, et si vous possédez des modèles pour ce type de pad, une fenêtre peut apparaître pour demander si vous souhaitez importer un modèle. Ici vous pouvez choisir de ne jamais montrer cette fenêtre et donc de ne jamais utiliser de modèle."; - - out.settings_ownDriveTitle = "Activer les dernières fonctionnalités du compte"; - out.settings_ownDriveHint = "Pour des raisons techniques, les comptes utilisateurs les plus anciens n'ont pas accès à toutes les fonctionnalités. Une mise à niveau gratuite permet de préparer votre CryptDrive pour les nouveautés à venir sans perturber vos activités habituelles."; - out.settings_ownDriveButton = "Mettre à niveau votre compte"; - out.settings_ownDriveConfirm = "La mise à niveau peut prendre du temps. Vous devrez vous reconnecter sur tous vos appareils. Voulez-vous continuer?"; - out.settings_ownDrivePending = "Votre compte est en train d'être mis à jour. Veuillez ne pas fermer ou recharger cette page avant que le traitement soit terminé."; - - out.settings_changePasswordTitle = "Changer de mot de passe"; - out.settings_changePasswordHint = "Pour modifier le mot de passe de votre compte utilisateur, entrez votre mot de passe actuel et confirmez le nouveau mot de passe en la tapant deux fois.
    " + - "Nous ne pouvons pas réinitialiser votre mot de passe si vous le perdez, donc soyez très prudent !"; - out.settings_changePasswordButton = "Changer le mot de passe"; - out.settings_changePasswordCurrent = "Mot de passe actuel"; - out.settings_changePasswordNew = "Nouveau mot de passe"; - out.settings_changePasswordNewConfirm = "Confirmer le nouveau mot de passe"; - out.settings_changePasswordConfirm = "Êtes-vous sûr de vouloir changer votre mot de passe ? Vous devrez vous reconnecter sur tous vos appareils."; - out.settings_changePasswordError = "Une erreur est survenue. Si vous n'êtes plus en mesure de vous connecter à votre compte utilisateur ou de changer votre mot de passe, veuillez contacter l'administrateur de votre CryptPad."; - out.settings_changePasswordPending = "Votre mot de passe est en train d'être modifié. Veuillez ne pas fermer ou recharger cette page avant que le traitement soit terminé."; - out.settings_changePasswordNewPasswordSameAsOld = "Votre nouveau mot de passe doit être différent de votre mot de passe actuel."; - - out.settings_cursorColorTitle = "Couleur du curseur"; - out.settings_cursorColorHint = "Changer la couleur associée à votre utilisateur dans les documents collaboratifs"; - out.settings_cursorShareTitle = "Partager la position de mon curseur"; - out.settings_cursorShareHint = "Vous pouvez décider si vous souhaitez que les autres puissent voir la position de votre curseur dans les documents collaboratifs ou non."; - out.settings_cursorShareLabel = "Partager la position"; - out.settings_cursorShowTitle = "Afficher les curseurs des autres utilisateurs"; - out.settings_cursorShowHint = "Vous pouvez choisir si vous souhaitez voir les curseurs des autres utilisateurs dans les documents collaboratifs ou non."; - out.settings_cursorShowLabel = "Montrer les curseurs"; - - out.upload_title = "Hébergement de fichiers"; - out.upload_type = "Type"; - out.upload_modal_title = "Options d'importation du fichier"; - out.upload_modal_filename = "Nom (extension {0} ajoutée automatiquement)"; - out.upload_modal_owner = "Être propriétaire du fichier"; - out.upload_serverError = "Erreur interne: impossible d'importer le fichier pour l'instant."; - out.upload_uploadPending = "Vous avez déjà un fichier en cours d'importation. Souhaitez-vous l'annuler et importer ce nouveau fichier ?"; - out.upload_success = "Votre fichier ({0}) a été importé avec succès et ajouté à votre CryptDrive."; - out.upload_notEnoughSpace = "Il n'y a pas assez d'espace libre dans votre CryptDrive pour ce fichier."; - out.upload_notEnoughSpaceBrief = "Pas assez d'espace"; - out.upload_tooLarge = "Ce fichier dépasse la taille maximale autorisée."; - out.upload_tooLargeBrief = 'Fichier trop volumineux'; - out.upload_choose = "Choisir un fichier"; - out.upload_pending = "En attente"; - out.upload_cancelled = "Annulé"; - out.upload_name = "Nom du fichier"; - out.upload_size = "Taille"; - out.upload_progress = "État"; - out.upload_mustLogin = "Vous devez vous connecter pour importer un fichier"; - out.upload_up = "Envoyer"; - out.download_button = "Déchiffrer et télécharger"; - out.download_mt_button = "Télécharger"; - out.download_resourceNotAvailable = "Le fichier demandé n'est pas disponible... Appuyez sur Échap pour continuer."; - out.download_dl = "Télécharger"; - out.download_step1 = "Téléchargement"; - out.download_step2 = "Déchiffrement"; - - out.todo_title = "CryptTodo"; - out.todo_newTodoNamePlaceholder = "Décrivez votre tâche..."; - out.todo_newTodoNameTitle = "Ajouter cette tâche à votre liste"; - out.todo_markAsCompleteTitle = "Marquer cette tâche comme terminée"; - out.todo_markAsIncompleteTitle = "Marquer cette tâche comme incomplète"; - out.todo_removeTaskTitle = "Enlever cette tâche de votre liste"; - - // pad - out.pad_showToolbar = "Afficher la barre d'outils"; - out.pad_hideToolbar = "Cacher la barre d'outils"; - out.pad_base64 = "Ce pad contient des images stockées de manière inefficace. Ces images vont augmenter de manière significative la taille du pad dans votre CryptDrive, et le rendre plus lent à charger. Vous pouvez migrer ces fichiers afin de les stocker séparément dans votre CryptDrive. Voulez-vous commencer la migration maintenant?"; - - // markdown toolbar - out.mdToolbar_button = "Afficher ou cacher la barre d'outils Markdown"; - out.mdToolbar_defaultText = "Votre texte ici"; - out.mdToolbar_help = "Aide"; - out.mdToolbar_tutorial = "https://blog.wax-o.com/2014/04/tutoriel-un-guide-pour-bien-commencer-avec-markdown/"; - out.mdToolbar_bold = "Gras"; - out.mdToolbar_italic = "Italique"; - out.mdToolbar_strikethrough = "Barré"; - out.mdToolbar_heading = "Titre"; - out.mdToolbar_link = "Lien"; - out.mdToolbar_quote = "Citation"; - out.mdToolbar_nlist = "Liste ordonnée"; - out.mdToolbar_list = "Liste à puces"; - out.mdToolbar_check = "Liste de tâches"; - out.mdToolbar_code = "Code"; - - // index.html - - out.home_product = "CryptPad est une alternative respectant la vie privée aux outils office et aux services cloud populaires. Tout le contenu stocké dans CryptPad est chiffré avant d'être envoyé, ce qui signifie que personne ne peut accéder à vos données à moins que vous ne leur donniez les clés (même pas nous)."; - out.home_host = "Ceci est une instance communautaire et indépendante de CryptPad. Le code source du projet est disponible sur GitHub."; - out.home_host_agpl = "CryptPad est distribué sous les termes de la licence logicielle AGPL3"; - out.home_ngi = "Gagnant d'un prix NGI Awards"; - - //about.html - out.about_intro = 'CryptPad est développé au sein de l\'équipe Recherche d\'XWiki SAS, une petite entreprise située à Paris en France et à Iasi en Roumanie. Il y a 3 développeurs principaux qui travaillent sur CryptPad, ainsi que quelques contributeurs à la fois dans et en dehors d\'XWiki SAS'; - out.about_core = 'Développeurs principaux'; - out.about_contributors = 'Contributeurs clés'; - - //contact.html - out.main_about_p22 = 'Tweetez-nous'; - out.main_about_p23 = 'Ouvrez un ticket (GitHub)'; - out.main_about_p24 = 'Dites Bonjour (Matrix)'; - out.main_about_p25 = 'Envoyez-nous un email'; - out.main_about_p26 = 'Si vous avez une question ou des remarques, n\'hésitez pas à nous contacter !'; - - out.main_info = "

    Collaborez avec confiance


    Développez vos idées en groupe avec des documents partagés; la technologie Zero Knowledge sécurise vos données."; - out.main_catch_phrase = "Le Cloud Zero Knowledge"; - - out.main_richText = 'Éditeur de texte'; - out.main_code = 'Éditeur de code'; - out.main_slide = 'Présentations'; - out.main_poll = 'Sondages'; - out.main_drive = 'CryptDrive'; - - out.main_richTextPad = 'Éditeur de texte'; - out.main_codePad = 'Éditeur de code'; - out.main_sheetPad = 'Tableur (Beta)'; - out.main_slidePad = 'Éditeur de Présentations'; - out.main_pollPad = 'Sondage ou Planning'; - out.main_whiteboardPad = 'Tableau blanc'; - out.main_kanbanPad = 'Kanban'; - out.main_localPads = 'Pads Locaux'; - out.main_yourCryptDrive = 'Votre CryptDrive'; - out.main_footerText = "Avec CryptPad, vous pouvez créer des documents collaboratifs rapidement pour prendre des notes à plusieurs."; - - out.footer_applications = "Applications"; - out.footer_contact = "Contact"; - out.footer_aboutUs = "À propos"; - - out.about = "À propos"; - out.privacy = "Confidentialité"; - out.contact = "Contact"; - out.terms = "Conditions"; - out.blog = "Blog"; - - out.topbar_whatIsCryptpad = "Qu'est-ce que CryptPad"; - - // what-is-cryptpad.html - - out.whatis_title = "Qu'est-ce que CryptPad"; - out.whatis_collaboration = 'Collaboration rapide, facile'; - out.whatis_collaboration_p1 = "Avec CryptPad, vous pouvez créer rapidement des documents collaboratifs pour prendre des notes à plusieurs. Quand vous vous enregistrez et vous vous connectez, vous obtenez la possibilité d'importer des fichiers dans un CryptDrive où vous pouvez organiser tous vos pads (documents). En tant qu'utilisateur enregistré, vous possédez 50 Mo de stockage gratuit."; - out.whatis_collaboration_p2 = "Vous pouvez partager l'accès à un document simplement en partageant le lien. Vous pouvez aussi partager un lien spécial fournissant un accès en lecture seule au pad, permettant de publier des travaux collaboratifs tout en restant maître de l'édition."; - out.whatis_collaboration_p3 = "Vous pouvez créer des documents de texte avec CKEditor tout comme des documents Markdown qui sont rendus en temps-réel pendant que vous tapez. Vous pouvez aussi utiliser l'application de sondage pour planifier des évènements avec plusieurs participants."; - out.whatis_zeroknowledge = 'Zero Knowledge'; - out.whatis_zeroknowledge_p1 = "Nous ne souhaitons pas connaître ce que vous tapez et grâce à la cryptographie moderne, vous pouvez être assuré que nous ne le pouvons pas. CryptPad utilise un chiffrement à 100 % côté client pour protéger le contenu que vous tapez de nous, les personnes contrôlant le serveur."; - out.whatis_zeroknowledge_p2 = "Quand vous vous enregistrez et vous vous connectez, votre nom d'utilisateur et votre mot de passe sont transformés en une clé secrète grâce à la fonction de dérivation de clé Scrypt. Ni cette clé, ni le nom d'utilisateur ou le mot de passe, ne sont envoyés au serveur. À la place, elle est utilisée côté client pour chiffrer et déchiffrer le contenu de votre CryptDrive, qui contient toutes les clés permettant d'accéder à vos pads."; - out.whatis_zeroknowledge_p3 = "Quand vous partagez le lien vers un document, vous partagez la clé cryptographique permettant de déchiffrer le document, mais puisque cette clé se trouve dans l'identificateur de fragment, elle n'est jamais envoyée au serveur. Venez lire notre article de blog sur la vie privée pour en apprendre davantage sur le type de métadonnées auxquelles nous avons ou n'avons pas accès."; - out.whatis_drive = "Organisation avec CryptDrive"; - out.whatis_drive_p1 = "Dès que vous accédez à un pad dans CryptPad, celui-ci est automatiquement ajouté à votre CryptDrive, dans le dossier principal. Vous pouvez alors ranger ce pad dans un dossier ou le déplacer vers la corbeille. CryptDrive vous permet de rechercher parmi vos pads et de les organiser quand vous le souhaitez, comme vous le souhaitez."; - out.whatis_drive_p2 = "Avec le glisser-déposer intuitif, vous pouvez déplacer vos pads dans votre drive tout en conservant les liens vers ces pads pour que vos collaborateurs n'en perdent pas l'accès"; - out.whatis_drive_p3 = "Vous pouvez également importer des fichiers dans votre CryptDrive et les partager avec des collègues. Les fichiers importés peuvent être rangés de la même manière que vos pads collaboratifs."; - out.whatis_business = 'CryptPad for Business'; - out.whatis_business_p1 = "Le chiffrement Zero Knowledge de CryptPad excelle pour accroître l'efficacité des protocoles de sécurité existants en les recréant de manière cryptographique. Puisque les données sensibles ne peuvent être déchiffrées qu'en utilisant les identifiants d'un utilisateur, CryptPad empêche d'éventuels hackers ayant réussi à s'introduire dans le serveur d'avoir accès en clair à ces données. Découvrez-en plus sur la manière dont CryptPad peut aider votre entreprise en lisant le CryptPad Whitepaper."; - out.whatis_business_p2 = "CryptPad est déployable sur site et les développeurs CryptPad chez XWiki SAS peuvent effectuer du développement, des personnalisations et du support commercial. Contactez-nous à sales@cryptpad.fr pour plus d'informations."; - - // privacy.html - - out.policy_title = 'Politique de confidentialité de CryptPad'; - out.policy_whatweknow = 'Ce que nous savons de vous'; - out.policy_whatweknow_p1 = 'En tant qu\'application hébergée sur le web, CryptPad a accès aux meta-données exposées par le protocole HTTP. Ceci inclus votre adresse IP et d\'autres en-têtes HTTP qui peuvent être utilisées pour identifier votre propre navigateur. Vous pouvez voir quelles informations votre navigateur partage en visitant WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'Nous utilisons Piwik, une plateforme open source d\'analytique, afin d\'en apprendre plus sur nos utilisateurs. Piwik nous indique comment vous avez trouvé CryptPad, que ce soit par une entrée directe, par un moteur de recherche ou depuis un lien provenant d\'un autre site web tel que Reddit ou Twitter. Nous savons également quand vous visitez le site, sur quels liens vous cliquez dans les pages informatives et combien de temps vous restez sur une page donnée.'; - out.policy_howweuse = 'Comment nous utilisons ce que nous apprenons'; - out.policy_howweuse_p1 = 'Nous utilisons ces informations pour prendre de meilleures décisions concernant la communication autour de CryptPad, en évaluant le succès de ce qui a été réalisé par le passé. Les informations concernant votre localisation nous permettent de savoir si nous devons considérer l\'ajout de traductions de CryptPad dans d\'autres langues que l\'anglais.'; - out.policy_howweuse_p2 = "Les informations concernant votre navigateur (que ce soit un système d\'exploitation de bureau ou d\'appareil portable) nous aident à prendre des décisions lors de la priorisation des ajouts et améliorations de fonctionnalités. Notre équipe de développement est petite, et nous essayons de prendre des décisions qui amélioreront l\'expérience du plus grand nombre d\'utilisateurs possible."; - out.policy_whatwetell = 'Ce que nous dévoilons à d\'autres à propos de vous'; - out.policy_whatwetell_p1 = 'Nous ne fournissons aucune information que nous récoltons ou que vous nous fournissez à des tierces parties à moins d\'y être contraints par la loi.'; - out.policy_links = 'Liens vers d\'autres sites'; - out.policy_links_p1 = 'Ce site contient des liens vers d\'autres sites, certains étant produits par d\'autres organisations. Nous ne sommes responsables des pratiques de confidentialité ou du contenu d\'aucun site externe. De manière générale, les liens vers des sites externes sont lancés dans une nouvelle fenêtre (ou onglet) du navigateur, pour rendre clair le fait que vous quittez CryptPad.fr.'; - out.policy_ads = 'Publicité'; - out.policy_ads_p1 = 'Nous n\'affichons pas de publicité en ligne, bien que nous puissions afficher des liens vers les sites des organisations qui financent nos recherches.'; - out.policy_choices = 'Vos choix'; - out.policy_choices_open = 'Notre code est open source, ce qui signifie que vous avez toujours la possibilité d\'héberger votre propre instance de CryptPad.'; - out.policy_choices_vpn = 'Si vous souhaitez utiliser notre instance hébergée (cryptpad.fr) mais que vous ne souhaitez pas exposer votre adresse IP, vous pouvez la protéger en utilisant le navigateur Tor, ou un VPN.'; - out.policy_choices_ads = 'Si vous souhaitez uniquement bloquer notre plateforme d\'analytique, vous pouvez utiliser un bloqueur de publicités tel que Privacy Badger.'; - - // features.html - - out.features = "Fonctionnalités"; - out.features_title = "Comparaison des fonctionnalités"; - out.features_feature = "Fonctionnalité"; - out.features_anon = "Utilisateur anonyme"; - out.features_registered = "Utilisateur enregistré"; - out.features_premium = "Utilisateur premium"; - out.features_notes = "Notes"; - - out.features_f_apps = "Accès aux applications principales"; - out.features_f_core = "Fonctions communes des applications"; - out.features_f_core_note = "Édition, Export, Historique, Liste d'utilisateurs, Chat"; - out.features_f_file0 = "Ouvrir des fichiers"; - out.features_f_file0_note = "Voir et télécharger des fichiers partagés par d'autres utilisateurs"; - out.features_f_cryptdrive0 = "Accès limité à CryptDrive"; - out.features_f_cryptdrive0_note = "Stockage dans votre navigateur des pads visités afin de pouvoir les retrouver plus tard."; - out.features_f_storage0 = "Durée de stockage limitée"; - out.features_f_storage0_note = "Les pads créés risquent d'être supprimés après trois mois d'inactivité."; - - out.features_f_anon = "Avantages des utilisateurs anonymes"; - out.features_f_anon_note = "Avec une meilleure ergonomie et plus de contrôle sur vos pads"; - out.features_f_cryptdrive1 = "Accès complet à CryptDrive"; - out.features_f_cryptdrive1_note = "Dossiers, dossiers partagés, modèles, tags"; - out.features_f_devices = "Vos pads sur tous vos appareils"; - out.features_f_devices_note = "Accéder à votre CryptDrive de partout grâce à votre compte utilisateur"; - out.features_f_social = "Applications sociales"; - out.features_f_social_note = "Créer un profil, utiliser un avatar, chat avec les contacts"; - out.features_f_file1 = "Importer et partager des fichiers"; - out.features_f_file1_note = "Partager des fichiers avec vos amis ou les intégrer dans vos pads"; - out.features_f_storage1 = "Stockage permanent (50Mo)"; - out.features_f_storage1_note = "Les pads stockés dans votre CryptDrive ne seront jamais supprimés pour cause d'inactivité."; - out.features_f_register = "S'enregistrer gratuitement"; - out.features_f_register_note = "Pas d'email ou d'information personnelle requis"; - - out.features_f_reg = "Avantages des utilisateurs enregistrés"; - out.features_f_reg_note = "Et aider au développement de CryptPad"; - out.features_f_storage2 = "Espace de stockage supplémentaire"; - out.features_f_storage2_note = "De 5 Go à 50 Go en fonction du plan sélectionné"; - out.features_f_support = "Support plus rapide"; - out.features_f_support_note = "Support email professionnel avec le plan Équipe"; - out.features_f_supporter = "Devenir un défenseur de la vie privée"; - out.features_f_supporter_note = "Nous aider à montrer que les logiciels protégeant les données personnelles devraient être la norme"; - out.features_f_subscribe = "S'abonner à un compte premium"; - out.features_f_subscribe_note = "Vous devez d'abord vous connecter à un compte CryptPad"; - - // faq.html - - out.faq_link = "FAQ"; - out.faq_title = "Foire Aux Questions"; - out.faq_whatis = "Qu'est-ce que CryptPad ?"; - out.faq = {}; - out.faq.keywords = { - title: 'Termes spéciaux', - pad: { - q: "Qu'est-ce qu'un pad ?", - a: 'Pad est un terme popularisé par Etherpad un éditeur collaboratif en temps-réel. ' + - 'Il désigne un document que vous pouvez modifier dans votre navigateur et, en général, vous pouvez voir les modifications effectuées par les autres utilisateurs de manière quasiment instantanée.' - }, - owned: { - q: "Qu'est-ce qu'un pad avec propriétaire ?", - a: "Être propriétaire d'un pad signifie que vous êtes identifié comme tel par le serveur avec à votre clé de signature publique.
    " + - "Le propriétaire d'un pad peut décider de supprimer ce pad du serveur de manière permanente, afin de le rendre inaccessible aux autres collaborateurs même s'ils possèdent le lien dans leur CryptDrive." - }, - expiring: { - q: "Qu'est-ce qu'un pad à durée de vie ?", - a: "Un pad à durée de vie est un pad créé avec une date définie à partir de laquelle il sera supprimé automatiquement du serveur. Ils peuvent être configurés pour avoir une durée de vie comprise entre une heure et cent mois. Le pad et tout son historique sera alors inaccessible, de manière permanente, même s'il est en cours d'édition à sa date d'expiration.
    " + - "Si un pad possède une date d'expiration, vous pouvez la vérifier en regardant les propriétés du pad, soit avec un clic-droit sur le pad dans votre CryptDrive, ou soit en cliquant sur Propriétés dans le sous-menu de la barre d'outils de l'application." - }, - tag: { - q: "Comment utiliser les mots-clés ?", - a: "Vous pouvez ajouter des mots-clés aux pads ou aux fichiers depuis votre CryptDrive et depuis le document en utilisant le bouton (Mots-clés) de la barre d'outils des éditeurs.
    " + - "Il est ensuite possible de rechercher des pads et des fichiers dans votre CryptDrive en tapant un mot-clé, précédé de #, dans la barre de recherche (exemple: #crypto)." - }, - template: { - q: "Qu'est-ce qu'un modèle ?", - a: "Un modèle est un pad qui peut être utilisé pour définir le contenu initial d'un nouveau pad du même type quand vous le créez.
    " + - "Les pads existant dans votre CryptDrive peuvent être transformés en tant que modèle en les déplaçant dans la catégorie Modèles du CryptDrive.
    " + - "Il est également possible de créer une copie d'un pad en tant que modèle en cliquant sur le bouton (Sauver en tant que modèle) dans la barre d'outils des éditeurs." - }, - abandoned: { - q: "Qu'est-ce qu'un pad abandonné?", - a: "Un pad abandonné est un pad qui n'est stocké dans le CryptDrive d'aucun utilisateur enregistré et qui n'a pas été modifié depuis 6 mois. Les documents abandonnés sont automatiquement supprimés du serveur." - }, - }; - out.faq.privacy = { - title: 'Confidentialité', - different: { - q: "Comment CryptPad est-il différent des autres services de pads ?", - a: "CryptPad chiffre les changements effectués dans vos pads avant de les envoyer au serveur pour qu'ils soient stockés, nous ne pouvons donc pas lire le contenu que vous avez tapé." - }, - me: { - q: "Quelles informations le serveur possède-t-il sur moi ?", - a: "Les administrateurs du serveur peuvent voir les adresses IP des utilisateurs de CryptPad.
    " + - "Nous n'enregistrons pas les pads visités par chaque adresse IP, mais nous le pouvons, bien que nous n'aurions pas accès au contenu déchiffré de ces pads.
    " + - "Si vous avez des inquiétudes à ce sujet, il est préférable de considérer que nous collectons ces informations puisque nous n'avons aucun moyen de prouver que ce n'est pas le cas.

    " + - "Nous collectons toutefois certaines données de télémétrie concernant la façon dont les gens utilisent CryptPad, par exemple la résolution de l'écran utilisé ou l'utilisation des boutons de la barre d'outils. Ces données nous aident à améliorer le produit, mais il est possible de désactiver l'envoi de telles informations au serveur en décochant la case Activer l'envoi de retours d'expérience dans vos Préférences.

    " + - "Enfin, nous gardons une trace des pads stockés dans le CryptDrive des utilisateurs afin de pouvoir imposer les limites de stockage, mais nous n'avons, encore une fois, pas accès au contenu ou au type de ces pads. Ces limites sont toutefois associées à la clé publique des utilisateurs, nous ne pouvons donc pas les relier à un nom ou une adresse email.

    " + - "Nous avons écrit un article de blog (en anglais) à ce sujet si vous souhaitez en apprendre davantage." - }, - register: { - q: "Qu'est-ce que le serveur apprend à mon sujet si je m'inscris ?", - a: "Nous ne demandons pas aux utilisateurs d'entrer une adresse email pour s'enregistrer, et le serveur ne connaît pas votre nom d'utilisateur ni votre mot de passe.
    " + - "Les formulaires d'inscription et de connexion génèrent à la place un ensemble de clés uniques, créées à partir de vos identifiants, et le serveur ne connaît donc que votre signature cryptographique.
    " + - "Nous utilisons cette information principalement pour mesurer combien de données vous avez stocké sur nos serveurs, afin de pouvoir limiter chaque utilisateur à son quota.

    " + - "Nous utilisons également notre fonctionnalité de retour d'expérience pour indiquer au serveur que quelqu'un avec votre adresse IP a créé un compte utilisateur, bien que nous ne sachions pas lequel. Cela nous permet de mesurer le nombre d'inscriptions sur CryptPad mais aussi de voir dans quelles régions du monde se trouvent les utilisateurs, afin de déterminer les langues dans lesquelles traduire CryptPad.

    " + - "Enfin, les utilisateurs enregistrés indiquent au serveur quels pads sont dans leur CryptDrive, afin que ces pads ne soient pas considérés comme abandonnés et ne soient donc pas supprimés pour inactivité." - }, - other: { - q: "Que peuvent apprendre les autres collaborateurs à mon sujet ?", - a: "Quand vous éditez un pad avec quelqu'un d'autre, vous communiquez en passant par notre serveur, nous sommes donc les seuls à connaître votre adresse IP.
    " + - "Les autres utilisateurs ont accès à votre pseudonyme, votre avatar, le lien vers votre profil (si vous en avez un) et votre clé publique (qui est utilisée pour le chiffrement des communications entre utilisateurs)." - }, - anonymous: { - q: "CryptPad me rend-il anonyme ?", - a: "Bien que CryptPad soit conçu pour en savoir le moins possible à votre sujet, il ne fournit pas un anonymat complet.
    " + - "Nos serveurs ont accès à votre adresse IP, mais vous pouvez la cacher en utilisant, par exemple, Tor pour accéder à CryptPad.
    " + - "Utiliser Tor sans changer votre comportement ne garantira toutefois pas votre anonymat, puisque notre serveur est en mesure d'identifier des utilisateurs avec leur identifiant cryptographique unique. Si vous utilisez le même compte utilisateur avec et sans Tor, il serait donc possible de désanonymiser votre session.

    " + - "Pour les utilisateurs qui n'ont pas besoin d'un niveau de confidentialité aussi élevé, Tor n'est pas nécessaire puisque CryptPad ne nécessite pas la saisie d'un nom réel, d'un numéro de téléphone ou même d'une adresse email comme de nombreux autres services." - }, - policy: { - q: "Avez-vous une politique de confidentialité des données ?", - a: 'Oui ! Elle est disponible ici.' - }, - }; - out.faq.security = { - title: 'Sécurité', - proof: { - q: "Comment utilisez-vous les preuves à divulgation nulle de connaissance (Zero Knowledge proofs) ?", - a: "Quand nous utilisons le terme Zero Knowledge, ce n'est pas une référence aux Zero Knowledge proofs, mais aux Services Web Zero Knowledge.
    " + - "Les Services Web Zero Knowledge chiffrent les données des utilisateurs dans le navigateur, de manière à ce que le serveur n'aie pas accès au contenu déchiffré ni aux clés de chiffrement.

    " + - "Nous avons établi une courte liste de Services Zero Knowledge sur notre blog." - }, - why: { - q: "Pourquoi devrais-je utiliser CryptPad ?", - a: "Notre position est que les services cloud ne devraient pas nécessiter l'accès à vos données afin que vous puissiez les partager avec vos amis ou vos collègues. Si vous utilisez un autre service pour le travail collaboratif et qu'il n'indique pas clairement que le serveur n'a pas accès aux informations, il est très probable que vos données soient utilisées pour faire du profit." - }, - compromised: { - q: "CryptPad me protège-t-il si mon ordinateur est compromis ?", - a: "Dans le cas où votre ordinateur ou téléphone serait volé, CryptPad vous permet de déclencher une déconnexion à distance de votre compte CryptPad sur tous les appareils, excepté celui sur lequel vous vous trouvez. Pour ce faire, vous pouvez cliquer sur Se déconnecter partout dans votre page de Préférences.
    " + - "Tous les appareils qui sont actuellement connectés sur CryptPad à votre compte seront déconnectés. Tous les appareils qui se sont connectés au compte et ne vous demandent plus vos identifiants vous forceront à vous identifier de nouveau lorsque vous visiterez CryptPad.
    " + - "Actuellement, la déconnexion à distance est implémentée dans votre navigateur et non avec le serveur. Cela signifie que cette fonction devrait être suffisante pour protéger vos données si vous oubliez de vous déconnecter après l'utilisation sur un ordinateur partagé, mais elle ne vous protègera pas des agences gouvernementales." - }, - crypto: { - q: "Quelle cryptographie utilisez-vous ?", - a: 'CryptPad est basé sur deux librairies open-source de cryptographie : tweetnacl.js et scrypt-async.js.
    ' + - 'Scrypt est une fonction de dérivation de clé basée sur un mot de passe. Nous l\'utilisons pour transformer votre nom d\'utilisateur et votre mot de passe en un unique ensemble de clés qui sécurise l\'accès à votre CryptDrive afin que vous seul puissiez accéder à votre liste de pads.
    ' + - 'Nous utilisons les outils de chiffrement xsalsa20-poly1305 et x25519-xsalsa20-poly1305 fournis par tweetnacl pour chiffrer vos pads et l\'historique du chat respectivement.' - } - }; - out.faq.usability = { - title: 'Utilisation', - register: { - q: "Qu'est-ce que je gagne en créant un compte utilisateur ?", - a: 'Les utilisateurs enregistrés ont accès à un certain nombre de nouvelles fonctionnalités inaccessibles aux utilisateurs non connectés. Un tableau récapitulatif est disponible ici.' - }, - share: { - q: "Comment partager des pads chiffrés avec mes amis ?", - a: "CryptPad stocke la clé secrète de chiffrement des pads après le symbole `#` dans l'URL. " + - "Tout ce qui se trouve après ce symbole n'est jamais envoyé au serveur, ainsi nous n'avons pas accès à vos clés de chiffrement. " + - "Partager le lien d'un pad revient donc à permettre la lecture ou la modification du contenu." - }, - remove: { - q: "J'ai supprimé un pad ou un fichier de mon CryptDrive, mais le contenu est encore disponible. Comment le supprimer ?", - a: "Seuls les pads avec propriétaire (introduits en février 2018) peuvent être supprimés du serveur. Ils ne peuvent d'ailleurs être supprimés du serveur que par leur propriétaire (l'utilisateur ayant créé le pad).
    " + - "Si vous n'êtes pas le créateur du pad, vous devrez demander au propriétaire de le supprimer pour vous.
    " + - "Pour les pads dont vous êtes le propriétaire, vous pouvez effectuer un clic-droit sur le pad dans votre CryptDrive, et sélectionner Supprimer du serveur." - }, - forget: { - q: "Que faire si j'oublie mon mot de passe ?", - a: "Malheureusement, si nous avions la possibilité de retrouver ou de modifier votre mot de passe, cela signifierait que nous avons accès à vos pads, ce n'est donc pas le cas.
    " + - "Si vous n'avez pas noté votre nom d'utilisateur et votre mot de passe, et que vous ne vous en souvenez pas, il est peut-être possible de retrouver l'accès à certains pads grâce à l'historique de votre navigateur." - }, - change: { - q: "Que faire si je souhaite changer de mot de passe ?", - a: "Il n'est actuellement pas possible de changer votre mot de passe sur CryptPad, mais nous comptons développer cette fonctionnalité très bientôt." - }, - devices: { - q: "Je suis connecté sur deux appareils mais avec deux CryptDrive différents, comment est-ce possible ?", - a: "Il est possible que vous ayez enregistré le même nom d'utilisateur 2 fois, mais avec des mots de passe différents.
    " + - "Puisque le serveur de CryptPad vous identifie avec une clé cryptographique et non avec votre nom d'utilisateur, il ne peut pas empêcher la création d'autres comptes avec le même nom. Ainsi, chaque utilisateur possède une combinaison nom d'utilisateur / mot de passe unique.
    " + - "Les utilisateurs enregistrés peuvent voir leur nom de compte en haut de la page de préférences." - }, - folder: { - q: "Puis-je partager des dossiers complets de mon CryptDrive ?", - a: "Nous travaillons sur l'ajout d'une fonctionnalité workgroups (ou groupes de travail), qui permettrait aux collaborateurs de partager une structure de type dossier, avec tous les pads contenus dans cette structure." - }, - feature: { - q: "Pouvez-vous ajouter une fonctionnalité particulière dont j'ai besoin ?", - a: 'Beaucoup de fonctionnalités de CryptPad existent parce que des utilisateurs les ont demandées.
    ' + - 'Notre page de contact liste les différentes manières de nous joindre.

    ' + - 'Malheureusement, nous ne pouvons pas garantir que nous allons implémenter toutes les fonctionnalités demandées.
    ' + - 'Si une fonctionnalité particulière est nécessaire pour votre organisation, vous pouvez sponsoriser son développement pour s\'assurer de sa réalisation. Veuillez contacter sales@cryptpad.fr pour plus d\'informations.

    ' + - "Si vous n'avez pas la possibilité de sponsoriser du développement, nous sommes toujours intéressés par de nouvelles idées et des retours d'expérience qui peuvent nous aider à améliorer CryptPad. N'hésitez pas à nous contacter, avec les méthodes données précédemment, à n'importe quel moment." - }, - }; - out.faq.other = { - title: "Autres questions", - pay: { - q: "Pourquoi payer alors que toutes les fonctionnalités sont gratuites ?", - a: "Un compte premium permet d'augmenter la limite de stockage dans le CryptDrive, ainsi que celle de ses amis (en savoir plus).
    " + - "En plus de ces avantages directs, l'abonnement premium permet aussi de financer le développement actif et de manière continue de CryptPad. Cela comprend la correction de bugs, l'ajout de nouvelles fonctionnalités et rendre plus facile l'hébergement de CryptPad par d'autres personnes.
    " + - "Avec un abonnement, vous aidez aussi à prouver aux autres fournisseurs de services que les gens sont prêts à supporter les technologies améliorant le respect de leur vie privée. Nous espérons qu'un jour, les entreprises ayant pour revenu principal la revente de données des utilisateurs soient de l'histoire ancienne.
    " + - "Enfin, nous offrons la plupart des fonctionnalités gratuitement parce que nous croyons que tout le monde mérite le respect de la vie privée. En souscrivant à un compte premium, vous nous aider à maintenir ces fonctionnalités basiques accessibles aux populations défavorisées." - }, - goal: { - q: "Quel est votre objectif ?", - a: "En développant une technologie de collaboration qui respecte la vie privée, nous espérons augmenter les attentes des utilisateurs en ce qui concerne les plateformes de services \"cloud\" et leur politique de confidentialité. Nous souhaitons que notre travail conduise les autres fournisseurs de services, quel que soit leur domaine, à égaler voire dépasser nos efforts.
    " + - "Malgré notre optimisme, nous savons que la plupart du Web est financé par les publicités ciblées. Il y a encore beaucoup de travail à effectuer que l'on peut faire de nous-mêmes, et nous apprécions le support, la promotion et les contributions de notre communauté envers cet objectif." - }, - jobs: { - q: "Est-ce que vous embauchez ?", - a: 'Oui ! Vous pouvez envoyer un email à jobs@xwiki.com.' - }, - host: { - q: "Pouvez-vous m'aider à installer ma propre instance de CryptPad ?", - a: 'Nous serions heureux de fournir du support pour l\'installation de CryptPad au sein de votre organisation. Veuillez contacter sales@cryptpad.fr pour plus d\'informations.' - }, - revenue: { - q: "Comment participer au système de partage des revenus ?", - a: "Si vous possédez votre propre instance de CryptPad et que vous souhaitez activer les comptes payant et partager les revenus avec les développeurs, votre serveur devra être configuré comme un service partenaire.
    " + - 'Dans votre répertoire CryptPad, le fichier config.example.js devrait contenir des explications concernant les étapes à suivre pour configurer votre serveur. Vous devrez aussi contacter sales@cryptpad.fr pour vérifier que votre serveur est configuré correctement et pour discuter des méthodes de paiement.' - }, - }; - // terms.html - - out.tos_title = "Conditions d'utilisation de CryptPad"; - out.tos_legal = "Veuillez ne pas être malveillant, abusif, ou faire quoi que ce soit d'illégal."; - out.tos_availability = "Nous espérons que vous trouvez ce service utile, mais nous ne pouvons garantir ses performances et disponibilités. Nous vous recommandons d'exporter vos données régulièrement."; - out.tos_e2ee = "Le contenu sur CryptPad peuvent être lus et modifiés par quiconque est en mesure de deviner ou d'obtenir de quelque manière que ce soit l'identificateur de fragment du pad. Nous vous recommandons d'utiliser des technologies de messagerie chiffrées de bout à bout (end-to-end encryption ou e2ee) pour partager les liens, et déclinons toute responsabilité dans le cas ou un tel lien serait divulgué."; - out.tos_logs = "Les meta-données fournies par votre navigateur au serveur peuvent être enregistrées dans le but de maintenir le service."; - out.tos_3rdparties = "Nous ne fournissons aucune donnée individuelle à des tierces parties à moins d'y être contraints par la loi."; - - // 404 page - out.four04_pageNotFound = "Nous n'avons pas trouvé la page que vous cherchez."; - - // Header.html - - out.updated_0_header_logoTitle = 'Retourner vers votre CryptDrive'; - out.header_logoTitle = out.updated_0_header_logoTitle; - out.header_homeTitle = "Aller sur la page d'accueil"; - - // Initial states - - out.help = {}; - - out.help.title = "Pour bien démarrer"; - out.help.generic = { - more: 'Apprenez-en davantage sur le fonctionnement de CryptPad en lisant notre FAQ', - share: 'Utilisez le menu partage () pour générer un lien d\'accès ou d\'édition pad', - //stored: 'Chaque pad que vous visitez est stocké automatiquement dans votre CryptDrive', - save: "Tous les changements effectués sont enregistrés automatiquement" - }; - - out.help.text = { - formatting: 'Vous pouvez afficher ou cacher la barre d\'outils de texte en cliquant sur les boutons ou ', - embed: 'Les utilisateurs enregistrés peuvent intégrer un fichier de leur CryptDrive en utilisant le bouton ', - history: 'Vous pouvez utiliser l\'historique () pour voir ou restaurer les versions précédentes du pad' - }; - - out.help.pad = { - export: 'Vous pouvez exporter le contenu en tant que PDF avec le bouton de la barre d\'outils de mise en forme du texte' - }; - - out.help.code = { - modes: 'Utilisez le sous-menu pour changer le mode de coloration syntaxique ou le thème de couleur' - }; - - out.help.beta = { - warning: 'Cet éditeur est encore expérimental, vous pouvez signaler tout problème rencontré sur GitHub' - }; - out.help.oo = { - access: "L'accès à cette application est restreint aux utilisateurs enregistrés", - }; - - out.help.slide = { - markdown: 'Rédigez vos slides en Markdown et séparez les avec une ligne contenant ---', - present: 'Démarrez la présentation en utilisant le bouton ', - settings: 'Modifiez les préférences de la présentation (image de fond, transitions, numéro de pages, ...) avec le bouton dans le sous-menu ', - colors: 'Modifiez la couleur du texte ou du fond en utilisant les boutons et ' - }; - - out.help.poll = { - decisions: 'Prenez des décisions en privé avec des personnes de confiance', - options: 'Proposez des options et exprimez vos préférences', - choices: 'Cliquez sur les cellules de votre colonne pour modifier leur valeur entre oui (), peut-être (~) ou non ()', - submit: 'Cliquez sur Ajouter pour rendre vos choix visibles aux autres' - }; - - out.help.whiteboard = { - colors: 'Double-cliquez sur les couleurs pour changer la palette', - mode: 'Vous pouvez désactiver le mode dessin pour déplacer, redimensionner, ou supprimer des éléments du dessin', - embed: 'Intégrez des images de votre disque ou de votre CryptDrive et exporter le contenu en tant que PNG sur votre disque ou votre CryptDrive ' - }; - - out.help.kanban = { - add: 'Ajoutez un tableau en utilisant le bouton dans le coin supérieur-droit', - task: 'Déplacez les éléments en les faisant glisser d\'un tableau à l\'autre', - color: 'Modifiez les couleurs en cliquant sur les parties colorées à côté du titre de chaque tableau' - }; - - out.initialState = [ - '

    ', - 'Voici CryptPad, l\'éditeur collaboratif en temps-réel Zero Knowledge. Tout est sauvegardé dés que vous le tapez.', - '
    ', - 'Partagez le lien vers ce pad avec des amis ou utilisez le bouton pour obtenir le lien de lecture-seule, qui permet la lecture mais non la modification.', - '

    ', - ].join(''); - - out.codeInitialState = [ - '# Éditeur de code collaboratif et Zero Knowledge de CryptPad\n', - '\n', - '* Ce que vous tapez ici est chiffré de manière que seules les personnes avec le lien peuvent y accéder.\n', - '* Vous pouvez choisir le langage de programmation pour la coloration syntaxique, ainsi que le thème de couleurs, dans le coin supérieur droit.' - ].join(''); - - out.slideInitialState = [ - '# CryptSlide\n', - '1. Écrivez le contenu de votre présentation avec la syntaxe Markdown\n', - ' - Apprenez à utiliser Markdown en cliquant [ici](http://www.markdowntutorial.com/)\n', - '2. Séparez vos slides avec ---\n', - '3. Cliquez sur la bouton "lecture" pour afficher le résultat en mode présentation', - ' - La présentation est mise à jour en temps-réel' - ].join(''); - - out.driveReadmeTitle = "Qu'est-ce que CryptPad ?"; - out.readme_welcome = "Bienvenue dans CryptPad !"; - out.readme_p1 = "Bienvenue dans CryptPad, le lieu où vous pouvez prendre des notes seul ou avec des amis."; - out.readme_p2 = "Ce pad va vous donner un aperçu de la manière dont vous pouvez utiliser CryptPad pour prendre des notes, les organiser et travailler en groupe sur celles-ci."; - out.readme_cat1 = "Découvrez votre CryptDrive"; - out.readme_cat1_l1 = "Créer un pad : Dans votre CryptDrive, cliquez sur {0} puis {1} et vous obtenez un nouveau pad."; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "Ouvrir des pads depuis votre CryptDrive : Double-cliquez sur l'icone d'un pad pour l'ouvrir."; - out.readme_cat1_l3 = "Organiser vos pads : Quand vous êtes connecté, tous les pads auquel vous accédez sont ajoutés dans la section {0} de votre CryptDrive."; // 0: Unsorted files - out.readme_cat1_l3_l1 = "Vous pouvez cliquer et faire glisser des fichiers dans des dossiers dans la section {0} de votre CryptDrive, et créer de nouveaux dossiers."; // 0: Documents - out.readme_cat1_l3_l2 = "N'hésitez pas à utiliser le clic droit sur les icones puisque des menus sont souvent disponibles."; - out.readme_cat1_l4 = "Déplacer des pads vers la corbeille : Vous pouvez cliquer et faire glisser vos pads dans la {0} de la même manière que vous pouvez les déposer dans des dossiers."; // 0: Trash - out.readme_cat2 = "Créer des pads comme un pro"; - out.edit = "éditer"; - out.view = "voir"; - out.readme_cat2_l1 = "Le bouton {0} dans votre pad vous permet de donner l'accès à vos collaborateurs que ce soit pour l'{1} ou pour le {2}."; // 0: Share, 1: edit, 2: view - out.readme_cat2_l2 = "Vous pouvez changer le titre d'un pad en cliquant sur le crayon"; - out.readme_cat3 = "Découvrez les autres applications CryptPad"; - out.readme_cat3_l1 = "Avec l'éditeur de code de CryptPad, vous pouvez collaborer sur du code comme Javascript ou des langages comme HTML ou Markdown."; - out.readme_cat3_l2 = "Avec l'éditeur de présentations de CryptPad, vous pouvez réaliser des présentations rapides en utilisant Markdown"; - out.readme_cat3_l3 = "Avec CryptPoll vous pouvez créer rapidement des sondages, et en particulier plannifier des meetings qui rentrent dans l'agenda de tout ceux qui souhaitent participer."; - - // Tips - out.tips = {}; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` et `ctrl+u` sont des raccourcis rapides pour mettre en gras, en italique ou souligner."; - out.tips.indent = "Dans les listes à puces ou numérotées, vous pouvez utiliser `Tab` ou `Maj+Tab` pour augmenter ou réduire rapidement l'indentation."; - out.tips.store = "Dès que vous ouvrez un nouveau pad, il est automatiquement stocké dans votre CryptDrive si vous êtes connecté."; - out.tips.marker = "Vous pouvez surligner du texte dans un pad en utilisant l'option \"marker\" dans le menu déroulant des styles."; - out.tips.driveUpload = "Les utilisateurs enregistrés peuvent importer des fichiers en les faisant glisser et en les déposant dans leur CryptDrive."; - out.tips.filenames = "Vous pouvez renommer les fichiers de votre CryptDrive, ce nom ne sera visible que par vous."; - out.tips.drive = "Les utilisateurs enregistrés peuvent organiser leurs fichiers dans leur CryptDrive, accessible depuis l'icône CryptPad dans le coin supérieur gauche des pads."; - out.tips.profile = "Les utilisateurs enregistrés peuvent créer un profil depuis le menu utilisateur, dans le coin supérieur droit."; - out.tips.avatars = "Vous pouvez uploader un avatar dans votre profil. Les autres personnes le verront dans la liste d'utilisateurs des pads."; - out.tips.tags = "Ajoutez des mots-clés aux pads et effectuer une recherche commençant par # dans votre CryptDrive pour les retrouver."; - - out.feedback_about = "Si vous lisez ceci, vous vous demandez probablement pourquoi CryptPad envoie des requêtes vers des pages web quand vous réalisez certaines actions."; - out.feedback_privacy = "Nous prenons au sérieux le respect de votre vie privée, et en même temps nous souhaitons rendre CryptPad très simple à utiliser. Nous utilisons cette page pour comprendre quelles fonctionnalités dans l'interface comptent le plus pour les utilisateurs, en l'appelant avec un paramètre spécifiant quelle action a été réalisée."; - out.feedback_optout = "Si vous le souhaitez, vous pouvez désactiver ces requêtes en vous rendant dans votre page de préférences, où vous trouverez une case à cocher pour désactiver le retour d'expérience."; - - // Creation page - out.creation_404 = "Ce pad n'existe plus. Vous pouvez créer un nouveau pad en utilisant le formulaire suivant."; - out.creation_ownedTitle = "Type de pad"; - out.creation_owned = "Être propriétaire de ce pad"; - out.creation_ownedTrue = "Être propriétaire"; - out.creation_ownedFalse = "Pas de propriétaire"; - out.creation_owned1 = "Être propriétaire d'un pad signifie que vous pouvez le supprimer du serveur à tout moment. Une fois supprimé, il disparaît du CryptDrive des autres utilisateurs."; - out.creation_owned2 = "Un pad sans propriétaire ne peut pas être supprimé du serveur à moins d'avoir dépassé son éventuelle date d'expiration."; - out.creation_expireTitle = "Durée de vie"; - out.creation_expire = "Ajouter une durée de vie"; - out.creation_expireTrue = "Ajouter durée de vie"; - out.creation_expireFalse = "Illimité"; - out.creation_expireHours = "Heure(s)"; - out.creation_expireDays = "Jour(s)"; - out.creation_expireMonths = "Mois"; - out.creation_expire1 = "Un pad illimité ne sera pas supprimé du serveur à moins que son propriétaire ne le décide."; - out.creation_expire2 = "Un pad à durée de vie sera supprimé automatiquement du serveur et du CryptDrive des utilisateurs lorsque cette durée sera dépassée."; - out.creation_password = "Ajouter un mot de passe"; - out.creation_noTemplate = "Pas de modèle"; - out.creation_newTemplate = "Nouveau modèle"; - out.creation_create = "Créer"; - out.creation_saveSettings = "Ne plus me demander"; - out.creation_settings = "Voir davantage de préférences"; - out.creation_rememberHelp = "Ouvrez votre page de Préférences pour voir ce formulaire à nouveau."; - // Properties about creation data - out.creation_owners = "Propriétaires"; - out.creation_ownedByOther = "Appartient à un autre utilisateur"; - out.creation_noOwner = "Pas de propriétaire"; - out.creation_expiration = "Date d'expiration"; - out.creation_passwordValue = "Mot de passe"; - out.creation_propertiesTitle = "Disponibilité"; - out.creation_appMenuName = "Mode avancé (Ctrl + E)"; - out.creation_newPadModalDescription = "Cliquez sur un type de pad pour le créer. Vous pouvez aussi appuyer sur Tab pour sélectionner un type et appuyer sur Entrée pour valider."; - out.creation_newPadModalDescriptionAdvanced = "Cochez la case si vous souhaitez voir l'écran de création de pads (pour les pads avec propriétaire ou à durée de vie). Vous pouvez appuyer sur Espace pour changer sa valeur."; - out.creation_newPadModalAdvanced = "Afficher l'écran de création de pads"; - - // Password prompt on the loadind screen - out.password_info = "Le pad auquel vous essayez d'accéder est protégé par un mot de passe. Entrez le bon mot de passe pour accéder à son contenu."; - out.password_error = "Pad introuvable !
    Cette erreur peut provenir de deux facteurs. Soit le mot de passe est faux, soit le pad a été supprimé du serveur."; - out.password_placeholder = "Tapez le mot de passe ici..."; - out.password_submit = "Valider"; - out.password_show = "Afficher"; - - // Change password in pad properties - out.properties_addPassword = "Ajouter un mot de passe"; - out.properties_changePassword = "Modifier le mot de passe"; - out.properties_confirmNew = "Êtes-vous sûr ? Ajouter un mot de passe changera l'URL de ce pad et supprimera son historique. Les utilisateurs ne connaissant pas le nouveau mot de passe perdront l'accès au pad."; - out.properties_confirmChange = "Êtes-vous sûr ? Changer le mot de passe supprimera l'historique de ce pad. Les utilisateurs ne connaissant pas le nouveau mot de passe perdront l'accès au pad."; - out.properties_passwordSame = "Le nouveau mot de passe doit être différent de celui existant."; - out.properties_passwordError = "Une erreur est survenue lors de la modification du mot de passe. Veuillez réessayer."; - out.properties_passwordWarning = "Le mot de passe a été modifié avec succès mais nous n'avons pas réussi à mettre à jour votre CryptDrive avec les nouvelles informations. Vous devrez peut-être supprimer manuellement l'ancienne version de ce pad.
    Appuyez sur OK pour recharger le pad et mettre à jour vos droits d'accès."; - out.properties_passwordSuccess = "Le mot de passe a été modifié avec succès.
    Appuyez sur OK pour mettre à jour vos droits d'accès."; - out.properties_changePasswordButton = "Valider"; - - // New share modal - out.share_linkCategory = "Partage"; - out.share_linkAccess = "Droits d'accès"; - out.share_linkEdit = "Édition"; - out.share_linkView = "Lecture-seule"; - out.share_linkOptions = "Options du lien"; - out.share_linkEmbed = "Mode intégration (barre d'outils cachée)"; - out.share_linkPresent = "Mode présentation (sections d'édition cachées)"; - out.share_linkOpen = "Ouvrir le lien"; - out.share_linkCopy = "Copier le lien"; - out.share_embedCategory = "Intégration"; - out.share_mediatagCopy = "Copier le mediatag"; - - // Loading info - out.loading_pad_1 = "Initialisation du pad"; - out.loading_pad_2 = "Chargement du contenu du pad"; - out.loading_drive_1 = "Chargement des données"; - out.loading_drive_2 = "Mise à jour du format des données"; - out.loading_drive_3 = "Vérification de l'intégrité des données"; - - // Shared folders - out.sharedFolders_forget = "Ce pad est stocké uniquement dans un dossier partagé. Vous ne pouvez pas le déplacer dans votre corbeille. Si vous souhaitez le supprimer, vous pouvez utiliser l'application CryptDrive."; - out.sharedFolders_duplicate = "Certains pads que vous essayez de déplacer sont déjà partagés dans le dossier de destination."; - out.sharedFolders_create = "Créer un dossier partagé"; - out.sharedFolders_create_name = "Nom du dossier"; - out.sharedFolders_create_owned = "Être propriétaire du dossier"; - out.sharedFolders_create_password = "Mot de passe du dossier"; - out.sharedFolders_share = "Partager cette URL avec d'autres utilisateurs enregistrés leur donne accès au dossier partagé. Une fois l'URL ouverte, le dossier partagé sera ajouté au répertoire racine de leur CryptDrive."; - - out.chrome68 = "Il semblerait que vous utilisiez le navigateur Chrome version 68. Ce navigateur contient un bug rendant certaines pages entièrement blanches après quelques secondes ou bloquant les clics. Pour corriger ce problème, vous pouvez vous déplacer vers un nouvel onglet et revenir ou vous pouvez essayer de faire défiler la page. Ce bug devrait être corrigé dans la prochaine version du navigateur."; - - // Manual pad storage popup - out.autostore_file = "fichier"; - out.autostore_sf = "dossier"; - out.autostore_pad = "pad"; - out.autostore_notstored = "Ce {0} n'est pas dans votre CryptDrive. Souhaitez-vous le stocker ?"; - out.autostore_settings = "Vous pouvez activer le stockage automatique des pads dans vos Préférences !"; - out.autostore_store = "Stocker"; - out.autostore_hide = "Ne pas stocker"; - out.autostore_error = "Erreur : nous n'avons pas réussi à stocker ce pad, veuillez ré-essayer."; - out.autostore_saved = "Ce pad a été stocké avec succès dans votre CryptDrive !"; - out.autostore_forceSave = "Stocker le fichier dans votre CryptDrive"; // File upload modal - out.autostore_notAvailable = "Vous devez stocker ce pad dans votre CryptDrive avant de pouvoir utiliser cette fonctionnalité."; - - // Crowdfunding messages - out.crowdfunding_home1 = "CryptPad a besoin d'aide !"; - out.crowdfunding_home2 = "Cliquez sur le bouton pour découvrir notre campagne de financement participatif."; - out.crowdfunding_button = "Soutenir CryptPad"; - - out.crowdfunding_popup_text = "

    Aider CryptPad

    " + - "Pour vous assurer que CryptPad soit activement développé, nous vous invitons à supporter le projet via la " + - 'page OpenCollective, où vous pouvez trouver notre Roadmap et nos objectifs de financement.'; - out.crowdfunding_popup_yes = "Voir la page"; - out.crowdfunding_popup_no = "Pas maintenant"; - out.crowdfunding_popup_never = "Ne plus demander"; - - return out; -}); diff --git a/www/common/translations/old/messages.js b/www/common/translations/old/messages.js deleted file mode 100644 index 2d6036232..000000000 --- a/www/common/translations/old/messages.js +++ /dev/null @@ -1,1363 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - out.main_title = "CryptPad: Zero Knowledge, Collaborative Real Time Editing"; - - out.type = {}; - out.type.pad = 'Rich text'; - out.type.code = 'Code'; - out.type.poll = 'Poll'; - out.type.kanban = 'Kanban'; - out.type.slide = 'Presentation'; - out.type.drive = 'CryptDrive'; - out.type.whiteboard = 'Whiteboard'; - out.type.file = 'File'; - out.type.media = 'Media'; - out.type.todo = "Todo"; - out.type.contacts = 'Contacts'; - out.type.sheet = 'Spreadsheet (Beta)'; - //out.type.ooslide = 'OnlyOffice Slide'; - //out.type.oodoc = 'OnlyOffice Doc'; - - out.button_newpad = 'New Rich Text pad'; - out.button_newcode = 'New Code pad'; - out.button_newpoll = 'New Poll'; - out.button_newslide = 'New Presentation'; - out.button_newwhiteboard = 'New Whiteboard'; - out.button_newkanban = 'New Kanban'; - - // NOTE: Remove updated_0_ if we need an updated_1_ - out.updated_0_common_connectionLost = "Server Connection Lost
    You're now in read-only mode until the connection is back."; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = 'Unable to connect to the websocket server...'; - out.typeError = "This pad is not compatible with the selected application"; - out.onLogout = 'You are logged out, {0}click here{1} to log in
    or press Escape to access your pad in read-only mode.'; - out.wrongApp = "Unable to display the content of that realtime session in your browser. Please try to reload that page."; - out.padNotPinned = 'This pad will expire after 3 months of inactivity, {0}login{1} or {2}register{3} to preserve it.'; - out.anonymousStoreDisabled = "The webmaster of this CryptPad instance has disabled the store for anonymous users. You have to log in to be able to use CryptDrive."; - out.expiredError = 'This pad has reached its expiration time and is no longer available.'; - out.deletedError = 'This pad has been deleted by its owner and is no longer available.'; - out.inactiveError = 'This pad has been deleted due to inactivity. Press Esc to create a new pad.'; - out.chainpadError = 'A critical error occurred when updating your content. This page is in read-only mode to make sure you won\'t lose your work.
    ' + - 'Hit Esc to continue to view this pad, or reload to try editing again.'; - out.errorCopy = ' You can still copy the content to another location by pressing Esc.
    Once you leave this page, it will disappear forever!'; - out.errorRedirectToHome = 'Press Esc to be redirected to your CryptDrive.'; - out.newVersionError = "A new version of CryptPad is available.
    " + - "Reload to use the new version, or press escape to access your content in offline mode."; - - out.loading = "Loading..."; - out.error = "Error"; - out.saved = "Saved"; - out.synced = "Everything is saved"; - out.deleted = "Pad deleted from your CryptDrive"; - out.deletedFromServer = "Pad deleted from the server"; - - out.mustLogin = "You must be logged in to access this page"; - out.disabledApp = "This application has been disabled. Contact the administrator of this CryptPad for more information."; - - out.realtime_unrecoverableError = "An unrecoverable error has occurred. Click OK to reload."; - - out.disconnected = 'Disconnected'; - out.synchronizing = 'Synchronizing'; - out.reconnecting = 'Reconnecting'; - out.typing = "Editing"; - out.initializing = "Initializing..."; - out.forgotten = 'Moved to the trash'; - out.errorState = 'Critical error: {0}'; - out.lag = 'Lag'; - out.readonly = 'Read only'; - out.anonymous = "Anonymous"; - out.yourself = "Yourself"; - out.anonymousUsers = "anonymous editors"; - out.anonymousUser = "anonymous editor"; - out.users = "Users"; - out.and = "And"; - out.viewer = "viewer"; - out.viewers = "viewers"; - out.editor = "editor"; - out.editors = "editors"; - out.userlist_offline = "You're currently offline, the user list is not available."; - - out.language = "Language"; - - out.comingSoon = "Coming soon..."; - - out.newVersion = 'CryptPad has been updated!
    ' + - 'Check out what\'s new in the latest version:
    '+ - 'Release notes for CryptPad {0}'; - - out.upgrade = "Upgrade"; - out.upgradeTitle = "Upgrade your account to increase the storage limit"; - - out.upgradeAccount = "Upgrade account"; - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - - out.supportCryptpad = "Support CryptPad"; - - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.greenLight = "Everything is working fine"; - out.orangeLight = "Your slow connection may impact your experience"; - out.redLight = "You are disconnected from the session"; - - out.pinLimitReached = "You've reached your storage limit"; - out.updated_0_pinLimitReachedAlert = "You've reached your storage limit. New pads won't be stored in your CryptDrive.
    " + - 'You can either remove pads from your CryptDrive or subscribe to a premium offer to increase your limit.'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinLimitReachedAlertNoAccounts = out.pinLimitReached; - out.pinLimitNotPinned = "You've reached your storage limit.
    "+ - "This pad is not stored in your CryptDrive."; - out.pinLimitDrive = "You've reached your storage limit.
    " + - "You can't create new pads."; - - out.moreActions = "More actions"; - - out.importButton = "Import"; - out.importButtonTitle = 'Import a pad from a local file'; - - out.exportButton = "Export"; - out.exportButtonTitle = 'Export this pad to a local file'; - out.exportPrompt = 'What would you like to name your file?'; - - out.changeNamePrompt = 'Change your name (leave empty to be anonymous): '; - out.user_rename = "Change display name"; - out.user_displayName = "Display name"; - out.user_accountName = "Account name"; - - out.clickToEdit = "Click to edit"; - out.saveTitle = "Save the title (enter)"; - - out.forgetButton = "Delete"; - out.forgetButtonTitle = 'Move this pad to the trash'; - out.forgetPrompt = 'Clicking OK will move this pad to your trash. Are you sure?'; - out.movedToTrash = 'That pad has been moved to the trash.
    Access my Drive'; - - out.shareButton = 'Share'; - out.shareSuccess = 'Copied link to clipboard'; - - out.userListButton = "User list"; - - out.chatButton = "Chat"; - - out.userAccountButton = "Your account"; - - out.newButton = 'New'; - out.newButtonTitle = 'Create a new pad'; - out.uploadButton = 'Upload files'; - out.uploadButtonTitle = 'Upload a new file to the current folder'; - - out.saveTemplateButton = "Save as template"; - out.saveTemplatePrompt = "Choose a title for the template"; - out.templateSaved = "Template saved!"; - out.selectTemplate = "Select a template or press escape"; - out.useTemplate = "Start with a template?"; //Would you like to "You have available templates for this type of pad. Do you want to use one?"; - out.useTemplateOK = 'Pick a template (Enter)'; - out.useTemplateCancel = 'Start fresh (Esc)'; - out.template_import = "Import a template"; - out.template_empty = "No template available"; - - out.previewButtonTitle = "Display or hide the Markdown preview mode"; - - out.presentButtonTitle = "Enter presentation mode"; - - out.backgroundButtonTitle = 'Change the background color in the presentation'; - out.colorButtonTitle = 'Change the text color in presentation mode'; - - out.propertiesButton = "Properties"; - out.propertiesButtonTitle = 'Get pad properties'; - - out.printText = "Print"; - out.printButton = "Print (enter)"; - out.printButtonTitle2 = "Print your document or export it as a PDF file"; - out.printOptions = "Layout options"; - out.printSlideNumber = "Display the slide number"; - out.printDate = "Display the date"; - out.printTitle = "Display the pad title"; - out.printCSS = "Custom style rules (CSS):"; - out.printTransition = "Enable transition animations"; - out.printBackground = "Use a background image"; - out.printBackgroundButton = "Pick an image"; - out.printBackgroundValue = "Current background: {0}"; - out.printBackgroundNoValue = "No background image displayed"; - out.printBackgroundRemove = "Remove this background image"; - - out.filePickerButton = "Embed a file stored in CryptDrive"; - out.filePicker_close = "Close"; - out.filePicker_description = "Choose a file from your CryptDrive to embed it or upload a new one"; - out.filePicker_filter = "Filter files by name"; - out.or = 'or'; - - out.tags_title = "Tags (for you only)"; - out.tags_add = "Update this page's tags"; - out.tags_searchHint = "Find files by their tags by searching in your CryptDrive"; - out.tags_searchHint = "Start a search with # in your CryptDrive to find your tagged pads."; - out.tags_notShared = "Your tags are not shared with other users"; - out.tags_duplicate = "Duplicate tag: {0}"; - out.tags_noentry = "You can't tag a deleted pad!"; - - out.slideOptionsText = "Options"; - out.slideOptionsTitle = "Customize your slides"; - out.slideOptionsButton = "Save (enter)"; - out.slide_invalidLess = "Invalid custom style"; - - out.languageButton = "Language"; - out.languageButtonTitle = "Select the language to use for the syntax highlighting"; - out.themeButton = "Theme"; - out.themeButtonTitle = "Select the color theme to use for the code and slide editors"; - - out.editShare = "Editing link"; - out.editShareTitle = "Copy the editing link to clipboard"; - out.editOpen = "Open editing link in a new tab"; - out.editOpenTitle = "Open this pad in editing mode in a new tab"; - out.viewShare = "Read-only link"; - out.viewShareTitle = "Copy the read-only link to clipboard"; - out.viewOpen = "Open read-only link in a new tab"; - out.viewOpenTitle = "Open this pad in read-only mode in a new tab"; - out.fileShare = "Copy link"; - out.getEmbedCode = "Get embed code"; - out.viewEmbedTitle = "Embed the pad in an external page"; - out.viewEmbedTag = "To embed this pad, include this iframe in your page wherever you want. You can style it using CSS or HTML attributes."; - out.fileEmbedTitle = "Embed the file in an external page"; - out.fileEmbedScript = "To embed this file, include this script once in your page to load the Media Tag:"; - out.fileEmbedTag = "Then place this Media Tag wherever in your page you would like to embed:"; - - out.notifyJoined = "{0} has joined the collaborative session"; - out.notifyRenamed = "{0} is now known as {1}"; - out.notifyLeft = "{0} has left the collaborative session"; - - out.ok = 'OK'; - out.okButton = 'OK (enter)'; - - out.cancel = "Cancel"; - out.cancelButton = 'Cancel (esc)'; - out.doNotAskAgain = "Don't ask me again (Esc)"; - - out.show_help_button = "Show help"; - out.hide_help_button = "Hide help"; - out.help_button = "Help"; - - out.historyText = "History"; - out.historyButton = "Display the document history"; - out.history_next = "Newer version"; - out.history_prev = "Older version"; - out.history_loadMore = "Load more history"; - out.history_closeTitle = "Close the history"; - out.history_restoreTitle = "Restore the selected version of the document"; - out.history_restorePrompt = "Are you sure you want to replace the current version of the document by the displayed one?"; - out.history_restoreDone = "Document restored"; - out.history_version = "Version:"; - - // Ckeditor - out.openLinkInNewTab = "Open Link in New Tab"; - out.pad_mediatagTitle = "Media-Tag settings"; - out.pad_mediatagWidth = "Width (px)"; - out.pad_mediatagHeight = "Height (px)"; - out.pad_mediatagRatio = "Keep ratio"; - out.pad_mediatagBorder = "Border width (px)"; - out.pad_mediatagPreview = "Preview"; - out.pad_mediatagImport = 'Save in your CryptDrive'; - out.pad_mediatagOptions = 'Image properties'; - - // Kanban - out.kanban_newBoard = "New board"; - out.kanban_item = "Item {0}"; // Item number for initial content - out.kanban_todo = "To Do"; - out.kanban_done = "Done"; - out.kanban_working = "In progress"; - out.kanban_deleteBoard = "Are you sure you want to delete this board?"; - out.kanban_addBoard = "Add a board"; - out.kanban_removeItem = "Remove this item"; - out.kanban_removeItemConfirm = "Are you sure you want to delete this item?"; - - // Polls - - out.poll_title = "Zero Knowledge Date Picker"; - out.poll_subtitle = "Zero Knowledge, realtime scheduling"; - - out.poll_p_save = "Your settings are updated instantly, so you never need to save."; - out.poll_p_encryption = "All your input is encrypted so only people who have the link can access it. Even the server cannot see what you change."; - - out.wizardLog = "Click the button in the top left to return to your poll"; - out.wizardTitle = "Use the wizard to create your poll"; - out.wizardConfirm = "Are you really ready to add these options to your poll?"; - - out.poll_publish_button = "Publish"; - out.poll_admin_button = "Admin"; - out.poll_create_user = "Add a new user"; - out.poll_create_option = "Add a new option"; - out.poll_commit = "Submit"; - - out.poll_closeWizardButton = "Close wizard"; - out.poll_closeWizardButtonTitle = "Close wizard"; - out.poll_wizardComputeButton = "Compute Options"; - out.poll_wizardClearButton = "Clear Table"; - out.poll_wizardDescription = "Automatically create a number of options by entering any number of dates and times segments"; - out.poll_wizardAddDateButton = "+ Dates"; - out.poll_wizardAddTimeButton = "+ Times"; - - out.poll_optionPlaceholder = "Option"; - out.poll_userPlaceholder = "Your name"; - out.poll_removeOption = "Are you sure you'd like to remove this option?"; - out.poll_removeUser = "Are you sure you'd like to remove this user?"; - - out.poll_titleHint = "Title"; - out.poll_descriptionHint = "Describe your poll, and use the ✓ (publish) button when you're done.\n" + - "The description can be written using markdown syntax and you can embed media elements from your CryptDrive.\n" + - "Anyone with the link can change the description, but this is discouraged."; - - out.poll_remove = "Remove"; - out.poll_edit = "Edit"; - out.poll_locked = "Locked"; - out.poll_unlocked = "Unlocked"; - - out.poll_bookmark_col = 'Bookmark this column so that it is always unlocked and displayed at the beginning for you'; - out.poll_bookmarked_col = 'This is your bookmarked column. It will always be unlocked and displayed at the beginning for you.'; - out.poll_total = 'TOTAL'; - - out.poll_comment_list = "Comments"; - out.poll_comment_add = "Add a comment"; - out.poll_comment_submit = "Send"; - out.poll_comment_remove = "Delete this comment"; - out.poll_comment_placeholder = "Your comment"; - - out.poll_comment_disabled = "Publish this poll using the ✓ button to enable the comments."; - - // OnlyOffice - out.oo_reconnect = "The server connection is back. Click OK to reload and continue the edition."; - - // Canvas - out.canvas_clear = "Clear"; - out.canvas_delete = "Delete selection"; - out.canvas_disable = "Disable draw"; - out.canvas_enable = "Enable draw"; - out.canvas_width = "Width"; - out.canvas_opacity = "Opacity"; - out.canvas_opacityLabel = "Opacity: {0}"; - out.canvas_widthLabel = "Width: {0}"; - out.canvas_saveToDrive = "Save this image as a file in your CryptDrive"; - out.canvas_currentBrush = "Current brush"; - out.canvas_chooseColor = "Choose a color"; - out.canvas_imageEmbed = "Embed an image from your computer"; - - // Profile - out.profileButton = "Profile"; // dropdown menu - out.profile_urlPlaceholder = 'URL'; - out.profile_namePlaceholder = 'Name displayed in your profile'; - out.profile_avatar = "Avatar"; - out.profile_upload = " Upload a new avatar"; - out.profile_uploadSizeError = "Error: your avatar must be smaller than {0}"; - out.profile_uploadTypeError = "Error: your avatar type is not allowed. Allowed types are: {0}"; - out.profile_error = "Error while creating your profile: {0}"; - out.profile_register = "You have to sign up to create a profile!"; - out.profile_create = "Create a profile"; - out.profile_description = "Description"; - out.profile_fieldSaved = 'New value saved: {0}'; - - out.profile_inviteButton = "Connect"; - out.profile_inviteButtonTitle ='Create a link that will invite this user to connect with you.'; - out.profile_inviteExplanation = "Clicking OK will create a link to a secure messaging session that only {0} will be able to redeem.

    The link will be copied to your clipboard and can be shared publicly."; - out.profile_viewMyProfile = "View my profile"; - - // contacts/userlist - out.userlist_addAsFriendTitle = 'Add "{0}" as a contact'; - out.userlist_thisIsYou = 'This is you ("{0}")'; - out.userlist_pending = "Pending..."; - out.contacts_title = "Contacts"; - out.contacts_addError = 'Error while adding that contact to the list'; - out.contacts_added = 'Contact invite accepted.'; - out.contacts_rejected = 'Contact invite rejected'; - out.contacts_request = '{0} would like to add you as a contact. Accept?'; - out.contacts_send = 'Send'; - out.contacts_remove = 'Remove this contact'; - out.contacts_confirmRemove = 'Are you sure you want to remove {0} from your contacts?'; - out.contacts_typeHere = "Type a message here..."; - out.contacts_warning = "Everything you type here is persistent and available to all the existing and future users of this pad. Be careful with sensitive information!"; - out.contacts_padTitle = "Chat"; - - out.contacts_info1 = "These are your contacts. From here, you can:"; - out.contacts_info2 = "Click your contact's icon to chat with them"; - out.contacts_info3 = "Double-click their icon to view their profile"; - out.contacts_info4 = "Either participant can clear permanently a chat history"; - - out.contacts_removeHistoryTitle = 'Clean the chat history'; - out.contacts_confirmRemoveHistory = 'Are you sure you want to permanently remove your chat history? Data cannot be restored'; - out.contacts_removeHistoryServerError = 'There was an error while removing your chat history. Try again later'; - out.contacts_fetchHistory = "Retrieve older history"; - - out.contacts_friends = "Friends"; - out.contacts_rooms = "Rooms"; - out.contacts_leaveRoom = "Leave this room"; - - out.contacts_online = "Another user from this room is online"; - - // File manager - - out.fm_rootName = "Documents"; - out.fm_trashName = "Trash"; - out.fm_unsortedName = "Unsorted files"; - out.fm_filesDataName = "All files"; - out.fm_templateName = "Templates"; - out.fm_searchName = "Search"; - out.fm_recentPadsName = "Recent pads"; - out.fm_ownedPadsName = "Owned"; - out.fm_tagsName = "Tags"; - out.fm_sharedFolderName = "Shared folder"; - out.fm_searchPlaceholder = "Search..."; - out.fm_newButton = "New"; - out.fm_newButtonTitle = "Create a new pad or folder, import a file in the current folder"; - out.fm_newFolder = "New folder"; - out.fm_newFile = "New pad"; - out.fm_folder = "Folder"; - out.fm_sharedFolder = "Shared folder"; - out.fm_folderName = "Folder name"; - out.fm_numberOfFolders = "# of folders"; - out.fm_numberOfFiles = "# of files"; - out.fm_fileName = "File name"; - out.fm_title = "Title"; - out.fm_type = "Type"; - out.fm_lastAccess = "Last access"; - out.fm_creation = "Creation"; - out.fm_forbidden = "Forbidden action"; - out.fm_originalPath = "Original path"; - out.fm_openParent = "Show in folder"; - out.fm_noname = "Untitled Document"; - out.fm_emptyTrashDialog = "Are you sure you want to empty the trash?"; - out.fm_removeSeveralPermanentlyDialog = "Are you sure you want to permanently remove these {0} elements from your CryptDrive?"; - out.fm_removePermanentlyNote = "Owned pads will be removed from the server if you continue."; - out.fm_removePermanentlyDialog = "Are you sure you want to permanently remove that element from your CryptDrive?"; - out.fm_removeSeveralDialog = "Are you sure you want to move these {0} elements to the trash?"; - out.fm_removeDialog = "Are you sure you want to move {0} to the trash?"; - out.fm_deleteOwnedPad = "Are you sure you want to permanently remove this pad from the server?"; - out.fm_deleteOwnedPads = "Are you sure you want to permanently remove these pads from the server?"; - out.fm_restoreDialog = "Are you sure you want to restore {0} to its previous location?"; - out.fm_unknownFolderError = "The selected or last visited directory no longer exist. Opening the parent folder..."; - out.fm_contextMenuError = "Unable to open the context menu for that element. If the problem persist, try to reload the page."; - out.fm_selectError = "Unable to select the targeted element. If the problem persists, try to reload the page."; - out.fm_categoryError = "Unable to open the selected category, displaying root."; - out.fm_info_root = "Create as many nested folders here as you want to sort your files."; - out.fm_info_unsorted = 'Contains all the files you\'ve visited that are not yet sorted in "Documents" or moved to the "Trash".'; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" - out.fm_info_template = 'Contains all the pads stored as templates and that you can re-use when you create a new pad.'; - out.fm_info_recent = "List the recently modified or opened pads."; - out.updated_0_fm_info_trash = 'Empty your trash to free space in your CryptDrive.'; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = 'Contains all the files from "Documents", "Unsorted" and "Trash". You can\'t move or remove files from here.'; // Same here - out.fm_info_anonymous = 'You are not logged in so your pads will expire after 3 months (find out more). ' + - 'They are stored in your browser so clearing history may make them disappear.
    ' + - 'Sign up or Log in to keep them alive.
    '; - out.fm_info_sharedFolder = "This is a shared folder. You're not logged in so you can only access it in read-only mode.
    " + - 'Sign up or Log in to be able to import it to your CryptDrive and to modify it.'; - out.fm_info_owned = "You are the owner of the pads displayed here. This means you can remove them permanently from the server whenever you want. If you do so, other users won't be able to access them anymore."; - out.fm_alert_backupUrl = "Backup link for this drive.
    " + - "It is highly recommended that you keep it secret.
    " + - "You can use it to retrieve all your files in case your browser memory got erased.
    " + - "Anybody with that link can edit or remove all the files in your file manager.
    "; - out.fm_alert_anonymous = "Hello there, you are currently using CryptPad anonymously, that's ok but your pads may be deleted after a period of " + - "inactivity. We have disabled advanced features of the drive for anonymous users because we want to be clear that it is " + - 'not a safe place to store things. You can read more about ' + - 'why we are doing this and why you really should Sign up and Log in.'; - out.fm_backup_title = 'Backup link'; - out.fm_nameFile = 'How would you like to name that file?'; - out.fm_error_cantPin = "Internal server error. Please reload the page and try again."; - out.fm_viewListButton = "List view"; - out.fm_viewGridButton = "Grid view"; - out.fm_renamedPad = "You've set a custom name for this pad. Its shared title is:
    {0}"; - out.fm_canBeShared = "This folder can be shared"; - out.fm_prop_tagsList = "Tags"; - out.fm_burnThisDriveButton = "Erase all information stored by CryptPad in your browser"; - out.fm_burnThisDrive = "Are you sure you want to remove everything stored by CryptPad in your browser?
    " + - "This will remove your CryptDrive and its history from your browser, but your pads will still exist (encrypted) on our server."; - out.fm_padIsOwned = "You are the owner of this pad"; - out.fm_padIsOwnedOther = "This pad is owned by another user"; - out.fm_deletedPads = "These pads no longer exist on the server, they've been removed from your CryptDrive: {0}"; - out.fm_tags_name = "Tag name"; - out.fm_tags_used = "Number of uses"; - out.fm_restoreDrive = "Resetting your drive to an earlier state. For best results, avoid making changes to your drive until this process is complete."; - out.fm_moveNestedSF = "You can't place one shared folder within another. The folder {0} was not moved."; - // File - Context menu - out.fc_newfolder = "New folder"; - out.fc_newsharedfolder = "New shared folder"; - out.fc_rename = "Rename"; - out.fc_open = "Open"; - out.fc_open_ro = "Open (read-only)"; - out.fc_delete = "Move to trash"; - out.fc_delete_owned = "Delete from the server"; - out.fc_restore = "Restore"; - out.fc_remove = "Remove from your CryptDrive"; - out.fc_remove_sharedfolder = "Remove"; - out.fc_empty = "Empty the trash"; - out.fc_prop = "Properties"; - out.fc_hashtag = "Tags"; - out.fc_sizeInKilobytes = "Size in Kilobytes"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "You can't move a folder to the list of templates"; - out.fo_existingNameError = "Name already used in that directory. Please choose another one."; - out.fo_moveFolderToChildError = "You can't move a folder into one of its descendants"; - out.fo_unableToRestore = "Unable to restore that file to its original location. You can try to move it to a new location."; - out.fo_unavailableName = "A file or a folder with the same name already exist at the new location. Rename the element and try again."; - - out.fs_migration = "Your CryptDrive is being updated to a new version. As a result, the current page has to be reloaded.
    Please reload this page to continue to use it."; - - // login - out.login_login = "Log in"; - out.login_makeAPad = 'Create a pad anonymously'; - out.login_nologin = "Browse local pads"; - out.login_register = "Sign up"; - out.logoutButton = "Log out"; - out.settingsButton = "Settings"; - - out.login_username = "Username"; - out.login_password = "Password"; - out.login_confirm = "Confirm your password"; - out.login_remember = "Remember me"; - - out.login_hashing = "Hashing your password, this might take some time."; - - out.login_hello = 'Hello {0},'; // {0} is the username - out.login_helloNoName = 'Hello,'; - out.login_accessDrive = 'Access your drive'; - out.login_orNoLogin = 'or'; - - out.login_noSuchUser = 'Invalid username or password. Try again, or sign up'; - out.login_invalUser = 'Username required'; - out.login_invalPass = 'Password required'; - out.login_unhandledError = 'An unexpected error occurred :('; - - out.register_importRecent = "Import pads from your anonymous session"; - out.register_acceptTerms = "I accept the terms of service"; - out.register_passwordsDontMatch = "Passwords do not match!"; - out.register_passwordTooShort = "Passwords must be at least {0} characters long."; - - out.register_mustAcceptTerms = "You must accept the terms of service."; - out.register_mustRememberPass = "We cannot reset your password if you forget it. It's very important that you remember it! Please check the checkbox to confirm."; - - out.register_whyRegister = "Why sign up?"; - out.register_header = "Welcome to CryptPad"; - out.register_explanation = [ - "

    Lets go over a couple things first:

    ", - "
      ", - "
    • Your password is your secret key which encrypts all of your pads. If you lose it there is no way we can recover your data.
    • ", - "
    • You can import pads which were recently viewed in your browser so you have them in your account.
    • ", - "
    • If you are using a shared computer, you need to log out when you are done, closing the tab is not enough.
    • ", - "
    " - ].join(''); - - out.register_writtenPassword = "I have written down my username and password, proceed"; - out.register_cancel = "Go back"; - - out.register_warning = "Zero Knowledge means that we can't recover your data if you lose your password."; - - out.register_alreadyRegistered = "This user already exists, do you want to log in?"; - - // Settings - out.settings_cat_account = "Account"; - out.settings_cat_drive = "CryptDrive"; - out.settings_cat_cursor = "Cursor"; - out.settings_cat_code = "Code"; - out.settings_cat_pad = "Rich text"; - out.settings_cat_creation = "New pad"; - out.settings_cat_subscription = "Subscription"; - out.settings_title = "Settings"; - out.settings_save = "Save"; - - out.settings_backupCategory = "Backup"; - out.settings_backupHint = "Backup or restore all your CryptDrive's content. It won't contain the content of your pads, just the keys to access them."; - out.settings_backup = "Backup"; - out.settings_restore = "Restore"; - - out.settings_backupHint2 = "Download the current content of all your pads. Pads will be downloaded in an readable format if such a format is available."; - out.settings_backup2 = "Download my CryptDrive"; - out.settings_backup2Confirm = "This will download all the pads and files from your CryptDrive. If you want to continue, pick a name and press OK"; - out.settings_exportTitle = "Export your CryptDrive"; - out.settings_exportDescription = "Please wait while we're downloading and decrypting your documents. This may take a few minutes. Closing the tab will interrupt the process."; - out.settings_exportFailed = "If a pad requires more than 1 minute to be downloaded, it won't be included in the export. A link to any pad that has not been exported will be displayed."; - out.settings_exportWarning = "Note: this tool is still in a beta version and it might have scalability issues. For better performance, it is recommended to leave this tab focused."; - out.settings_exportCancel = "Are you sure you want to cancel the export? You will have to start again from the beginning next time."; - out.settings_export_reading = "Reading your CryptDrive..."; - out.settings_export_download = "Downloading and decrypting your documents..."; - out.settings_export_compressing = "Compressing data..."; - out.settings_export_done = "Your download is ready!"; - out.settings_exportError = "View errors"; - out.settings_exportErrorDescription = "We weren't able to add the following documents into the export:"; - out.settings_exportErrorEmpty = "This document can't be exported (empty or invalid content)."; - out.settings_exportErrorMissing = "This document is missing from our servers (expired or deleted by its owner)"; - out.settings_exportErrorOther = "An error occurred while trying to export this document: {0}"; - - out.settings_resetNewTitle = "Clean CryptDrive"; - out.settings_resetButton = "Remove"; - out.settings_reset = "Remove all the files and folders from your CryptDrive"; - out.settings_resetPrompt = "This action will remove all the pads from your drive.
    "+ - "Are you sure you want to continue?
    " + - "Type “I love CryptPad” to confirm."; - out.settings_resetDone = "Your drive is now empty!"; - out.settings_resetError = "Incorrect verification text. Your CryptDrive has not been changed."; - - out.settings_resetTipsAction = "Reset"; - out.settings_resetTips = "Tips"; - out.settings_resetTipsButton = "Reset the available tips in CryptDrive"; - out.settings_resetTipsDone = "All the tips are now visible again."; - - out.settings_thumbnails = "Thumbnails"; - out.settings_disableThumbnailsAction = "Disable thumbnails creation in your CryptDrive"; - out.settings_disableThumbnailsDescription = "Thumbnails are automatically created and stored in your browser when you visit a new pad. You can disable this feature here."; - out.settings_resetThumbnailsAction = "Clean"; - out.settings_resetThumbnailsDescription = "Clean all the pads thumbnails stored in your browser."; - out.settings_resetThumbnailsDone = "All the thumbnails have been erased."; - - out.settings_importTitle = "Import this browser's recent pads in your CryptDrive"; - out.settings_import = "Import"; - out.settings_importConfirm = "Are you sure you want to import recent pads from this browser to your user account's CryptDrive?"; - out.settings_importDone = "Import completed"; - - out.settings_autostoreTitle = "Pad storage in CryptDrive"; - out.settings_autostoreHint = "Automatic All the pads you visit are stored in your CryptDrive.
    " + - "Manual (always ask) If you have not stored a pad yet, you will be asked if you want to store them in your CryptDrive.
    " + - "Manual (never ask) Pads are not stored automatically in your CryptDrive. The option to store them will be hidden."; - out.settings_autostoreYes = "Automatic"; - out.settings_autostoreNo = "Manual (never ask)"; - out.settings_autostoreMaybe = "Manual (always ask)"; - - out.settings_userFeedbackTitle = "Feedback"; - out.settings_userFeedbackHint1 = "CryptPad provides some very basic feedback to the server, to let us know how to improve your experience. "; - out.settings_userFeedbackHint2 = "Your pad's content will never be shared with the server."; - out.settings_userFeedback = "Enable user feedback"; - - out.settings_deleteTitle = "Account deletion"; - out.settings_deleteHint = "Account deletion is permanent. Your CryptDrive and your list of pads will be deleted from the server. The rest of your pads will be deleted in 90 days if nobody else has stored them in their CryptDrive."; - out.settings_deleteButton = "Delete your account"; - out.settings_deleteModal = "Share the following information with your CryptPad administrator in order to have your data removed from their server."; - out.settings_deleteConfirm = "Clicking OK will delete your account permanently. Are you sure?"; - out.settings_deleted = "Your user account is now deleted. Press OK to go to the home page."; - - out.settings_anonymous = "You are not logged in. Settings here are specific to this browser."; - out.settings_publicSigningKey = "Public Signing Key"; - - out.settings_usage = "Usage"; - out.settings_usageTitle = "See the total size of your pinned pads in MB"; - out.settings_pinningNotAvailable = "Pinned pads are only available to registered users."; - out.settings_pinningError = "Something went wrong"; - out.settings_usageAmount = "Your pinned pads occupy {0}MB"; - - out.settings_logoutEverywhereButton = "Log out"; - out.settings_logoutEverywhereTitle = "Log out everywhere"; - out.settings_logoutEverywhere = "Force log out of all other web sessions"; - out.settings_logoutEverywhereConfirm = "Are you sure? You will need to log in with all your devices."; - - out.settings_driveDuplicateTitle = "Duplicated owned pads"; - out.settings_driveDuplicateHint = "When you move your owned pads to a shared folder, a copy is kept in your CryptDrive to ensure that you retain your control over it. You can hide duplicated files. Only the shared version will be visible, unless deleted, in which case the original will be displayed in its previous location."; - out.settings_driveDuplicateLabel = "Hide duplicates"; - - out.settings_codeIndentation = 'Code editor indentation (spaces)'; - out.settings_codeUseTabs = "Indent using tabs (instead of spaces)"; - out.settings_codeFontSize = "Font size in the code editor"; - - out.settings_padWidth = "Editor's maximum width"; - out.settings_padWidthHint = "Rich text pads use by default the maximum available width on your screen and it can be difficult to read. You can reduce the editor's width here."; - out.settings_padWidthLabel = "Reduce the editor's width"; - out.settings_padSpellcheckTitle = "Spellcheck"; - out.settings_padSpellcheckHint = "This option allows you to enable spellcheck in rich text pads. Spelling errors will be underlined in red and you'll have to hold your Ctrl or Meta key while right-clicking to see the correct options."; - out.settings_padSpellcheckLabel = "Enable spellcheck in rich text pads"; - - out.settings_creationSkip = "Skip the pad creation screen"; - out.settings_creationSkipHint = "The pad creation screen offers new options to create a pad, providing you more control and security over your data. However, it may slow down your workflow by adding one additional step so, here, you have the option to skip this screen and use the default settings selected above."; - out.settings_creationSkipTrue = "Skip"; - out.settings_creationSkipFalse = "Display"; - - out.settings_templateSkip = "Skip the template selection modal"; - out.settings_templateSkipHint = "When you create a new empty pad, if you have stored templates for this type of pad, a modal appears to ask if you want to use a template. Here you can choose to never show this modal and so to never use a template."; - - out.settings_ownDriveTitle = "Enable latest account features"; - out.settings_ownDriveHint = "For technical reasons, older accounts do not have access to all of our latest features. A free upgrade to a new account will prepare your CryptDrive for upcoming features without disrupting your usual activities."; - out.settings_ownDriveButton = "Upgrade your account"; - out.settings_ownDriveConfirm = "Upgrading your account may take some time. You will need to log back in on all your devices. Are you sure?"; - out.settings_ownDrivePending = "Your account is being upgraded. Please do not close or reload this page until the process has completed."; - - out.settings_changePasswordTitle = "Change your password"; - out.settings_changePasswordHint = "Change your account's password. Enter your current password, and confirm the new password by typing it twice.
    " + - "We can't reset your password if you forget it, so be very careful!"; - out.settings_changePasswordButton = "Change password"; - out.settings_changePasswordCurrent = "Current password"; - out.settings_changePasswordNew = "New password"; - out.settings_changePasswordNewConfirm = "Confirm new password"; - out.settings_changePasswordConfirm = "Are you sure you want to change your password? You will need to log back in on all your devices."; - out.settings_changePasswordError = "An unexpected error occurred. If you are unable to login or change your password, contact your CryptPad administrators."; - out.settings_changePasswordPending = "Your password is being updated. Please do not close or reload this page until the process has completed."; - out.settings_changePasswordNewPasswordSameAsOld = "Your new password must be different than your current password."; - - out.settings_cursorColorTitle = "Cursor color"; - out.settings_cursorColorHint = "Change the color associated with your user in collaborative documents."; - out.settings_cursorShareTitle = "Share my cursor position"; - out.settings_cursorShareHint = "You can decide if you want other users to see your cursor position in collaborative documents."; - out.settings_cursorShareLabel = "Share the position"; - out.settings_cursorShowTitle = "Display other users' cursor position"; - out.settings_cursorShowHint = "You can choose if you want to see the other users' cursor in collaborative documents."; - out.settings_cursorShowLabel = "Show cursors"; - - out.upload_title = "File upload"; - out.upload_type = "Type"; - out.upload_modal_title = "File upload options"; - out.upload_modal_filename = "File name (extension {0} added automatically)"; - out.upload_modal_owner = "Owned file"; - out.upload_serverError = "Server Error: unable to upload your file at this time."; - out.upload_uploadPending = "You already have an upload in progress. Cancel it and upload your new file?"; - out.upload_success = "Your file ({0}) has been successfully uploaded and added to your drive."; - out.upload_notEnoughSpace = "There is not enough space for this file in your CryptDrive."; - out.upload_notEnoughSpaceBrief = "Not enough space"; - out.upload_tooLarge = "This file exceeds the maximum upload size."; - out.upload_tooLargeBrief = 'File too large'; - out.upload_choose = "Choose a file"; - out.upload_pending = "Pending"; - out.upload_cancelled = "Cancelled"; - out.upload_name = "File name"; - out.upload_size = "Size"; - out.upload_progress = "Progress"; - out.upload_mustLogin = "You must be logged in to upload files"; - out.upload_up = "Upload"; - out.download_button = "Decrypt & Download"; - out.download_mt_button = "Download"; - out.download_resourceNotAvailable = "The requested resource was not available... Press Esc to continue."; - out.download_dl = "Download"; - out.download_step1 = "Downloading"; - out.download_step2 = "Decrypting"; - - out.todo_title = "CryptTodo"; - out.todo_newTodoNamePlaceholder = "Describe your task..."; - out.todo_newTodoNameTitle = "Add this task to your todo list"; - out.todo_markAsCompleteTitle = "Mark this task as complete"; - out.todo_markAsIncompleteTitle = "Mark this task as incomplete"; - out.todo_removeTaskTitle = "Remove this task from your todo list"; - - // pad - out.pad_showToolbar = "Show toolbar"; - out.pad_hideToolbar = "Hide toolbar"; - out.pad_base64 = "This pad contains images stored in an inefficient way. These images will significantly increase the size of the pad in your CryptDrive, and make it slower to load. You can migrate these files to a new format which will be stored separately in your CryptDrive. Do you want to migrate these images now?"; - - // markdown toolbar - out.mdToolbar_button = "Show or hide the Markdown toolbar"; - out.mdToolbar_defaultText = "Your text here"; - out.mdToolbar_help = "Help"; - out.mdToolbar_tutorial = "http://www.markdowntutorial.com/"; - out.mdToolbar_bold = "Bold"; - out.mdToolbar_italic = "Italic"; - out.mdToolbar_strikethrough = "Strikethrough"; - out.mdToolbar_heading = "Heading"; - out.mdToolbar_link = "Link"; - out.mdToolbar_quote = "Quote"; - out.mdToolbar_nlist = "Ordered list"; - out.mdToolbar_list = "Bullet list"; - out.mdToolbar_check = "Task list"; - out.mdToolbar_code = "Code"; - - // index.html - - out.home_product = "CryptPad is a private-by-design alternative to popular office tools and cloud services. All the content stored on CryptPad is encrypted before being sent, which means nobody can access your data unless you give them the keys (not even us)."; - out.home_host = "This is an independent community instance of CryptPad. Its source code is available on GitHub."; - out.home_host_agpl = "CryptPad is distributed under the terms of the AGPL3 software license"; - out.home_ngi = "NGI Award winner"; - - //about.html - out.about_intro = 'CryptPad is created inside of the Research Team at XWiki SAS, a small business located in Paris France and Iasi Romania. There are 3 core team members working on CryptPad plus a number of contributors both inside and outside of XWiki SAS.'; - out.about_core = 'Core Developers'; - out.about_contributors = 'Key Contributors'; - - // contact.html - out.main_about_p22 = 'Tweet us'; - out.main_about_p23 = 'open an issue on GitHub'; - out.main_about_p24 = 'say Hello (Matrix)'; - out.main_about_p25 = 'send us an email'; - out.main_about_p26 = 'If you have any questions or comments, feel free to reach out!'; - - out.main_info = "

    Collaborate in Confidence

    Grow your ideas together with shared documents while Zero Knowledge technology secures your privacy; even from us."; - out.main_catch_phrase = "The Zero Knowledge Cloud"; - - out.main_richText = 'Rich Text editor'; - out.main_code = 'Code editor'; - out.main_slide = 'Slide editor'; - out.main_poll = 'Polls'; - out.main_drive = 'CryptDrive'; - - out.main_richTextPad = 'Rich Text Pad'; - out.main_codePad = 'Markdown/Code Pad'; - out.main_sheetPad = 'Spreadsheets (Beta)'; - out.main_slidePad = 'Markdown Presentation'; - out.main_pollPad = 'Poll or Schedule'; - out.main_whiteboardPad = 'Whiteboard'; - out.main_kanbanPad = 'Kanban'; - out.main_localPads = 'Local Pads'; - out.main_yourCryptDrive = 'Your CryptDrive'; - out.main_footerText = "With CryptPad, you can make quick collaborative documents for taking notes and writing down ideas together."; - - out.footer_applications = "Applications"; - out.footer_contact = "Contact"; - out.footer_aboutUs = "About us"; - - out.about = "About"; - out.privacy = "Privacy"; - out.contact = "Contact"; - out.terms = "ToS"; - out.blog = "Blog"; - - out.topbar_whatIsCryptpad = "What is CryptPad"; - - // what-is-cryptpad.html - - out.whatis_title = 'What is CryptPad'; - out.whatis_collaboration = 'Fast, Easy Collaboration'; - out.whatis_collaboration_p1 = 'With CryptPad, you can make quick collaborative documents for taking notes and writing down ideas together. When you sign up and log in, you get file upload capability and a CryptDrive where you can organize all of your pads. As a registered user you get 50MB of space for free.'; - out.whatis_collaboration_p2 = 'You can share access to a CryptPad document simply by sharing the link. You can also share a link which provides read only access to a pad, allowing you to publicise your collaborative work while still being able to edit it.'; - out.whatis_collaboration_p3 = 'You can make simple rich text documents with CKEditor as well as Markdown documents which are rendered in realtime while you type. You can also use the poll app for scheduling events with multiple participants.'; - out.whatis_zeroknowledge = 'Zero Knowledge'; - out.whatis_zeroknowledge_p1 = "We don't want to know what you're typing and with modern cryptography, you can be sure that we can't know. CryptPad uses 100% client side encryption to protect the content that you type from us, the people who host the server."; - out.whatis_zeroknowledge_p2 = 'When you sign up and log in, your username and password are computed into a secret key using scrypt key derivation function. Neither this key, nor the username and password are ever sent to the server. Instead they are used on the client side to decrypt the content of your CryptDrive, which contains the keys to all pads that you are able to access.'; - out.whatis_zeroknowledge_p3 = 'When you share the link to a document, you\'re sharing the cryptographic key for accessing that document but since the key is in the fragment identifier, it is never directly sent to the server. Check out our privacy blog post to learn more about what types of metadata we do and do not have access to.'; - out.whatis_drive = 'Organization with CryptDrive'; - out.whatis_drive_p1 = 'Whenever you access a pad in CryptPad, the pad is automatically added to your CryptDrive in the main folder. Later on, you can organize these pads into folders or you can put them in the trash bin. CryptDrive allows you to search through your pads and to organize them whenever you want, however you want.'; - out.whatis_drive_p2 = 'With intuitive drag-and-drop, you can move pads around in your drive and the link to these pads will stay the same so your collaborators will never lose access.'; - out.whatis_drive_p3 = 'You can also upload files in your CryptDrive and share them with colleagues. Uploaded files can be organized just like collaborative pads.'; - out.whatis_business = 'CryptPad for Business'; - out.whatis_business_p1 = "CryptPad\'s Zero Knowledge encryption multiplies the effectiveness of existing security protocols by mirroring organizational access controls in cryptography. Because sensitive assets can only be decrypted using user access credentials, CryptPad is less valuable as a target when compared to traditional cloud services. Read the CryptPad Whitepaper to learn more about how it can help your business."; - out.whatis_business_p2 = 'CryptPad is deployable on premises and the CryptPad developers at XWiki SAS are able to offer commercial support, customization and development. Reach out to sales@cryptpad.fr for more information.'; - - // privacy.html - - out.policy_title = 'CryptPad Privacy Policy'; - out.policy_whatweknow = 'What we know about you'; - out.policy_whatweknow_p1 = 'As an application that is hosted on the web, CryptPad has access to metadata exposed by the HTTP protocol. This includes your IP address, and various other HTTP headers that can be used to identify your particular browser. You can see what information your browser is sharing by visiting WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'We use Kibana, an open source analytics platform, to learn more about our users. Kibana tells us about how you found CryptPad, via direct entry, through a search engine, or via a referral from another web service like Reddit or Twitter.'; - out.policy_howweuse = 'How we use what we learn'; - out.policy_howweuse_p1 = 'We use this information to make better decisions about promoting CryptPad, by evaluating which of our past efforts were successful. Information about your location lets us know whether we should consider providing better support for languages other than English.'; - out.policy_howweuse_p2 = "Information about your browser (whether it's a desktop or mobile operating system) helps us make decisions when prioritizing feature improvements. Our development team is small, and we try to make choices that will improve as many users' experience as possible."; - out.policy_whatwetell = 'What we tell others about you'; - out.policy_whatwetell_p1 = 'We do not furnish to third parties the information that we gather or that you provide to us unless we are legally required to do so.'; - out.policy_links = 'Links to other sites'; - out.policy_links_p1 = 'This site contains links to other sites, including those produced by other organizations. We are not responsible for the privacy practices or the contents of any outside sites. As a general rule, links to outside sites are launched in a new browser window, to make clear that you are leaving CryptPad.fr.'; - out.policy_ads = 'Advertisement'; - out.policy_ads_p1 = 'We do not display any online advertising, though we may link to the bodies which are financing our research.'; - out.policy_choices = 'Choices you have'; - out.policy_choices_open = 'Our code is open source, so you always have the option of hosting your own instance of CryptPad.'; - out.policy_choices_vpn = 'If you want to use our hosted instance, but don\'t want to expose your IP address, you can protect your IP using the Tor browser bundle, or a VPN.'; - out.policy_choices_ads = 'If you just want to block our analytics platform, you can use adblocking tools like Privacy Badger.'; - - // features.html - - out.features = "Features"; - out.features_title = "Feature comparison"; - out.features_feature = "Feature"; - out.features_anon = "Anonymous user"; - out.features_registered = "Registered user"; - out.features_premium = "Premium user"; - out.features_notes = "Notes"; - - out.features_f_apps = "Access to the main applications"; - out.features_f_core = "Common features for the applications"; - out.features_f_core_note = "Edit, Import & Export, History, Userlist, Chat"; - out.features_f_file0 = "Open files"; - out.features_f_file0_note = "View and download files shared by other users"; - out.features_f_cryptdrive0 = "Limited access to CryptDrive"; - out.features_f_cryptdrive0_note = "Ability to store visited pads in your browser to be able to open them later"; - out.features_f_storage0 = "Limited storage time"; - out.features_f_storage0_note = "Created pads risk deletion after 3 months of inactivity"; - - out.features_f_anon = "All anonymous user features"; - out.features_f_anon_note = "With better usability and more power over your pads"; - out.features_f_cryptdrive1 = "Complete CryptDrive functionality"; - out.features_f_cryptdrive1_note = "Folders, shared folders, templates, tags"; - out.features_f_devices = "Your pads on all your devices"; - out.features_f_devices_note = "Access your CryptDrive everywhere with your user account"; - out.features_f_social = "Social applications"; - out.features_f_social_note = "Create a profile, use an avatar, chat with contacts"; - out.features_f_file1 = "Upload and share files"; - out.features_f_file1_note = "Share files with your friends or embed them in your pads"; - out.features_f_storage1 = "Permanent storage (50MB)"; - out.features_f_storage1_note = "Pads stored in your CryptDrive are never deleted for inactivity"; - out.features_f_register = "Register for free"; - out.features_f_register_note = "No email or personal information required"; - - out.features_f_reg = "All registered user features"; - out.features_f_reg_note = "And help CryptPad's development"; - out.features_f_storage2 = "Extra storage space"; - out.features_f_storage2_note = "From 5GB to 50GB depending on the selected plan"; - out.features_f_support = "Faster support"; - out.features_f_support_note = "Professional email support with the Team plan"; - out.features_f_supporter = "Become a privacy supporter"; - out.features_f_supporter_note = "Help us show that privacy-enhancing software should be the norm"; - out.features_f_subscribe = "Subscribe to premium"; - out.features_f_subscribe_note = "You need to be logged in to CryptPad first"; - - // faq.html - - out.faq_link = "FAQ"; - out.faq_title = "Frequently Asked Questions"; - out.faq_whatis = "What is CryptPad?"; - out.faq = {}; - out.faq.keywords = { - title: 'Keywords', - pad: { - q: "What is a pad?", - a: "Pad is a term popularized by Etherpad, a real-time collaborative editor.\n" + - "It refers to a document that you can edit in your browser, generally with other people's changes visible nearly instantly." - }, - owned: { - q: "What is an owned Pad?", - a: "An owned pad is a pad created with an explicit owner, identified to the server by their public signing key." + - " A pad's owner may choose to delete their pads from the server, making it unavailable to other collaborators in the future, whether they had it in their CryptDrive or not." - }, - expiring: { - q: "What is an expiring Pad?", - a: "An expiring pad is a pad created with a set time at which it will be automatically removed from the server." + - " Expiring pads can be configured to last anywhere from one hour to one hundred months." + - " The pad and all of its history will become permanently unavailable even if it is being edited at the time that it expires.

    " + - "If a pad is set to expire, you can check its expiration time by viewing its properties, either by right-clicking the pad in your CryptDrive, or by using the properties sub-menu from an application's toolbar." - }, - tag: { - q: "How can I use tags?", - a: "You can tag pads and uploaded files via your CryptDrive, or using the tag button () in any editor's toolbar." + - " Search for pads and files in your CryptDrive using the search bar with a term beginning with hashtag, like #crypto." - }, - template: { - q: "What is a template?", - a: "A template is a pad which can be used to define to initial content for another pad of the same type when you create it." + - " Any existing pad can be turned into a template by moving it into the Templates section in your CryptDrive." + - " You can also create a copy of a pad to be used as a template by clicking the template button () in the editor's toolbar." - }, - abandoned: { - q: "What is an abandoned pad?", - a: "An abandoned pad is a pad that is not pinned in any registered user's CryptDrive and that hasn't been changed for six months. Abandoned documents will be automatically removed from the server." - }, - }; - out.faq.privacy = { - title: 'Privacy', - different: { - q: "How is CryptPad different from other Pad services?", - a: "CryptPad encrypts changes to your pads before sending that information to be stored on the server, so we can't read what you're typing." - }, - me: { - q: "What information does the server know about me?", - a: "Server administrators are able to see the IP addresses of people who visit the CryptPad." + - " We don't record which addresses visit which pads, but we could, even though we don't have access to the decrypted content of those pads." + - " If you are worried about us analyzing that information, it's safest to assume that we do collect it, since we can't prove that we don't.

    " + - - "We collect some basic telemetry about how people use CryptPad, such as the size of the screen on their device, and which buttons they click the most." + - "This helps us improve the software, but if you'd prefer not to send such information to the server, you can opt out by unchecking the Enable user feedback checkbox.

    " + - - "We do keep track of which pads are in a user's CryptDrive so that we can impose storage limits, but we don't know the content or type of those pads." + - " Storage quotas are associated with a user's public key, but we don't associate names or emails with those public keys.

    " + - - " For more information, you can read this blog post which we wrote about the topic." - }, - register: { - q: "Does the server know more about me if I register?", - a: "We don't require users to verify their email address, and the server does not even learn your username or password when you register." + - " Instead, the register and login forms generate a unique keyring from your input, and the server only learns your cryptographic signature." + - " We use this information to track details like how much data you are using, which allows us to restrict each user to a quota.

    " + - - "We use our feedback functionality to inform the server that someone with your IP has registered an account." + - " We use this to measure how many people register for CryptPad accounts, and to see what regions they are in so that we can guess which languages may need better support.

    " + - - "Registered users inform the server which pads are in their CryptDrive so that such pads are not considered abandoned, and are removed from the server due to inactivity." - }, - other: { - q: "What can other collaborators learn about me?", - a: "When you edit a pad with someone else, you communicate through the server, so only we learn your IP address." + - " Other users can see your display name, avatar, the link to your profile (if you have one), and your public key (which is used for encrypting communications between each other)." - }, - anonymous: { - q: "Does CryptPad make me anonymous?", - a: "Even though CryptPad is designed to know as little about you as possible, it does not provide strong anonymity." + - " Our servers have access to your IP address, however, you can hide this information by using Tor to access CryptPad." + - " Using Tor without changing your behaviour will not guarantee you anonymity, as the server is also able to identify users by their unique cryptographic identifier." + - " If you use the same account when you're not using Tor, it will be possible to deanonymize your session.

    " + - - "For users who require a lesser degree of privacy, CryptPad does not require users to identify themselves by name, phone number, or email address like many other services." - }, - policy: { - q: "Do you have a data privacy policy?", - a: "Yes! It is available here." - } - }; - out.faq.security = { - title: 'Security', - proof: { - q: "How do you use Zero Knowledge Proofs?", - a: "When we use the term Zero Knowledge, we are not referring to Zero Knowledge proofs, but to Zero Knowledge Web Services." + - " Zero Knowledge Web Services encrypt user data in the user's browser, without the server ever having access to the unencrypted data, or the encryption keys.

    " + - "We've compiled a short list of Zero Knowledge services here." - }, - why: { - q: "Why should I use CryptPad?", - a: "Our position is that cloud services should not require access to your data in order for you to share it with your friends and colleagues." + - " If you are using another service to collaborate, and they do not explicitly say that they can't access your information, it is very likely that they are leveraging it for profit." - }, - compromised: { - q: "Does CryptPad protect me if my device is compromised?", - a: "In the event that your device is stolen, CryptPad allows you to trigger a remote logout of all devices except the one you are currently using." + - " To do so, go to your settings page and click Log out everywhere." + - " All other devices which are currently connected to the account will log out." + - " Any previously connected devices which visit CryptPad will log out as soon as they load the page.

    " + - - "Currently, remote logout is implemented in the browser, not in conjunction with the server." + - " As such, it may not protect you from government agencies, but it should be sufficient if you forgot to log out after using CryptPad from a shared computer." - }, - crypto: { - q: "What cryptography do you use?", - a: "CryptPad is based upon two open-source cryptography libraries: tweetnacl.js and scrypt-async.js.

    " + - - "Scrypt is a password-based key derivation algorithm. We use it to turn your username and password into a unique keyring which secures access to your CryptDrive such that only you can access your list of pads.

    " + - - "We use the xsalsa20-poly1305 and x25519-xsalsa20-poly1305 cyphers provided by tweetnacl to encrypt pads and chat history, respectively." - } - }; - out.faq.usability = { - title: 'Usability', - register: { - q: "What do I get by registering?", - a: "Registered users have access to a number of features unavailable to unregistered users. There's a chart here." - }, - share: { - q: "How can I share encrypted pads with my friends?", - a: "CryptPad puts the secret encryption key to your pad after the # character in the URL." + - " Anything after this character is not sent to the server, so we never have access to your encryption keys." + - " By sharing the link to a pad, you share the ability to read and access it." - }, - remove: { - q: "I removed a pad or file from my CryptDrive, but the content is still available. How can I remove it?", - a: "Only owned pads (introduced in February 2018) can be deleted. Additionally, these pads can only be deleted by their owners (the person that originally created the pad)." + - " If you are not the creator of the pad, you will have to ask its owner to delete it for you." + - " For pads you do own, you can right-click the pad in your CryptDrive, and choose Delete from the server." - }, - forget: { - q: "What if I forget my password?", - a: "Unfortunately, if we could recover access to your encrypted pads for you, we'd be able to access them ourselves." + - " If you did not record your username and password anywhere, and cannot remember either, you may be able to recover your pads by filtering your browser's history." - }, - change: { - q: "What if I want to change my password?", - a: "You can change your CryptPad password in your account settings page." - }, - devices: { - q: "I am logged in on two devices, and see two different CryptDrives, how is this possible?", - a: "It's probable that you registered the same name twice, using different passwords." + - " Because the CryptPad server identifies you by your cryptographic signature and not your name, it cannot prevent others from registering with the same name." + - " As such, each user account has a unique username and password combination." + - " Logged in users can see their username at the top of the settings page." - }, - folder: { - q: "Can I share entire folders from my CryptDrive?", - a: "Yes, you can share folders and all the pads in them." - }, - feature: { - q: "Can you add a very special feature which I need?", - a: "Many of the features in CryptPad exist because users asked for them." + - " Our contacts page lists the ways that you can reach us.

    " + - - "Unfortunately, we cannot guarantee that we will implement everything that people ask for." + - " If a particular feature is critical for your organization, you can sponsor development time to ensure its completion." + - " Please contact sales@cryptpad.fr for more information.

    " + - - "Even if you cannot afford to sponsor development, we're interested in feedback that can help us improve CryptPad." + - " Feel free to contact us with via the above methods any time." - }, - }; - out.faq.other = { - title: "Other questions", - pay: { - q: "Why should I pay when so many features are free?", - a: "We give supporters additional storage and the ability to increase their friends' quotas (learn more).

    " + - - "Beyond these short term benefits, by subscribing with a premium account you help to fund continued, active development of CryptPad. That includes fixing bugs, adding new features, and making it easier for others to help host CryptPad themselves." + - " Additionally, you help to prove to other service providers that people are willing to support privacy enhancing technologies. It is our hope that eventually business models based on selling user data will become a thing of the past.

    " + - - "Finally, we offer most of CryptPad's functionality for free because we believe everyone deserves personal privacy, not just those with disposable income." + - " By supporting us, you help us continue to make it possible for underprivileged populations to access these basic features without a price tag attached." - }, - goal: { - q: "What is your goal?", - a: "By developing privacy-respecting collaboration technology, we wish to raise users' expectations of privacy from cloud-computing platforms." + - " We hope that our work drives other service providers in all domains to match or exceed our efforts." + - " Despite our optimism, we know that much of the web is funded by revenue from targeted advertising." + - " There is much more work to be done than we can manage ourselves, and we appreciate the promotion, support, and contributions of our community towards this goal." - }, - jobs: { - q: "Are you hiring?", - a: "Yes! Please introduce yourself with an email to jobs@xwiki.com." - }, - host: { - q: "Can you help me set up my own instance of CryptPad?", - a: "We are happy to provide support for your organization's internal CryptPad installation. Please contact sales@cryptpad.fr for more information." - }, - revenue: { - q: "How can I participate in the revenue sharing?", - a: " If you are running your own instance of CryptPad, and would like to enable paid accounts and split the revenue with the developers, your server will need to be configured as a partner service.

    " + - - "In your CryptPad directory, config.example.js should contain an explanation of what you need to configure on your server." + - " You will need to contact sales@cryptpad.fr to verify that your server is configured to use HTTPS correctly, and discuss payment methods." - }, - }; - - // terms.html - - out.tos_title = "CryptPad Terms of Service"; - out.tos_legal = "Please don't be malicious, abusive, or do anything illegal."; - out.tos_availability = "We hope you find this service useful, but availability or performance cannot be guaranteed. Please export your data regularly."; - out.tos_e2ee = "CryptPad contents can be read or modified by anyone who can guess or otherwise obtain the pad's fragment identifier. We recommend that you use end-to-end-encrypted (e2ee) messaging technology to share links, and assume no liability in the event that such a link is leaked."; - out.tos_logs = "Metadata provided by your browser to the server may be logged for the purpose of maintaining the service."; - out.tos_3rdparties = "We do not provide individualized data to third parties unless required to by law."; - - // 404 page - out.four04_pageNotFound = "We couldn't find the page you were looking for."; - - // BottomBar.html - - //out.bottom_france = 'Made with love in France'; - //out.bottom_support = 'An XWiki SAS Labs Project with the support of OpenPaaS-ng'; - - // Header.html - - out.updated_0_header_logoTitle = 'Go to your CryptDrive'; - out.header_logoTitle = out.updated_0_header_logoTitle; - out.header_homeTitle = 'Go to CryptPad homepage'; - - // Initial states - - out.help = {}; - - out.help.title = "Getting started"; - out.help.generic = { - more: 'Learn more about how CryptPad can work for you by reading our FAQ', - share: 'Use the share menu () to generate a link so collaborators can view or edit this pad', - //stored: 'Every pad you visit is automatically stored in your CryptDrive', - save: "All your changes are synced automatically so you never need to save" - }; - - out.help.text = { - formatting: 'You can display or hide the text formatting toolbar by clicking the or buttons', - embed: 'Registered users can embed an image or a file stored in their CryptDrive using ', - history: 'You can use history to view or restore previous versions', - }; - - out.help.pad = { - export: 'You can export the content as PDF using the button in the text formatting toolbar', - }; - - out.help.code = { - modes: 'Use the dropdown menus in the submenu to change syntax highlighting modes or color themes', - }; - - out.help.beta = { - warning: 'This editor is still experimental, you can report bugs on our issue tracker' - }; - out.help.oo = { - access: "Access is restricted to registered users, collaborators will need to log in", - }; - - out.help.slide = { - markdown: 'Write slides in Markdown and separate them with a line containing ---', - present: 'Start the presentation using the button', - settings: 'Change the slide settings (background, transitions, page numbers, etc.) with the button in the submenu', - colors: 'Change the text and background colors using the and buttons', - }; - - out.help.poll = { - decisions: 'Make decisions in private among trusted friends', - options: 'Propose options, and express your preferences', - choices: 'Click cells in your column to cycle through yes (), maybe (~), or no ()', - submit: 'Click submit to make your choices visible to others', - }; - - out.help.whiteboard = { - colors: 'Double-click colors to modify your palette', - mode: 'Disable draw mode to drag and stretch strokes', - embed: 'Embed images from your disk or your CryptDrive and export them as PNG to your disk or your CryptDrive ' - }; - - out.help.kanban = { - add: 'Add new boards using the button in the top-right corner', - task: 'Move items by dragging and dropping them from one board to another', - color: 'Change the colors by clicking on the colored part next to the board titles', - }; - - out.initialState = [ - '

    ', - 'This is CryptPad, the Zero Knowledge realtime collaborative editor. Everything is saved as you type.', - '
    ', - 'Share the link to this pad to edit with friends or use the button to share a read-only link which allows viewing but not editing.', - '

    ', - ].join(''); - - out.codeInitialState = [ - '# CryptPad\'s Zero Knowledge collaborative code editor\n', - '\n', - '* What you type here is encrypted so only people who have the link can access it.\n', - '* You can choose the programming language to highlight and the UI color scheme in the upper right.' - ].join(''); - - out.slideInitialState = [ - '# CryptSlide\n', - '1. Write your slides content using markdown syntax\n', - ' - Learn more about markdown syntax [here](http://www.markdowntutorial.com/)\n', - '2. Separate your slides with ---\n', - '3. Click on the "Play" button to see the result', - ' - Your slides are updated in realtime' - ].join(''); - - // Readme - - out.driveReadmeTitle = "What is CryptPad?"; - out.readme_welcome = "Welcome to CryptPad!"; - out.readme_p1 = "Welcome to CryptPad, this is where you can take note of things alone and with friends."; - out.readme_p2 = "This pad will give you a quick walk through of how you can use CryptPad to take notes, keep them organized and work together on them."; - out.readme_cat1 = "Get to know your CryptDrive"; - out.readme_cat1_l1 = "Make a pad: In your CryptDrive, click {0} then {1} and you can make a pad."; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "Open Pads from your CryptDrive: double-click on a pad icon to open it."; - out.readme_cat1_l3 = "Organize your pads: When you are logged in, every pad you access will be shown as in the {0} section of your drive."; // 0: Unsorted files - out.readme_cat1_l3_l1 = "You can click and drag files into folders in the {0} section of your drive and make new folders."; // 0: Documents - out.readme_cat1_l3_l2 = "Remember to try right clicking on icons because there are often additional menus."; - out.readme_cat1_l4 = "Put old pads in the trash: You can click and drag your pads into the {0} the same way you drag them into folders."; // 0: Trash - out.readme_cat2 = "Make pads like a pro"; - out.edit = "edit"; - out.view = "view"; - out.readme_cat2_l1 = "The {0} button in your pad allows you to give access to collaborators to either {1} or to {2} the pad."; // 0: Share, 1: edit, 2: view - out.readme_cat2_l2 = "Change the title of the pad by clicking on the pencil"; - out.readme_cat3 = "Discover CryptPad apps"; - out.readme_cat3_l1 = "With CryptPad code editor, you can collaborate on code like JavaScript, HTML and Markdown"; - out.readme_cat3_l2 = "With CryptPad slide editor, you can make quick presentations using Markdown"; - out.readme_cat3_l3 = "With CryptPoll you can take quick votes, especially for scheduling meetings which fit with everybody's calendar"; - - // Tips - out.tips = {}; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` and `ctrl+u` are quick shortcuts for bold, italic and underline."; - out.tips.indent = "In numbered and bulleted lists, you can use tab or shift+tab to quickly increase or decrease indentation."; - out.tips.store = "Every time you visit a pad, if you're logged in it will be saved to your CryptDrive."; - out.tips.marker = "You can highlight text in a pad using the \"marker\" item in the styles dropdown menu."; - out.tips.driveUpload = "Registered users can upload encrypted files by dragging and dropping them into their CryptDrive."; - out.tips.filenames = "You can rename files in your CryptDrive, this name is just for you."; - out.tips.drive = "Logged in users can organize their files in their CryptDrive, accessible from the CryptPad icon at the top left of all pads."; - out.tips.profile = "Registered users can create a profile from the user menu in the top right."; - out.tips.avatars = "You can upload an avatar in your profile. People will see it when you collaborate in a pad."; - out.tips.tags = "Tag your pads and start a search with # in your CryptDrive to find them"; - - out.feedback_about = "If you're reading this, you were probably curious why CryptPad is requesting web pages when you perform certain actions"; - out.feedback_privacy = "We care about your privacy, and at the same time we want CryptPad to be very easy to use. We use this file to figure out which UI features matter to our users, by requesting it along with a parameter specifying which action was taken."; - out.feedback_optout = "If you would like to opt out, visit your user settings page, where you'll find a checkbox to enable or disable user feedback"; - - // Creation page - out.creation_404 = "This pad not longer exists. Use the following form to create a new pad."; - out.creation_ownedTitle = "Type of pad"; - out.creation_owned = "Owned pad"; // Creation page - out.creation_ownedTrue = "Owned pad"; // Settings - out.creation_ownedFalse = "Open pad"; - out.creation_owned1 = "An owned pad can be deleted from the server whenever the owner wants. Deleting an owned pad removes it from other users' CryptDrives."; - out.creation_owned2 = "An open pad doesn't have any owner and thus, it can't be deleted from the server unless it has reached its expiration time."; - out.creation_expireTitle = "Life time"; - out.creation_expire = "Expiring pad"; - out.creation_expireTrue = "Add a life time"; - out.creation_expireFalse = "Unlimited"; - out.creation_expireHours = "Hour(s)"; - out.creation_expireDays = "Day(s)"; - out.creation_expireMonths = "Month(s)"; - out.creation_expire1 = "An unlimited pad will not be removed from the server until its owner deletes it."; - out.creation_expire2 = "An expiring pad has a set lifetime, after which it will be automatically removed from the server and other users' CryptDrives."; - out.creation_password = "Add a password"; - out.creation_noTemplate = "No template"; - out.creation_newTemplate = "New template"; - out.creation_create = "Create"; - out.creation_saveSettings = "Don't show this again"; - out.creation_settings = "View more settings"; - out.creation_rememberHelp = "Visit your Settings page to reset this preference"; - // Properties about creation data - out.creation_owners = "Owners"; - out.creation_ownedByOther = "Owned by another user"; - out.creation_noOwner = "No owner"; - out.creation_expiration = "Expiration time"; - out.creation_passwordValue = "Password"; - out.creation_propertiesTitle = "Availability"; - out.creation_appMenuName = "Advanced mode (Ctrl + E)"; - out.creation_newPadModalDescription = "Click on a pad type to create it. You can also press Tab to select the type and press Enter to confirm."; - out.creation_newPadModalDescriptionAdvanced = "You can check the box (or press Space to change its value) if you want to display the pad creation screen (for owned pads, expiring pads, etc.)."; - out.creation_newPadModalAdvanced = "Display the pad creation screen"; - - // Password prompt on the loading screen - out.password_info = "The pad you're trying to open is protected with a password. Enter the correct password to access its content."; - out.password_error = "Pad not found!
    This error can be caused by two factors: either the password in invalid, or the pad has been deleted from the server."; - out.password_placeholder = "Type the password here..."; - out.password_submit = "Submit"; - out.password_show = "Show"; - - // Change password in pad properties - out.properties_addPassword = "Add a password"; - out.properties_changePassword = "Change the password"; - out.properties_confirmNew = "Are you sure? Adding a password will change this pad's URL and remove its history. Users without the password will lose access to this pad"; - out.properties_confirmChange = "Are you sure? Changing the password will remove its history. Users without the new password will lose access to this pad"; - out.properties_passwordSame = "New passwords must differ from the current one."; - out.properties_passwordError = "An error occurred while trying to change the password. Please try again."; - out.properties_passwordWarning = "The password was successfully changed but we were unable to update your CryptDrive with the new data. You may have to remove the old version of the pad manually.
    Press OK to reload and update your access rights."; - out.properties_passwordSuccess = "The password was successfully changed.
    Press OK to reload and update your access rights."; - out.properties_changePasswordButton = "Submit"; - - // New share modal - out.share_linkCategory = "Share link"; - out.share_linkAccess = "Access rights"; - out.share_linkEdit = "Edit"; - out.share_linkView = "View"; - out.share_linkOptions = "Link options"; - out.share_linkEmbed = "Embed mode (toolbar and userlist hidden)"; - out.share_linkPresent = "Present mode (editable sections hidden)"; - out.share_linkOpen = "Open in new tab"; - out.share_linkCopy = "Copy to clipboard"; - out.share_embedCategory = "Embed"; - out.share_mediatagCopy = "Copy mediatag to clipboard"; - - // Loading info - out.loading_pad_1 = "Initializing pad"; - out.loading_pad_2 = "Loading pad content"; - out.loading_drive_1 = "Loading data"; - out.loading_drive_2 = "Updating data format"; - out.loading_drive_3 = "Verifying data integrity"; - - // Shared folders - out.sharedFolders_forget = "This pad is only stored in a shared folder, you can't move it to the trash. You can use your CryptDrive if you want to delete it."; - out.sharedFolders_duplicate = "Some of the pads you were trying to move were already shared in the destination folder."; - out.sharedFolders_create = "Create a shared folder"; - out.sharedFolders_create_name = "Folder name"; - out.sharedFolders_create_owned = "Owned folder"; - out.sharedFolders_create_password = "Folder password"; - out.sharedFolders_share = "Share this URL with other registered users to give them access to the shared folder. Once they open this URL, the shared folder will be added to the root directory of their CryptDrive."; - - out.chrome68 = "It seems that you're using the browser Chrome or Chromium version 68. It contains a bug resulting in the page turning completely white after a few seconds or the page being unresponsive to clicks. To fix this issue, you can switch to another tab and come back, or try to scroll in the page. This bug should be fixed in the next version of your browser."; - - // Manual pad storage popup - out.autostore_file = "file"; - out.autostore_sf = "folder"; - out.autostore_pad = "pad"; - out.autostore_notstored = "This {0} is not in your CryptDrive. Do you want to store it now?"; - out.autostore_settings = "You can enable automatic pad storage in your Settings page!"; - out.autostore_store = "Store"; - out.autostore_hide = "Don't store"; - out.autostore_error = "Unexpected error: we were unable to store this pad, please try again."; - out.autostore_saved = "The pad was successfully stored in your CryptDrive!"; - out.autostore_forceSave = "Store the file in your CryptDrive"; // File upload modal - out.autostore_notAvailable = "You must store this pad in your CryptDrive before being able to use this feature."; // Properties/tags/move to trash - - // Crowdfunding messages - out.crowdfunding_home1 = "CryptPad needs your help!"; - out.crowdfunding_home2 = "Click on the button to learn about our crowdfunding campaign."; - out.crowdfunding_button = "Support CryptPad"; - - out.crowdfunding_popup_text = "

    We need your help!

    " + - "To ensure that CryptPad is actively developed, consider supporting the project via the " + - 'OpenCollective page, where you can see our Roadmap and Funding goals.'; - out.crowdfunding_popup_yes = "Go to OpenCollective"; - out.crowdfunding_popup_no = "Not now"; - out.crowdfunding_popup_never = "Don't ask me again"; - - return out; -}); diff --git a/www/common/translations/old/messages.pl.js b/www/common/translations/old/messages.pl.js deleted file mode 100644 index d21abd491..000000000 --- a/www/common/translations/old/messages.pl.js +++ /dev/null @@ -1,167 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - // translations must set this key for their language to be available in - // the language dropdowns that are shown throughout Cryptpad's interface - out._languageName = 'Polish'; - - out.main_title = "Cryptpad: Wspólne edytowanie w czasie rzeczywistym, bez wiedzy specjalistycznej"; - out.main_slogan = "Jedność siłą - Współpraca kluczem"; - - out.type = {}; - out.type.pad = 'Pad'; - out.type.code = 'Kod'; - out.type.poll = 'Balot'; - out.type.slide = 'Prezentacja'; - - out.common_connectionLost = 'Przerwano połączenie z serwerem'; - - out.disconnected = 'Rozłączony'; - out.synchronizing = 'Synchronizacja'; - out.reconnecting = 'Wznawianie połączenia...'; - out.lag = 'Lag'; - out.readonly = 'Tylko do odczytu'; - out.anonymous = "Anonimowy"; - out.yourself = "Ty"; - out.anonymousUsers = "użytkownicy anonimowi"; - out.anonymousUser = "użytkownik anonimowy"; - out.users = "Użytkownicy"; - out.and = "i"; - out.viewer = "czytający"; - out.viewers = "czytających"; - out.editor = "edytujący"; - out.editors = "edytujących"; - - out.greenLight = "Wszystkie systemy działają poprawnie"; - out.orangeLight = "Słabe łącze może wpłynąć na działanie aplikacji"; - out.redLight = "Zostałeś rozłączony z sesją"; - - out.importButtonTitle = 'Importuj dokument z pliku lokalnego'; - - out.exportButtonTitle = 'Zapisz ten dokument do pliku'; - out.exportPrompt = 'Jak chciałbyś nazwać swój plik?'; - - out.changeNamePrompt = 'Zmień swoją nazwę (Pozostaw puste, by być anonimowym): '; - - out.clickToEdit = "Naciśnij by edytować"; - - out.forgetButtonTitle = 'Usuń ten dokument z listy wyświetlanej na stronie głównej'; - out.forgetPrompt = 'Wciskając OK usuniesz ten URL z pamięci lokalnej, jesteś tego pewien?'; - - out.shareButton = 'Udostępnij'; - out.shareSuccess = 'Pomyślnie skopiowano URL'; - - out.presentButtonTitle = "Otwórz tryb prezentacji"; - - out.backgroundButtonTitle = 'Zmień kolor tła dla tej prezentacji'; - out.colorButtonTitle = 'Zmień kolor tekstu dla tej prezentacji'; - - - out.editShare = "Udostępnij URL do edycji"; - out.editShareTitle = "Zapisz URL do edycji w schowku"; - out.viewShare = "Udostępnij URL tylko do odczytu"; - out.viewShareTitle = "Zapisz URL tylko do odczytu w schowku"; - out.viewOpen = "Otwórz podgląd w nowej karcie"; - out.viewOpenTitle = "Otwórz ten dokument w nowej karcie, tylko do odczytu"; - - out.notifyJoined = "{0} dołączył do sesji współpracy"; - out.notifyRenamed = "{0} jest teraz znany jako {1}"; - out.notifyLeft = "{0} opuścił sesję współpracy"; - - out.tryIt = 'Wypróbuj!'; - - out.okButton = 'OK (enter)'; - out.cancelButton = 'Anuluj (esc)'; - - // Polls - - out.poll_title = "Prosty koordynator spotkań"; // Choice of "Koordynator" can be discussed - out.poll_subtitle = "Proste planowanie spotkań, w czasie rzeczywistym"; - - out.poll_p_save = "Twoje ustawienia aktualizowane są na bieżąco. Nie martw się zapisywaniem."; - out.poll_p_encryption = "Wszystko co robisz jest szyfrowane, więc tylko osoby z linkiem mają tu dostęp. Nawet serwer nie widzi co kombinujesz."; - - out.wizardLog = "Naciśnij przycisk w lewym-górnym rogu by wrócić do planu"; - out.wizardTitle = "Uzyj kreatora by stworzyć opcje do głosowania"; - out.wizardConfirm = "Jesteś pewny, że chcesz dodać te opcje do głosowania?"; - - out.poll_closeWizardButton = "Zamknij kreator"; - out.poll_closeWizardButtonTitle = "Zamyka kreator"; - out.poll_wizardComputeButton = "Ustawienia kalkulacji"; - out.poll_wizardClearButton = "Wyczyść tabelę"; - out.poll_wizardDescription = "Automatycznie stwórz część opcji poprzez wpisanie ilości dat i godzin"; - out.poll_wizardAddDateButton = "+ Daty"; - out.poll_wizardAddTimeButton = "+ Godziny"; - - out.poll_optionPlaceholder = "Opcja"; - out.poll_userPlaceholder = "Twoje imię"; - out.poll_removeOption = "Jesteś pewien, że chcesz usunąć tę opcję?"; - out.poll_removeUser = "Jesteś pewien, że chcesz usunąć tego użytkownika?"; - - out.poll_titleHint = "Tytuł"; - out.poll_descriptionHint = "Opis"; - - // index.html - - out.main_p2 = 'Ten projekt wykorzystuje wizualny edytor CKEditor , CodeMirror, oraz silnik czasu rzeczywistego ChainPad.'; - out.main_howitworks = 'Jak to działa'; - out.main_howitworks_p1 = 'CryptPad wykorzystuje wariant algorytmu Transformacji operacyjnej który jest wstanie odnaleźć rozdzielony konsensus wprowadzanych danych. Używa do tego Łańcuch blokowy Nakamoto, twór zpopularyzowany przez Bitcoin. W ten sposób algorytm może pominąć potrzebę centralnego serwera do rozwiązywania Konfliktów Operacji Przekształcania poprzez Edycję. Bez potrzeby rozwiązywania konfliktów, serwer może pozostać w niewiedzy o zawartości która jest edytowana w dokumencie.'; - - out.main_about_p2 = 'Jeżeli masz jakieś pytania lub komentarze, możesz napisać na tweeterze, otworzyć problem na githubie, przywitać się na ircu (irc.freenode.net), lub wysłać nam email.'; - - out.button_newpad = 'STWÓRZ PAD WYSIWYG'; - out.button_newcode = 'STWÓRZ PAD DO KODU'; - out.button_newpoll = 'STWÓRZ GŁOSOWANIE'; - out.button_newslide = 'STWÓRZ PREZENTACJĘ'; - - // privacy.html - - out.policy_title = 'Polityka prywatności CryptPad'; - out.policy_whatweknow = 'Co o tobie wiemy'; - out.policy_whatweknow_p1 = 'Jako aplikacja udostępniana w internecie, CryptPad ma dostęp do metadanych wystawianych przez protokół HTTP. W skład tych danych wchodzi adres IP oraz różne inne nagłówki HTTP które pozwalają na identyfikację twojej przeglądarki. Możesz podejrzeć jakie informacje udostępnia twoja przeglądarka odwiedzając WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'Używamy Piwik, Open Sourcowej platformy analitycznej, aby dowiedzieć się czegoś o naszych użytkownikach. Piwik mówi nam, skąd dowiedziałeś się o Cryptpad. Bezpośrednio przez adres, silnik wyszukiwany, czy z polecenia innej usługi internetowej jak Reddit czy Twitter. Uczymy się również gdy nas odwiedzasz, jakie linki odwiedzasz z naszej strony informacyjnej i jak długo pozostajesz na konkretnych stronach.'; - out.policy_howweuse = 'Jak wykorzystujemy zebraną wiedzę'; - out.policy_howweuse_p1 = 'Dzieki tym informacjom możemy podejmować lepsze decyzje przy promocji CryptPad, poprzez ocenę które z podjętych przez nas prób okazały się udane. Informacja o twojej lokalizacji daje nam znać, czy powinniśmy zapewnić lepsze wsparcie dla języków poza Angielskim.'; - out.policy_howweuse_p2 = "Informacje o twojej przeglądarce (czy jest to aplikacja desktopowa, czy działająca na systemie mobilnym) pozwalają nam na decydowanie przy priorytezowaniu ulepszeń funkcji. Nasz zespół deweloperski jest mały, a my staramy się dokonywać wyborów które poprawią doświadczenia jak największej liczby użytkowników."; - out.policy_whatwetell = 'Jakie dane przekazujemy innym'; - out.policy_whatwetell_p1 = 'Nie dostarczamy osobom trzecim żadnych danych które udało się nam zebrać, lub tych które nam przekazałeś sam, dopóki nie jesteśmy do tego zobligowani prawnie.'; - out.policy_links = 'Adresy innych stron'; - out.policy_links_p1 = 'Ta witryna zawiera łącza do innych stron, włączając w to te stworzone przez inne organizacje. Nie jesteśmy odpowiedzialni za praktyki dotyczące prywatności oraz zawartość usługodawców poza tą witryną. Jako główną zasadę przyjmujemy, że łącza do stron zewnętrznych uruchamiane są w nowej karcie lub oknie, aby upewnić cię iż opuszczasz Cryptpad.'; - out.policy_ads = 'Promocja i reklama'; - out.policy_ads_p1 = 'Nie wyświetlamy żadnej zawartości promocyjnej online, choć możemy udostępniać łącza do podmiotów finansujących nasze badania.'; - out.policy_choices = 'Co możesz zrobić'; - out.policy_choices_open = 'Nasz kod jest open source, więc zawsze masz możliwość hostowania swojej własnej wersji Cryptpad.'; - out.policy_choices_vpn = 'Jeżeli chcesz korzystać z wersji udostępnianej przez nas, lecz nie chcesz pokazywać swojego adresu IP, możesz chronić swój adres wykorzystując przeglądarki Tor, lub VPN.'; - out.policy_choices_ads = 'Masz również możliwość blokady naszej platformy analitycznej wykorzystując narzędzia adblock, takie jak Privacy Badger.'; - - // terms.html - - out.tos_title = "Warunki korzystania z usług Cryptpad"; - out.tos_legal = "Prosimy abyś nie był złośliwy, obelżywy i nie wykorzystywał tego oprogramowania do celow niezgodnych z prawem."; - out.tos_availability = "Mamy nadzieję iż uznasz tę usługę za przydatną, lecz dostępność i wydajność nie mogą być przez nas gwarantowane. Prosimy, abyś eksportował swoje dane regularnie."; - out.tos_e2ee = "Dokumenty Cryptpad mogą być odczytywane i modyfikowane przez każdego kto może zgadnąć lub w inny sposób uzyskać identyfikator dokumentu. Polecamy korzystania z oprogramowania szyfrującego end-to-end (e2ee) do udostępniania linków URL. Nie będziesz rościł sobie żadnych wierzytelności w wypadku gdy taki URL dostanie się w niepowołane ręce."; - out.tos_logs = "Metadane dostarczane przez twoją przeglądarkę do serwera mogą być zapisywane i przechowywane w celu utrzymywania serwisu."; - out.tos_3rdparties = "Nie dostarczamy indywidualizowanych danych do osób trzecich, poza sytuacjami dyktowanymi prawnie."; - - // BottomBar.html - - out.bottom_france = 'Stworzone z we '; - out.bottom_support = 'Projekt XWiki SAS Labs we wspolpracy z OpenPaaS-ng'; - - // Header.html - - out.header_france = 'Pełne z France od XWiki SAS'; - - - // TODO Hardcode cause YOLO - //out.header_xwiki = 'XWiki SAS'; - out.header_support = ' OpenPaaS-ng'; - out.header_logoTitle = 'Przejdź na stronę główną'; - - return out; -}); diff --git a/www/common/translations/old/messages.pt-br.js b/www/common/translations/old/messages.pt-br.js deleted file mode 100644 index 24cccdea0..000000000 --- a/www/common/translations/old/messages.pt-br.js +++ /dev/null @@ -1,552 +0,0 @@ -// Tradução para protuguês brasileiro efetuada por Gustavo Henrique Machado da Silva (www.linkedin.com/in/gustavohmsilva) -// Embora o software original possa não possuir as mesmas licenças, a tradução produzida por mim é protegida sob termos -// Creative Commons, Attribution-ShareAlike 4.0 International -// Contate-me via email no endereço gustavohmsilva@member.fsf.org -// Translation to brazilian portuguese done by Gustavo Henrique Machado da Silva (www.linkedin.com/in/gustavohmsilva) -// Even though this software may not share the same licenses, the translation produced by me is protected under -// Creative commons, Attribution-ShareAlike 4.0 International -// You can contact me over email on gustavohmsilva@member.fsf.org - -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - out._languageName = 'Brazilian Portuguese'; - - out.main_title = "Cryptpad: Zero Knowledge, Edição Colaborativa em Tempo Real"; - out.main_slogan = "União é Força - Colaboração é a Chave"; - - out.type = {}; - out.type.pad = 'Notas'; - out.type.code = 'Código'; - out.type.poll = 'votação'; - out.type.slide = 'Apresentação'; - - out.type.drive = 'Drive'; - out.type.whiteboard = 'Whiteboard'; - out.type.file = 'File'; - out.type.media = 'Media'; - - out.button_newpad = 'Novo bloco RTF'; - out.button_newcode = 'Novo bloco de código'; - out.button_newpoll = 'Novo questionário'; - out.button_newslide = 'Nova apresentação'; - out.button_newwhiteboard = 'Novo quadro branco'; - - // NOTE: We want to update the 'common_connectionLost' key. - // Please do not add a new 'updated_common_connectionLostAndInfo' but change directly the value of 'common_connectionLost' - out.updated_0_common_connectionLost = "Conexão com o Servidor Perdida
    Você agora está em modo somente leitura até a conexão ser restaurada."; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = 'Incapaz de se conectar com o servidor websocket...'; - out.typeError = "Este bloco não é compatível com a aplicação selecionada"; - out.onLogout = 'você foi desconectado, {0}clique aqui{1} para se conectar,
    ou pressione ESC para acessar seu bloco em modo somente leitura.'; - out.wrongApp = "Incapaz de mostrar o conteúdo em tempo real no seu navegador. Por favor tente recarregar a página."; - - out.loading = "Carregando..."; - out.error = "Erro"; - out.saved = "Salvo"; - out.synced = "Tudo foi salvo"; - out.deleted = "Bloco deletado do seu CryptDrive"; - - - out.disconnected = 'Desconectado'; - out.synchronizing = 'Sincronizando'; - out.reconnecting = 'Reconectando...'; - out.lag = 'Lag'; - out.readonly = 'Somente leitura'; - out.anonymous = "Anonimo"; - out.yourself = "Você"; - out.anonymousUsers = "Usuários anônimos"; - out.anonymousUser = "Usuário anônimo"; - out.users = "Usuários"; - out.and = "e"; - out.viewer = "vizualizações"; - out.viewers = "leitores"; - out.editor = "editor"; - out.editors = "editores"; - - out.language = "Lingua"; - - out.comingSoon = "Em breve..."; - - out.newVersion = 'O CryptPad foi atualizado!
    ' + - 'Cheque as novidades na última versão:
    '+ - 'Notas da atualização do CryptPad {0}'; - - out.upgrade = "Upgrade"; - out.upgradeTitle = "Faça um upgrade na sua conta para aumentar o limite de armazenamento"; - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.greenLight = "Tudo está funcionando bem"; - out.orangeLight = "Sua conexão lenta pode impactar sua experiência"; - out.redLight = "Você está desconectado da sua sessão"; - - - out.pinLimitReached = "Você alcançou o limite de armazenamento"; - out.updated_0_pinLimitReachedAlert = "Você alcançou o limite de armazenamento. Novos blocos não serão mais salvos no seu CryptDrive.
    " + - 'Você pode deletar blocos do seu CryptDrive ou se inscrever como premium para aumentar o limite de espaço.'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinAboveLimitAlert = 'A partir desta atualização, nós estamos impondo um limite de 50MB no armazenamento gratuito. Você está atualmente usando {0}. Você irá precisar deletar alguns blocos ou se inscrever no accounts.cryptpad.fr. Sua contribuição irá nos ajudar a melhorar o CryptPad e expandir a metodologia Zero Knowledge. Por favor contacte o suporte se você possui outras dúvidas.'; - out.pinLimitNotPinned = "Você alcançou o limite de armazenamento.
    "+ - "Este bloco não está armazenado no seu CryptDrive."; - out.pinLimitDrive = "Você alcançou o limite de armazenamento.
    " + - "Você não pode criar novos blocos."; - - out.importButtonTitle = 'Importar um documento de um arquivo local'; - - out.exportButtonTitle = 'Exportar esta sesão para um arquivo local'; - out.exportPrompt = 'Como deseja nomear seu arquivo?'; - - - out.changeNamePrompt = 'Mude seu nome (deixe em branco para se manter anônimo): '; - out.user_rename = "Mudar nome de exibição"; - out.user_displayName = "Nome visível"; - out.user_accountName = "Nome da Conta"; - - out.clickToEdit = "Clique para Editar"; - - out.forgetButtonTitle = 'Remova este documento da listagem da sua página'; - out.forgetPrompt = 'Clicando OK você irá remover o endereço deste bloco de notas do armazenamento local, você tem certeza?'; - out.movedToTrash = 'That pad has been moved to the trash.
    Access my Drive'; - - out.shareButton = 'Compartilhar'; - out.shareSuccess = 'Endereço copiado para o clipboard'; - - out.newButton = 'Novo'; - out.newButtonTitle = 'Criar um novo bloco'; - - out.saveTemplateButton = "Salvar como modelo"; - out.saveTemplatePrompt = "Escolha o nome do modelo"; - out.templateSaved = "Modelo salvo!"; - out.selectTemplate = "Selecione um modelo ou pressione ESC"; - - out.previewButtonTitle = "Mostrar ou esconder o modo de visualização markdown"; - - out.presentButtonTitle = "Entrar no modo apresentação"; - - out.backgroundButtonTitle = 'Mudar cor do fundo da apresentação'; - out.colorButtonTitle = 'Mudar a cor do texto no modo apresentação'; - - out.printButton = "Imprimir (Enter)"; - out.printButtonTitle = "Imprimir seus slides ou exportá-los como PDF"; - out.printOptions = "Opções de leiaute"; - out.printSlideNumber = "Mostrar o número do slide"; - out.printDate = "Mostrar a data"; - out.printTitle = "Mostrar título do bloco"; - out.printCSS = "Custom style rules (CSS):"; - out.printTransition = "Ativar animações de transição"; - - out.slideOptionsTitle = "Personalizar seus slides"; - out.slideOptionsButton = "Salvar (Enter)"; - - - out.editShare = "Compartilhar endereço editável"; - out.editShareTitle = "Copiar endereço editável"; - out.editOpen = "Abrir endereço editável em nova aba"; - out.editOpenTitle = "Abrir este bloco em modo editável em nova aba"; - out.viewShare = "Compartilhar endereço de visualização"; - out.viewShareTitle = "Copiar o endereço somente leitura"; - - out.notifyJoined = "{0} entraram na sessão colaborativa"; - out.notifyRenamed = "{0} agora é conhecido como {1}"; - out.notifyLeft = "{0} deixou essa sessão colaborativa"; - - - out.okButton = 'OK (Enter)'; - - out.cancel = "Cancelar"; - out.cancelButton = 'Cancelar (ESC)'; - - out.historyButton = "Exibir histórico do documento"; - out.history_next = "Ir para próxima versão"; - out.history_prev = "Ir para versão anterior"; - out.history_goTo = "Ir para versão selecionada"; - out.history_close = "Voltar"; - out.history_closeTitle = "Fechar o histórico"; - out.history_restore = "Restaurar"; - out.history_restoreTitle = "Restaurar a versão selecionada do documento"; - out.history_restorePrompt = "Você tem certeza que deseja substituir a versão atual do documento pela que está sendo exibida agora?"; - out.history_restoreDone = "Documento restaurado"; - out.history_version = "Versão:"; - out.tryIt = 'Experimente!'; - - // Polls - - out.poll_title = "Seletor de dados zero knowledge"; - out.poll_subtitle = "Zero Knowledge, agendamento em tempo real"; - - out.poll_p_save = "Suas configurações são atualizadas instantaneamente, assim você nunca terá de salvá-las"; - out.poll_p_encryption = "Tudo que der entrada é encriptado para que apenas as pessoas com o link possam acessá-las. Nem mesmo o servidor pode ver suas mudanças."; - - out.wizardLog = "Clique no botão no topo esquerdo para voltar para sua enquete"; - out.wizardTitle = "Use o assistente para criar sua enquete"; - out.wizardConfirm = "Você está realmente pronto para adicionar estas opções em sua enquete?"; - - out.poll_publish_button = "Publicar"; - out.poll_admin_button = "Admin"; - out.poll_create_user = "Adicionar novo usuário"; - out.poll_create_option = "Adicionar nova opção"; - out.poll_commit = "Submeter"; - - out.poll_closeWizardButton = "Fechar assistente"; - out.poll_closeWizardButtonTitle = "Fechar assistente"; - out.poll_wizardComputeButton = "Computar opções"; - out.poll_wizardClearButton = "Limpar tabela"; - out.poll_wizardDescription = "Automaticamente criar um número de opções entrando qualquer número de seguimentos de datas e horários"; - out.poll_wizardAddDateButton = "+ Datas"; - out.poll_wizardAddTimeButton = "+ Horários"; - - out.poll_optionPlaceholder = "Alternativa"; - out.poll_userPlaceholder = "Seu nome"; - - out.poll_removeOption = "Você tem certeza que deseja remover esta opção?"; - - out.poll_removeUser = "Você tem certeza que quer remover este usuário?"; - - out.poll_titleHint = "Título"; - out.poll_descriptionHint = "Descrição"; - - - // Canvas - out.canvas_clear = "Limpar"; - out.canvas_delete = "Deletar seleção"; - out.canvas_disable = "Desabilitar desenho"; - out.canvas_enable = "Habilitar desenho"; - out.canvas_width = "Largura"; - out.canvas_opacity = "Opacidade"; - - // File manager - - out.fm_rootName = "Documentos"; - out.fm_trashName = "Lixeira"; - out.fm_unsortedName = "Arquivos não organizados"; - out.fm_filesDataName = "Todos os Arquivos"; - out.fm_templateName = "Temas"; - out.fm_searchName = "Busca"; - out.fm_searchPlaceholder = "Buscar..."; - out.fm_newButton = "Novo"; - out.fm_newButtonTitle = "Criar um novo bloco ou diretório"; - out.fm_newFolder = "Novo diretório"; - out.fm_newFile = "Novo bloco"; - out.fm_folder = "Diretório"; - out.fm_folderName = "Nome do diretório"; - out.fm_numberOfFolders = "# de diretórios"; - out.fm_numberOfFiles = "# de arquivos"; - out.fm_fileName = "Nome do arquivo"; - out.fm_title = "Título"; - out.fm_type = "Tipo"; - out.fm_lastAccess = "Último acesso"; - out.fm_creation = "Criação"; - out.fm_forbidden = "Ação não permitida"; - out.fm_originalPath = "Caminho original"; - out.fm_openParent = "Exibir no diretório"; - out.fm_noname = "Documento sem título"; - out.fm_emptyTrashDialog = "Você tem certeza que deseja limpar a lixeira??"; - out.fm_removeSeveralPermanentlyDialog = "Você tem certeza que deseja deletar estes {0} elementos da lixeira permanentemente?"; - out.fm_removePermanentlyDialog = "Você tem certeza que deseja deletar este elemento da lixeira permanentemente?"; - out.fm_removeSeveralDialog = "Você tem certeza que deseja mover estes {0} elementos para a lixeira?"; - out.fm_removeDialog = "Você tem certeza que deseja mover {0} para a lixeira?"; - out.fm_restoreDialog = "Você tem certeza que deseja restaurar {0} de volta para seu diretório original?"; - out.fm_unknownFolderError = "O diretório selecionado ou visitado por último não existe mais. Abrindo diretório superior..."; - out.fm_contextMenuError = "Incapaz de abrir o menu de contextualização para este elementos. Se o problema persistir, tente recarregar a página."; - out.fm_selectError = "Incapaz de selecionar o elemento marcado. Se o problema persistir, tente recarregar a página."; - out.fm_categoryError = "Incapaz de abrir a categoria selecionada, Exibindo diretório raiz"; - out.fm_info_root = "Crie quantos diretórios aninhados aqui desejar para organizar seus arquivos.."; - out.fm_info_unsorted = "Contém todos os arquivos que você visitou e não estão ainda organizados na pasta Documentos ou foram movidos para a pasta lixeira"; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" out.fm_info_template = 'Contains all the pads stored as templates and that you can re-use when you create a new pad.'; - out.updated_0_fm_info_trash = 'Empty your trash to free space in your CryptDrive.'; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = 'Contém todos os arquivos de "Documentos", "Não organizados" e "Lixeira". Não é possível mover ou remover arquivos daqui.'; // Same here - out.fm_info_anonymous = 'Você não está logado, então estes blocos podem ser deletados! (Descubra o porque). ' + - 'Cadastre-se or Entre Para deixá-los salvos.'; - out.fm_alert_backupUrl = "Link de backup desta conta.
    " + - "É fortemente recomendado que você deixe para você e somente você.
    " + - "Você pode usá-lo para resgatar os seus dados caso a memória do seu navegador se perca.
    " + - "Qualquer um com este link pode editar ou apagar todos os arquivos no gerenciador da conta.
    "; - out.fm_alert_anonymous = "Ola! Você está utilizando o CryptPad anonimamente, isto é ok, mas seus blocos podem ser apagados " + - "se ficarem muito tempo inativo. Nós desativamos as funções avançadas nas contas anônimas para que isto fique claro para você " + - 'Este não é um bom lugar apra salvar senhas! Entenda: Clicando aqui! ' + - 'Porque estamos fazendo isso e porque você deveria criar uma onta? Sign up and Clique e entenda!.'; - out.fm_backup_title = 'Link de restauração'; - out.fm_nameFile = 'Como deseja nomear este arquivo?'; - out.fm_error_cantPin = "Erro interno do servidor. Por favor recarregue a página e tente novamente."; - // File - Context menu - out.fc_newfolder = "Nova pasta"; - out.fc_rename = "Renomear"; - out.fc_open = "Abrir"; - out.fc_open_ro = "Abrir (somente leitura)"; - out.fc_delete = "Deletar"; - out.fc_restore = "Restaurar"; - out.fc_remove = "Deletar permanentemente"; - out.fc_empty = "Esvaziar lixeira"; - out.fc_prop = "Propriedades"; - out.fc_sizeInKilobytes = "tamanho em Kilobytes"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "Você não pode mover uma pasta na lista de notas não organizadas"; - out.fo_existingNameError = "Nome já em uso neste diretório. Por favor escolha outro."; - out.fo_moveFolderToChildError = "Você não pode mover uma sub-diretório para dentro de um de seus sub-diretórios"; - out.fo_unableToRestore = "Fomos incapazes de restaurar este arquivo para sua posição original. Você pode tentar move-lo para o local de destino porém."; - out.fo_unavailableName = "Um arquivo ou diretório com o mesmo nome já existe no novo locao. Renomeie-o e tente novamente."; - - // login - out.login_login = "Entrar"; - out.login_makeAPad = 'Criar bloco anonimamente'; - out.login_nologin = "Navegar nos blocos locais"; - out.login_register = "Cadastro"; - out.logoutButton = "Sair"; - out.settingsButton = "Configurações"; - - out.login_username = "Usuário"; - out.login_password = "Senha"; - out.login_confirm = "Confirme sua senha"; - out.login_remember = "Memorize-me"; - - out.login_hashing = "Encriptando sua senha, isto pode tomar algum tempo."; - - out.login_hello = 'Ola {0},'; // {0} is the username - out.login_helloNoName = 'Ola,'; - out.login_accessDrive = 'Acesse seu diretório'; - out.login_orNoLogin = 'ou'; - - out.login_noSuchUser = 'Usuário ou senha inválido. Tente nocamente ou cadastre-se'; - out.login_invalUser = 'É necessário um usuário'; - out.login_invalPass = 'É necessário uma senha'; - out.login_unhandledError = 'Um erro não esperado ocorreu :('; - - out.register_importRecent = "Importar histórico de blocos (Recomendado)"; - out.register_acceptTerms = "Eu aceito os termos de serviço"; - out.register_passwordsDontMatch = "Senhas não coincidem!"; - out.register_mustAcceptTerms = "Você precisa aceitar os termos de serviço."; - out.register_mustRememberPass = "Nós não podemos restaurar sua senha caso você a esqueça. É muito importante que você lembre-se dela! Clique nesta caixa de seleção para confirmar que você compreendeu isto."; - - out.register_header = "Bem vindo ao CryptPad"; - out.register_explanation = [ - "

    Lets go over a couple things first

    ", - "
      ", - "
    • Your password is your secret key which encrypts all of your pads. If you lose it there is no way we can recover your data.
    • ", - "
    • You can import pads which were recently viewed in your browser so you have them in your account.
    • ", - "
    • If you are using a shared computer, you need to log out when you are done, closing the tab is not enough.
    • ", - "
    " - ].join(''); - - - out.register_writtenPassword = "I have written down my username and password, proceed"; - out.register_cancel = "Go back"; - - out.register_warning = "Zero Knowledge means that we can't recover your data if you lose your password."; - - out.register_alreadyRegistered = "This user already exists, do you want to log in?"; - - // Settings - out.settings_title = "Settings"; - out.settings_save = "Save"; - out.settings_backupTitle = "Backup or restore all your data"; - out.settings_backup = "Backup"; - out.settings_restore = "Restore"; - out.settings_resetTitle = "Clean your drive"; - out.settings_reset = "Remove all the files and folders from your CryptDrive"; - out.settings_resetPrompt = "This action will remove all the pads from your drive.
    "+ - "Are you sure you want to continue?
    " + - "Type “I love CryptPad” to confirm."; - out.settings_resetDone = "Your drive is now empty!"; - out.settings_resetError = "Incorrect verification text. Your CryptDrive has not been changed."; - out.settings_resetTips = "Tips in CryptDrive"; - out.settings_resetTipsButton = "Reset the available tips in CryptDrive"; - out.settings_resetTipsDone = "All the tips are now visible again."; - - out.settings_importTitle = "Import this browser's recent pads in my CryptDrive"; - out.settings_import = "Import"; - out.settings_importConfirm = "Are you sure you want to import recent pads from this browser to your user account's CryptDrive?"; - out.settings_importDone = "Import completed"; - - out.settings_userFeedbackHint1 = "CryptPad provides some very basic feedback to the server, to let us know how to improve your experience."; - out.settings_userFeedbackHint2 = "Your pad's content will never be shared with the server."; - out.settings_userFeedback = "Enable user feedback"; - - out.settings_anonymous = "You are not logged in. Settings here are specific to this browser."; - out.settings_publicSigningKey = "Public Signing Key"; - - out.settings_usage = "Usage"; - out.settings_usageTitle = "See the total size of your pinned pads in MB"; - out.settings_pinningNotAvailable = "Pinned pads are only available to registered users."; - out.settings_pinningError = "Something went wrong"; - out.settings_usageAmount = "Your pinned pads occupy {0}MB"; - - out.settings_logoutEverywhereTitle = "Log out everywhere"; - out.settings_logoutEverywhere = "Log out of all other web sessions"; - out.settings_logoutEverywhereConfirm = "Are you sure? You will need to log in with all your devices."; - - out.upload_serverError = "Server Error: unable to upload your file at this time."; - out.upload_uploadPending = "You already have an upload in progress. Cancel it and upload your new file?"; - out.upload_success = "Your file ({0}) has been successfully uploaded and added to your drive."; - out.upload_notEnoughSpace = "There is not enough space for this file in your CryptDrive."; - out.upload_tooLarge = "This file exceeds the maximum upload size."; - out.upload_choose = "Choose a file"; - out.upload_pending = "Pending"; - out.upload_cancelled = "Cancelled"; - out.upload_name = "File name"; - out.upload_size = "Size"; - out.upload_progress = "Progress"; - out.download_button = "Decrypt & Download"; - - // general warnings - out.warn_notPinned = "This pad is not in anyone's CryptDrive. It will expire after 3 months. Learn more..."; - - - // index.html - - //about.html - out.main_p2 = 'This project uses the CKEditor Visual Editor, CodeMirror, and the ChainPad realtime engine.'; - out.main_howitworks_p1 = 'CryptPad uses a variant of the Operational transformation algorithm which is able to find distributed consensus using a Nakamoto Blockchain, a construct popularized by Bitcoin. This way the algorithm can avoid the need for a central server to resolve Operational Transform Edit Conflicts and without the need for resolving conflicts, the server can be kept unaware of the content which is being edited on the pad.'; - - // contact.html - out.main_about_p2 = 'If you have any questions or comments, you can tweet us, open an issue on github, come say hi on irc (irc.freenode.net), or send us an email.'; - - out.main_info = "

    Collaborate in Confidence


    Grow your ideas together with shared documents while Zero Knowledge technology secures your privacy; even from us."; - - out.main_howitworks = 'How It Works'; - out.main_zeroKnowledge = 'Zero Knowledge'; - out.main_zeroKnowledge_p = "You don't have to trust that we won't look at your pads, with CryptPad's revolutionary Zero Knowledge Technology we can't. Learn more about how we protect your Privacy and Security."; - out.main_writeItDown = 'Write it down'; - out.main_writeItDown_p = "The greatest projects come from the smallest ideas. Take down the moments of inspiration and unexpected ideas because you never know which one might be a breakthrough."; - out.main_share = 'Share the link, share the pad'; - out.main_share_p = "Grow your ideas together: conduct efficient meetings, collaborate on TODO lists and make quick presentations with all your friends and all your devices."; - out.main_organize = 'Get organized'; - out.main_organize_p = "With CryptPad Drive, you can keep your sights on what's important. Folders allow you to keep track of your projects and have a global vision of where things are going."; - out.tryIt = 'Try it out!'; - out.main_richText = 'Rich Text editor'; - out.main_richText_p = 'Edit rich text pads collaboratively with our realtime Zero Knowledge CkEditor application.'; - out.main_code = 'Code editor'; - out.main_code_p = 'Edit code from your software collaboratively with our realtime Zero Knowledge CodeMirror application.'; - out.main_slide = 'Slide editor'; - out.main_slide_p = 'Create your presentations using the Markdown syntax, and display them in your browser.'; - out.main_poll = 'Polls'; - out.main_poll_p = 'Plan your meeting or your event, or vote for the best solution regarding your problem.'; - out.main_drive = 'CryptDrive'; - - out.footer_applications = "Applications"; - out.footer_contact = "Contact"; - out.footer_aboutUs = "About us"; - - out.about = "About"; - out.privacy = "Privacy"; - out.contact = "Contact"; - out.terms = "ToS"; - out.blog = "Blog"; - - - // privacy.html - - out.policy_title = 'Política de privacidade do Cryptpad'; - out.policy_whatweknow = 'O que nós sabemos sobre você'; - out.policy_whatweknow_p1 = 'Por ser uma aplicação hospedada na web, O Cryptpad tem acesso aos metadados expostos pelo protocolo HTTP. Isso inclui seu endereço IP, e vários cabeçalhos do HTTP que podem ser usados para identificar seu browser particular. Você pode ver que informações seu navegador está compartilhando ao visitar WhatIsMyBrowser.com.'; - out.policy_whatweknow_p2 = 'Nós usamos a plataforma de análise Piwik, uma plataforma analítica open source, para aprender mais sobre nossos usos. Piwik nos informa como você encontrou o Cryptpad, via digitação direta, através de mecanismos de busca, ou via link de outro serviço web como o Reddit ou o Twitter. Nós também aprendemos com suas visitas, que links você clica enquanto está em nossas páginas de informações, e quanto tempo você fica nestas páginas.'; - out.policy_howweuse = 'Como utilizamos o que nós aprendemos'; - out.policy_howweuse_p1 = 'Nos utilizamos estas informações para tomar melhores decisões sobre como promover o Cryptpad, ao avaliar quais dos nosso esforços passados foram mais bem sucedidos. Informações sobre sua localização nos ajudam a decidir se nós devemos considerar prover melhor suporte para idiomas além do inglês.'; - out.policy_howweuse_p2 = "As informações sobre o seu navegador de internet (não importando se é um desktop ou um equipamento móvel) nos ajudam a tomar melhores decisões ao priorizar melhorias futuras. Nossa equipe de desenvolvimento é pequena, e nós tentamos fazer as melhores escolhas em pró de auxiliar a experiência de utilização do máximo de nossos usuários possíveis."; - out.policy_whatwetell = 'O que contamos a terceiros sobre você'; - out.policy_whatwetell_p1 = 'Nós não informamos terceiros a informação que armazenamos ou que provemos a você, salvo caso sejamos legalmente requisitados a faze-lo.'; - out.policy_links = 'Links para outros sites'; - out.policy_links_p1 = 'Este site contém ligações para outros sites, incluindo aqueles produzidos por terceiros. Nós não nos responsabilizamos pelas práticas de privacidade ou o conteúdo destes sites. Como regra geral, links para páginas fora de nosso domínio são lançadas em novas janelas ou abas, para deixar claro a todos os visitantes que eles estão deixando o site Cryptpad.fr.'; - out.policy_ads = 'Publicidade'; - out.policy_ads_p1 = 'Nós não disponibilizamos publicidade online, porém podemos prover links de acesso para obtenção de financiamento para auxiliar em nossa pesquisa e desenvolvimento.'; - out.policy_choices = 'As escolhas que você tem'; - out.policy_choices_open = 'Nosso código fonte é open source, portanto você sempre tem a opção de hospedar sua própria instância do Cryptpad.'; - out.policy_choices_vpn = 'Se você deseja usar nosso site principal, porém não deseja expor seu endereço IP, Você pode se proteger utilizando o Navegador seguro Tor, ou uma VPN.'; - out.policy_choices_ads = 'Se você deseja apenas bloquear nossa plataforma analítica, você pode utilizar ferramentas de bloqueio de propagandas como o Privacy Badger.'; - - // terms.html - - out.tos_title = "Termos de serviço doCryptpad"; - out.tos_legal = "Pedimos encarecidamente que, como usuário desta plataforma, você evite a prática de quaisquer atos ilegais e que evite a utilização maliciosa e/ou abusiva desta plataforma."; - out.tos_availability = "Nós esperamos que você ache este serviço útil, porém nós não podemos garantir a disponibilidade constante ou a alta performance do mesmo. Por favor, mantenha um backup dos seus dados como forma de segurança adicional."; - out.tos_e2ee = "Os documentos do CryptPad podem ser modificados por qualquer um que conseguir adivinhar ou obter de qualquer forma o seu identificador único. Nós recomendamos que você utilize criptografia ponto a ponto de mensagens (e2ee) sempre que possível para compartilhar suas URL's. Nós não assumimos qualquer responsabilidade sobre chaves e/ou URL’s e seus respectivos conteúdos vazadas para o público."; - out.tos_logs = "Os Metadados providos pelo seu navegador para nosso servidor podem ser armazenados com o propósito de manter o serviço em funcionamento"; - out.tos_3rdparties = "Nós não disponibilizamos dados individuais para terceiros, salvo quando requisitado legalmente."; - - // BottomBar.html - - out.bottom_france = 'Feito com na '; - out.bottom_support = 'Um projeto do laboratório XWiki SAS com o suporte da OpenPaaS-ng'; - - // Header.html - - out.header_france = 'Com da France por XWiki SAS'; - - out.header_support = ' OpenPaaS-ng'; - out.header_logoTitle = 'Go to the main page'; - - // Initial states - - out.initialState = [ - '

    ', - 'This is CryptPad, the Zero Knowledge realtime collaborative editor. Everything is saved as you type.', - '
    ', - 'Share the link to this pad to edit with friends or use the button to share a read-only link which allows viewing but not editing.', - '

    ', - ].join(''); - - out.codeInitialState = [ - '# CryptPad\'s Zero Knowledge collaborative code editor\n', - '\n', - '* What you type here is encrypted so only people who have the link can access it.\n', - '* You can choose the programming language to highlight and the UI color scheme in the upper right.' - ].join(''); - - out.slideInitialState = [ - '# CryptSlide\n', - '1. Write your slides content using markdown syntax\n', - ' - Learn more about markdown syntax [here](http://www.markdowntutorial.com/)\n', - '2. Separate your slides with ---\n', - '3. Click on the "Play" button to see the result', - ' - Your slides are updated in realtime' - ].join(''); - - // Readme - - out.driveReadmeTitle = "What is CryptPad?"; - out.readme_welcome = "Welcome to CryptPad !"; - out.readme_p1 = "Welcome to CryptPad, this is where you can take note of things alone and with friends."; - out.readme_p2 = "This pad will give you a quick walk through of how you can use CryptPad to take notes, keep them organized and work together on them."; - out.readme_cat1 = "Get to know your CryptDrive"; - out.readme_cat1_l1 = "Make a pad: In your CryptDrive, click {0} then {1} and you can make a pad."; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "Open Pads from your CryptDrive: double-click on a pad icon to open it."; - out.readme_cat1_l3 = "Organize your pads: When you are logged in, every pad you access will be shown as in the {0} section of your drive."; // 0: Unsorted files - out.readme_cat1_l3_l1 = "You can click and drag files into folders in the {0} section of your drive and make new folders."; // 0: Documents - out.readme_cat1_l3_l2 = "Remember to try right clicking on icons because there are often additional menus."; - out.readme_cat1_l4 = "Put old pads in the trash: You can click and drag your pads into the {0} the same way you drag them into folders."; // 0: Trash - out.readme_cat2 = "Make pads like a pro"; - out.edit = "edit"; - out.view = "view"; - out.readme_cat2_l1 = "The {0} button in your pad allows you to give access to collaborators to either {1} or to {2} the pad."; // 0: Share, 1: edit, 2: view - out.readme_cat2_l2 = "Change the title of the pad by clicking on the pencil"; - out.readme_cat3 = "Discover CryptPad apps"; - out.readme_cat3_l1 = "With CryptPad code editor, you can collaborate on code like Javascript and markdown like HTML and Markdown"; - out.readme_cat3_l2 = "With CryptPad slide editor, you can make quick presentations using Markdown"; - out.readme_cat3_l3 = "With CryptPoll you can take quick votes, especially for scheduling meetings which fit with everybody's calendar"; - - // Tips - out.tips = {}; - out.tips.lag = "The green icon in the upper right shows the quality of your internet connection to the CryptPad server."; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` and `ctrl+u` are quick shortcuts for bold, italic and underline."; - out.tips.indent = "In numbered and bulleted lists, you can use tab or shift+tab to quickly increase or decrease indentation."; - out.tips.title = "You can set the title of your pad by clicking the top center."; - out.tips.store = "Every time you visit a pad, if you're logged in it will be saved to your CryptDrive."; - out.tips.marker = "You can highlight text in a pad using the \"marker\" item in the styles dropdown menu."; - - out.feedback_about = "If you're reading this, you were probably curious why CryptPad is requesting web pages when you perform certain actions"; - out.feedback_privacy = "We care about your privacy, and at the same time we want CryptPad to be very easy to use. We use this file to figure out which UI features matter to our users, by requesting it along with a parameter specifying which action was taken."; - out.feedback_optout = "If you would like to opt out, visit your user settings page, where you'll find a checkbox to enable or disable user feedback"; - - return out; -}); diff --git a/www/common/translations/old/messages.ro.js b/www/common/translations/old/messages.ro.js deleted file mode 100644 index c20896f3f..000000000 --- a/www/common/translations/old/messages.ro.js +++ /dev/null @@ -1,365 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - - out.main_title = "CryptPad: Zero Knowledge, Colaborare în timp real"; - out.main_slogan = "Puterea stă în cooperare - Colaborarea este cheia"; - - out.button_newpad = "Filă Text Nouă"; - out.button_newcode = "Filă Cod Nouă"; - out.button_newpoll = "Sondaj Nou"; - out.button_newslide = "Prezentare Nouă"; - out.button_newwhiteboard = "Fila Desen Nouă"; - out.updated_0_common_connectionLost = "Conexiunea la server este pierdută
    Până la revenirea conexiunii, vei fi în modul citire"; - out.common_connectionLost = out.updated_0_common_connectionLost; - out.websocketError = "Conexiune inexistentă către serverul websocket..."; - out.typeError = "Această filă nu este compatibilă cu aplicația aleasă"; - out.onLogout = "Nu mai ești autentificat, {0}apasă aici{1} să te autentifici
    sau apasă Escapesă accesezi fila în modul citire."; - out.wrongApp = "Momentan nu putem arăta conținutul sesiunii în timp real în fereastra ta. Te rugăm reîncarcă pagina."; - out.loading = "Încarcă..."; - out.error = "Eroare"; - - out.saved = "Salvat"; - out.synced = "Totul a fost salvat"; - out.deleted = "Pad șters din CryptDrive-ul tău"; - out.disconnected = "Deconectat"; - out.synchronizing = "Se sincronizează"; - out.reconnecting = "Reconectare..."; - out.lag = "Decalaj"; - out.readonly = "Mod citire"; - out.anonymous = "Anonim"; - out.yourself = "Tu"; - out.anonymousUsers = "editori anonimi"; - out.anonymousUser = "editor anonim"; - out.users = "Utilizatori"; - out.and = "Și"; - out.viewer = "privitor"; - out.viewers = "privitori"; - out.editor = "editor"; - out.editors = "editori"; - out.language = "Limbă"; - out.upgrade = "Actualizare"; - out.upgradeTitle = "Actualizează-ți contul pentru a mări limita de stocare"; - out.MB = "MB"; - out.greenLight = "Totul funcționează corespunzător"; - out.orangeLight = "Conexiunea lentă la internet îți poate afecta experiența"; - out.redLight = "Ai fost deconectat de la sesiune"; - out.pinLimitReached = "Ai atins limita de stocare"; - out.pinLimitReachedAlert = "Ai atins limita de stocare. Noile pad-uri nu vor mai fi stocate în CryptDrive.
    Pentru a rezolva această problemă, poți să nlături pad-uri din CryptDrive-ul tău (incluzând gunoiul) sau să subscrii la un pachet premium pentru a-ți extinde spațiul de stocare."; - out.pinLimitNotPinned = "Ai atins limita de stocare.
    Acest pad nu va fi stocat n CryptDrive-ul tău."; - out.pinLimitDrive = "Ai atins limita de stocare.
    Nu poți să creezi alte pad-uri."; - out.importButtonTitle = "Importă un pad dintr-un fișier local"; - out.exportButtonTitle = "Exportă pad-ul acesta către un fișier local"; - out.exportPrompt = "Cum ai vrea să îți denumești fișierul?"; - out.changeNamePrompt = "Schimbă-ți numele (lasă necompletat dacă vrei să fii anonim): "; - out.user_rename = "Schimbă numele afișat"; - out.user_displayName = "Nume afișat"; - out.user_accountName = "Nume cont"; - out.clickToEdit = "Click pentru editare"; - out.forgetButtonTitle = "Mută acest pad la gunoi"; - out.forgetPrompt = "Click-ul pe OK va muta acest pad la gunoi. Ești sigur?"; - out.movedToTrash = "Acest pad a fost mutat la gunoi.
    Acesează-mi Drive-ul"; - out.shareButton = "Distribuie"; - out.shareSuccess = "Link copiat în clipboard"; - out.newButton = "Nou"; - out.newButtonTitle = "Crează un nou pad"; - out.saveTemplateButton = "Salvează ca șablon"; - out.saveTemplatePrompt = "Alege un titlu pentru șablon"; - out.templateSaved = "Șablon salvat!"; - out.selectTemplate = "Selectează un șablon sau apasă escape"; - out.presentButtonTitle = "Intră în modul de prezentare"; - out.backgroundButtonTitle = "Schimbă culoarea de fundal din prezentare"; - out.colorButtonTitle = "Schimbă culoarea textului în modul de prezentare"; - out.printButton = "Printează (enter)"; - out.printButtonTitle = "Printează-ți slide-urile sau exportă-le ca fișier PDF"; - out.printOptions = "Opțiuni schemă"; - out.printSlideNumber = "Afișează numărul slide-ului"; - out.printDate = "Afișează data"; - out.printTitle = "Afișează titlul pad-ului"; - out.printCSS = "Reguli de stil personalizate (CSS):"; - out.printTransition = "Permite tranziția animațiilor"; - out.slideOptionsTitle = "Personalizează-ți slide-urile"; - out.slideOptionsButton = "Salvează (enter)"; - out.editShare = "Editează link-ul"; - out.editShareTitle = "Copiază link-ul de editare în clipboard"; - out.editOpen = "Deschide link-ul de editare într-o nouă filă"; - out.editOpenTitle = "Deschide acest pad în modul de editare într-o nouă filă"; - out.viewShare = "Link în modul citire"; - out.viewShareTitle = "Copiază link-ul în modul de citire în clipboard"; - out.viewOpen = "Deschide link-ul în modul de citire într-o filă nouă"; - out.viewOpenTitle = "Deschide acest pad în modul de citire într-o nouă filă"; - out.notifyJoined = "{0} s-au alăturat sesiunii colaborative"; - out.notifyRenamed = "{0} e cunoscut ca {1}"; - out.notifyLeft = "{0} au părăsit sesiunea colaborativă"; - out.okButton = "OK (enter)"; - out.cancel = "Anulează"; - out.cancelButton = "Anulează (esc)"; - out.historyButton = "Afișează istoricul documentului"; - out.history_next = "Mergi la versiunea următoare"; - out.history_prev = "Mergi la versiunea trecută"; - out.history_goTo = "Mergi la sesiunea selectată"; - out.history_close = "Înapoi"; - out.history_closeTitle = "Închide istoricul"; - out.history_restore = "Restabilește"; - out.history_restoreTitle = "Restabilește versiunea selectată a documentului"; - out.history_restorePrompt = "Ești sigur că vrei să înlocuiești versiunea curentă a documentului cu cea afișată?"; - out.history_restoreDone = "Document restabilit"; - out.history_version = "Versiune:"; - out.poll_title = "Zero Knowledge Selector Dată"; - out.poll_subtitle = "Zero Knowledge, realtime programare"; - out.poll_p_save = "Setările tale sunt actualizate instant, așa că tu nu trebuie să salvezi."; - out.poll_p_encryption = "Tot conținutul tău este criptat ca doar persoanele cărora tu le dai link-ul să aibă acces. Nici serverul nu poate să vadă ce modifici."; - out.wizardLog = "Click pe butonul din dreapta sus pentru a te ntoarce la sondajul tău"; - out.wizardTitle = "Folosește wizard-ul pentru a crea sondajul tău"; - out.wizardConfirm = "Ești pregătit să adaugi aceste opțiuni la sondajul tău?"; - out.poll_publish_button = "Publică"; - out.poll_admin_button = "Admin"; - out.poll_create_user = "Adaugă un nou utilizator"; - out.poll_create_option = "Adaugă o nouă opțiune"; - out.poll_commit = "Comite"; - out.poll_closeWizardButton = "Închide wizard-ul"; - out.poll_closeWizardButtonTitle = "Închide wizard-ul"; - out.poll_wizardComputeButton = "Calculează Opțiunile"; - out.poll_wizardClearButton = "Curăță Tabelul"; - out.poll_wizardDescription = "Crează automat un număr de opțiuni întroducând orice număr de zile sau intervale orare"; - - out.poll_wizardAddDateButton = "+ Zi"; - out.poll_wizardAddTimeButton = "+ Ore"; - out.poll_optionPlaceholder = "Opțiune"; - out.poll_userPlaceholder = "Numele tău"; - out.poll_removeOption = "Ești sigur că vrei să îndepărtezi această opțiune?"; - out.poll_removeUser = "Ești sigur că vrei să îndepărtezi aceast utilizator?"; - out.poll_titleHint = "Titlu"; - out.poll_descriptionHint = "Descrie sondajul, și apoi folosește butonul 'publică' când ai terminat. Orice utilizator care are link-ul poate modifica descrierea, dar descurajăm această practică."; - out.canvas_clear = "Curăță"; - out.canvas_delete = "Curăță selecția"; - out.canvas_disable = "Dezactivează modul desen"; - out.canvas_enable = "Activează modul desen"; - out.canvas_width = "Lățime"; - out.canvas_opacity = "Opacitate"; - out.fm_rootName = "Documente"; - out.fm_trashName = "Gunoi"; - out.fm_unsortedName = "Fișiere nesortate"; - out.fm_filesDataName = "Toate fișierele"; - out.fm_templateName = "Șabloane"; - out.fm_searchName = "Caută"; - out.fm_searchPlaceholder = "Caută..."; - out.fm_newButton = "Nou"; - out.fm_newButtonTitle = "Crează un nou pad sau folder"; - out.fm_newFolder = "Folder nou"; - out.fm_newFile = "Pad nou"; - out.fm_folder = "Folder"; - out.fm_folderName = "Numele folderului"; - out.fm_numberOfFolders = "# de foldere"; - out.fm_numberOfFiles = "# of files"; - out.fm_fileName = "Nume filă"; - out.fm_title = "Titlu"; - out.fm_type = "Tip"; - out.fm_lastAccess = "Ultima accesare"; - out.fm_creation = "Creare"; - out.fm_forbidden = "Acțiune interzisă"; - out.fm_originalPath = "Ruta inițială"; - out.fm_openParent = "Arată în folder"; - out.fm_noname = "Document nedenumit"; - out.fm_emptyTrashDialog = "Ești sigur că vrei să golești coșul de gunoi?"; - out.fm_removeSeveralPermanentlyDialog = "Ești sigur că vrei să ștergi pentru totdeauna aceste {0} elemente din coșul de gunoi?"; - out.fm_removePermanentlyDialog = "Ești sigur că vrei să ștergi acest element pentru totdeauna?"; - out.fm_removeSeveralDialog = "Ești sigur că vrei să muți aceste {0} elemente la coșul de gunoi?"; - out.fm_removeDialog = "Ești sigur că vrei să muți {0} la gunoi?"; - out.fm_restoreDialog = "Ești sigur că vrei să restabilești {0} în locația trecută?"; - out.fm_unknownFolderError = "Ultima locație vizitată sau cea selectată nu mai există. Deschidem fișierul părinte..."; - out.fm_contextMenuError = "Nu putem deschide meniul de context pentru acest element. Dacă problema persistă, reîncarcă pagina."; - out.fm_selectError = "Nu putem selecta elementul vizat. Dacă problema persistă, reîncarcă pagina."; - out.fm_categoryError = "Nu putem deschide categoria selectată, afișează sursa."; - out.fm_info_root = "Crează câte foldere tip cuib ai nevoie pentru a-ți sorta fișierele."; - out.fm_info_unsorted = "Conține toate fișierele pe care le-ai vizitat și nu sunt sortate în \"Documente\" sau mutate în \"Gunoi\"."; - out.fm_info_template = "Conține toate pad-urile stocate ca șabloane și pe care le poți refolosi atunci când creezi un nou pad."; - out.fm_info_trash = "Fișierele șterse din gunoi vor fi șterse și din \"Toate fișierele\", făcând imposibilă recuperarea fișierelor din managerul de fișiere."; - out.fm_info_allFiles = "Conține toate fișierele din \"Documente\", \"Nesortate\" și \"Gunoi\". Poți să muți sau să ștergi fișierele aici."; - out.fm_info_login = "Loghează-te"; - out.fm_info_register = "Înscrie-te"; - out.fm_info_anonymous = "Nu ești logat cu un cont valid așa că aceste pad-uri vor fi șterse (află de ce). Înscrie-te sau Loghează-te pentru a le salva."; - out.fm_alert_backupUrl = "Link copie de rezervă pentru acest drive.
    Este foarte recomandat să o păstrezi pentru tine.
    Poți să o folosești pentru a recupera toate fișierele în cazul în care memoria browserului tău este șterge..
    Oricine are linkul poate să editeze sau să îndepărteze toate fișierele din managerul tău de documente.
    "; - out.fm_alert_anonymous = "Salut, momentan folosești CryptPad în mod anonim. Este ok, doar că fișierele tale vor fi șterse după o perioadă de inactivitate. Am dezactivat caracteristicile avansate ale drive-ului pentru utilizatorii anonimi pentru a face clar faptul că stocare documentelor acolo nu este o metodă sigură. Poți să citești mai multe despre motivarea noastră și despre ce de trebuie să te Înregistrezi si sa te Loghezi."; - out.fm_backup_title = "Link de backup"; - out.fm_nameFile = "Cum ai vrea să numești fișierul?"; - out.fc_newfolder = "Folder nou"; - out.fc_rename = "Redenumește"; - out.fc_open = "Deschide"; - out.fc_open_ro = "Deschide (modul citire)"; - out.fc_delete = "Șterge"; - out.fc_restore = "Restaurează"; - out.fc_remove = "Șterge permanent"; - out.fc_empty = "Curăță coșul"; - out.fc_prop = "Proprietăți"; - out.fc_sizeInKilobytes = "Dimensiune n Kilobytes"; - out.fo_moveUnsortedError = "Nu poți să muți un folder la lista de pad-uri nesortate"; - out.fo_existingNameError = "Numele ales este deja folosit în acest director. Te rugăm să alegi altul."; - out.fo_moveFolderToChildError = "Nu poți să muți un folder într-unul dintre descendenții săi"; - out.fo_unableToRestore = "Nu am reușit să restaurăm fișierul în locația de origine. Poți să ncerci să îl muți într-o nouă locație."; - out.fo_unavailableName = "Un fișier sau un folder cu același nume există deja în locația nouă. Redenumește elementul și încearcă din nou."; - out.login_login = "Loghează-te"; - out.login_makeAPad = "Crează un pad în modul anonim"; - out.login_nologin = "Răsfoiește pad-urile locale"; - out.login_register = "Înscrie-te"; - out.logoutButton = "Deloghează-te"; - out.settingsButton = "Setări"; - out.login_username = "Nume utilizator"; - out.login_password = "Parolă"; - out.login_confirm = "Confirmă parola"; - out.login_remember = "Ține-mă minte"; - out.login_hashing = "Încriptăm parola, o să mai dureze."; - out.login_hello = "Salut {0},"; - out.login_helloNoName = "Salut,"; - out.login_accessDrive = "Acesează-ți drive-ul"; - out.login_orNoLogin = "sau"; - out.login_noSuchUser = "Nume de utilizator sau parolă invalide. Încearcă din nou sau înscrie-te."; - out.login_invalUser = "Nume utilizator cerut"; - out.login_invalPass = "Parolă cerută"; - out.login_unhandledError = "O eroare neașteptată a avut loc emoticon_unhappy"; - out.register_importRecent = "Importă istoricul pad-ului (Recomandat)"; - out.register_acceptTerms = "Accept termenii serviciului"; - out.register_passwordsDontMatch = "Parolele nu se potrivesc!"; - out.register_mustAcceptTerms = "Trebuie să accepți termenii serviciului"; - out.register_mustRememberPass = "Nu putem să îți resetăm parola dacă o uiți. Este foarte important să o ții minte! Bifează căsuța pentru a confirma."; - out.register_header = "Bine ai venit în CryptPad"; - out.register_explanation = "

    Hai să stabilim câteva lucruri, mai întâi

    • Parola ta este cheia secretă care criptează toate pad-urile tale. Dacă pierzi/uiți parola nu există nici-o metodă prin care îți putem recupera datele.
    • Poți importa pad-uri care au fost vizionate recent în browser pentru a le avea în cont.
    • Dacă folosești un computer împărțit, trebuie să te deloghezi, închiderea taburilor nu este de ajuns.
    "; - out.register_writtenPassword = "Mi-am notat numele de utilizator și parola, înaintează."; - out.register_cancel = "Întoarce-te"; - out.register_warning = "Zero Knowledge înseamnă că noi nu îți putem recupera datele dacă îți pierzi parola."; - out.register_alreadyRegistered = "Acest user există deja, vrei să te loghezi?"; - out.settings_title = "Setări"; - out.settings_save = "Salvează"; - out.settings_backupTitle = "Fă o copie de rezervă sau restaurează toate datele"; - out.settings_backup = "Copie de rezervă"; - out.settings_restore = "Restaurează"; - out.settings_resetTitle = "Curăță-ți drive-ul"; - out.settings_reset = "Îndepărtează toate fișierele și folderele din CryptPad-ul tău."; - out.settings_resetPrompt = "Această acțiune va indepărta toate pad-urile din drive-ul tău.
    Ești sigur că vrei să continui?
    Tastează “Iubesc CryptPad” pentru a confirma."; - out.settings_resetDone = "Drive-ul tău este acum gol!"; - out.settings_resetError = "Text de verificare incorect. CryptPad-ul tău nu a fost schimbat."; - out.settings_resetTips = "Sfaturi în CryptDrive"; - out.settings_resetTipsButton = "Resetează sfaturile disponibile în CryptDrive"; - out.settings_resetTipsDone = "Toate sfaturile sunt vizibile din nou."; - out.settings_importTitle = "Importă pad-urile recente ale acestui browser n CryptDrive-ul meu"; - out.settings_import = "Importă"; - out.settings_importConfirm = "Ești sigur că vrei să imporți pad-urile recente ale acestui browser în contul tău de CryptDrive?"; - out.settings_importDone = "Import complet"; - out.settings_userFeedbackHint1 = "CryptPad oferă niște feedback foarte simplu serverului, pentru a ne informa cum putem să îți îmbunătățim experiența voastră."; - out.settings_userFeedbackHint2 = "Conținutul pad-ului tău nu va fi împărțit cu serverele."; - out.settings_userFeedback = "Activează feedback"; - out.settings_anonymous = "Nu ești logat. Setările sunt specifice browser-ului."; - out.settings_publicSigningKey = "Cheia de semnătură publică"; - out.settings_usage = "Uzaj"; - out.settings_usageTitle = "Vezi dimensiunea totală a pad-urilor fixate în MB"; - out.settings_pinningNotAvailable = "Pad-urile fixate sunt disponibile doar utilizatorilor înregistrați."; - out.settings_pinningError = "Ceva nu a funcționat"; - out.settings_usageAmount = "Pad-urile tale fixate ocupă {0}MB"; - out.settings_logoutEverywhereTitle = "Deloghează-te peste tot"; - out.settings_logoutEverywhere = "Deloghează-te din toate sesiunile web"; - out.settings_logoutEverywhereConfirm = "Ești sigur? Va trebui să te loghezi, din nou, pe toate device-urile tale."; - out.upload_serverError = "Eroare de server: fișierele tale nu pot fi încărcate la momentul acesta."; - out.upload_uploadPending = "Ai deja o încărcare în desfășurare. Anulezi și încarci noul fișier?"; - out.upload_success = "Fișierul tău ({0}) a fost ncărcat și adăugat la drive-ul tău cu succes."; - out.main_p2 = "Acest proiect folosește CKEditor Visual Editor, CodeMirror, și ChainPad un motor în timp real."; - out.main_howitworks_p1 = "CryptPad folosește o variantă a algoritmului de Operational transformation care este capabil să găsescă consens distribuit folosind Nakamoto Blockchain, o construcție popularizată de Bitcoin. Astfel algoritmul poate evita nevoia ca serverul central să rezove conflicte, iar serverul nu este interesat de conținutul care este editat în pad."; - out.main_about_p2 = "Dacă ai orice fel de întrebare sau comentariu, poți să ne dai un tweet, semnalezi o problemă on github, spui salut pe IRC (irc.freenode.net), sau trimiți un email."; - out.main_info = "

    Colaborează în siguranță


    Dezvoltă-ți ideile împreună cu documentele partajate în timp ce tehnologia Zero Knowledge îți păstrează securitatea; chiar și de noi."; - out.main_howitworks = "Cum funcționează"; - out.main_zeroKnowledge = "Zero Knowledge"; - out.main_zeroKnowledge_p = "Nu trebuie să ne crezi că nu ne uităm la pad-urile tale, cu tehnologia revoluționară Zero Knowledge a CryptPad nu putem. Învață mai multe despre cum îți protejăm Intimitate și Securitate."; - out.main_writeItDown = "Notează"; - out.main_writeItDown_p = "Cele mai importante proiecte vin din idei mici. Notează-ți momentele de inspirație și ideile neașteptate pentru că nu știi niciodată care ar putea fi noua mare descoperire."; - out.main_share = "Partajează link-ul, partajează pad-ul"; - out.main_share_p = "Dezvoltă-ți ideile împreună: organizează întâlniri eficiente, colaborează pe liste TODO și fă prezentări scurte cu toți prietenii tăi și device-urile tale."; - out.main_organize = "Organizează-te"; - out.main_organize_p = "Cu CryptPad Drive, poți să stai cu ochii pe ce este important. Folderele îți permit să ții evidența proiectelor tale și să ai o viziune globală asupra evoluției lucrurilor."; - out.tryIt = "Testează!"; - out.main_richText = "Rich Text editor"; - out.main_richText_p = "Editează texte complexe în mod colaborativ cu Zero Knowledge în timp real. CkEditor application."; - out.main_code = "Editor cod"; - out.main_code_p = "Editează cod din softul tău, în mod colaborativ, cu Zero Knowledge în timp real.CodeMirror application."; - out.main_slide = "Editor slide-uri"; - out.main_slide_p = "Crează-ți prezentări folosind sintaxa Markdown, și afișează-le în browser-ul tău."; - out.main_poll = "Sondaj"; - out.main_poll_p = "Plănuiește întâlniri sau evenimente, sau votează pentru cea mai bună soluție pentru problema ta."; - out.main_drive = "CryptDrive"; - out.footer_applications = "Aplicații"; - out.footer_contact = "Contact"; - out.footer_aboutUs = "Despre noi"; - out.about = "Despre"; - out.privacy = "Privacy"; - out.contact = "Contact"; - out.terms = "ToS"; - out.blog = "Blog"; - out.policy_title = "Politica de confidențialitate CryptPad"; - out.policy_whatweknow = "Ce știm despre tine"; - out.policy_whatweknow_p1 = "Ca o aplicație care este găzduită online, CryptPad are acces la metadatele expuse de protocolul HTTP. Asta include adresa IP-ului tău, și alte titluri HTTP care pot fi folosite ca să identifice un browser. Poți să vezi ce informații împărtășește browser-ul tău vizitând WhatIsMyBrowser.com."; - out.policy_whatweknow_p2 = "Folosim Kibana, o platformă open source, pentru a afla mai multe despre utilizatorii noștri. Kibana ne spune despre cum ai găsit CryptPad, căutare directă, printr-un motor de căutare, sau prin recomandare de la un alt serviciu online ca Reddit sau Twitter."; - out.policy_howweuse = "Cum folosim ce aflăm"; - out.policy_howweuse_p1 = "Folosim aceste informații pentru a lua decizii mai bune în promovarea CryptPad, prin evaluarea eforturilor trecute care au fost de succes. Informațiile despre locația ta ne ajută să aflăm dacă ar trebui să oferim suport pentru alte limbi, pe lângă engleză."; - out.policy_howweuse_p2 = "Informațiile despre browser-ul tău (dacă este bazat pe un sistem de operare desktop sau mobil) ne ajută să luăm decizii când prioritizăm viitoarele îmbunătățiri. Echipa noastră de dezvoltare este mică, și încercăm să facem alegeri care să îmbunătățească experiența câtor mai mulți utilizatori."; - - out.policy_whatwetell = "Ce le spunem altora despre tine"; - out.policy_whatwetell_p1 = "Nu furnizăm informațiile obținute terților, decât dacă ne este cerut în mod legal."; - out.policy_links = "Link-uri către alte site-uri"; - out.policy_links_p1 = "Acest site conține link-uri către alte site-uri, incluzându-le pe cele produse de alte organizații. Nu suntem responsabili pentru practicile de intimitate sau pentru conținutul site-urilor externe. Ca regulă generală, link-urile către site-uri externe sunt deschise ntr-o fereastră noup, pentru a face clar faptul că părăsiți CryptPad.fr."; - out.policy_ads = "Reclame"; - out.policy_ads_p1 = "Nu afișăm nici o formă de publicitate online, dar s-ar putea să atașăm link-uri către instituțiile care ne finanțează cerecetarea."; - out.policy_choices = "Ce alegeri ai"; - out.policy_choices_open = "Codul nostru este open source, așa că tu ai mereu posibilitatea de a-ți găzdui propria instanță de CryptPad."; - out.policy_choices_vpn = "Dacă vrei să folosești instanța găzduită de noi, dar nu vrei să îți expui IP-ul, poți să îl protejezi folosind Tor browser bundle, sau VPN."; - out.policy_choices_ads = "Dacă vrei doar să blochezi platforma noastră de analiză, poți folosi soluții de adblocking ca Privacy Badger."; - out.tos_title = "CryptPad Termeni de Utilizare"; - out.tos_legal = "Te rugăm să nu fii rău intenționat, abuziv, sau să faci orice ilegal."; - out.tos_availability = "Sperăm că o să găsești acest serviciu util, dar disponibilitatea sau performanța nu poate fi garantată. Te rugăm să îți exporți datele n mod regulat."; - out.tos_e2ee = "Conținutul CryptPad poate fi citit sau modificat de oricine care poate ghici sau obține fragmentul identificator al pad-ului. Recomandăm să folosești soluții de comunicare criptate end-to-end-encrypted (e2ee) pentru a partaja link-uri, evitând orice risc în cazul unei scurgeri de informații."; - out.tos_logs = "Metadatele oferite de browser-ul tău serverului ar putea fi înscrise în scopul de a menține serviciul."; - out.tos_3rdparties = "Nu oferim date personale terților, decât dacă ne sunt solicitate prin lege."; - out.bottom_france = "Realizat cu \"love\" n \"Franța\""; - out.bottom_support = "Un proiect al \"XWiki Labs Project cu susținerea \"OpenPaaS-ng\""; - out.header_france = "With \"love\" from \"Franța\"/ by \"XWiki"; - out.header_support = " \"OpenPaaS-ng\""; - out.header_logoTitle = "Mergi la pagina principală"; - out.initialState = "

    Acesta este CryptPad, editorul colaborativ bazat pe tehnologia Zero Knowledge în timp real. Totul este salvat pe măsură ce scrii.
    Partajează link-ul către acest pad pentru a edita cu prieteni sau folosește butonul pentru a partaja read-only link permițând vizualizarea dar nu și editarea.

    "; - out.codeInitialState = "/*\n Acesta este editorul colaborativ de cod bazat pe tehnologia Zero Knowledge CryptPad.\n Ce scrii aici este criptat, așa că doar oamenii care au link-ul pot să-l acceseze.\n Poți să alegi ce limbaj de programare pus n evidență și schema de culori UI n dreapta sus.\n*/"; - out.slideInitialState = "# CryptSlide\n1. Scrie-ți conținutul slide-urilor folosind sintaxa markdown\n - Află mai multe despre sintaxa markdown [aici](http://www.markdowntutorial.com/)\n2. Separă-ți slide-urile cu ---\n3. Click pe butonul \"Play\" pentru a vedea rezultatele - Slide-urile tale sunt actualizate în timp real."; - out.driveReadmeTitle = "Ce este CryptPad?"; - out.readme_welcome = "Bine ai venit n CryptPad !"; - out.readme_p1 = "Bine ai venit în CryptPad, acesta este locul unde îți poți lua notițe, singur sau cu prietenii."; - out.readme_p2 = "Acest pad o să îți ofere un scurt ghid în cum poți să folosești CryptPad pentru a lua notițe, a le ține organizate și a colabora pe ele."; - out.readme_cat1 = "Descoperă-ți CryptDrive-ul"; - out.readme_cat1_l1 = "Crează un pad: În CryptDrive-ul tău, dă click {0} apoi {1} și poți să creezi un pad."; - out.readme_cat1_l2 = "Deschide pad-urile din CryptDrive-ul tău: doublu-click pe iconița unui pad pentru a-l deschide."; - out.readme_cat1_l3 = "Organizează-ți pad-urile: Când ești logat, orice pad accesezi va fi afișat ca în secțiunea {0} a drive-ului tău."; - out.readme_cat1_l3_l1 = "Poți să folosești funcția click and drag pentru a muta fișierele în folderele secțiunii {0} a drive-ului tău și pentru a crea noi foldere."; - out.readme_cat1_l3_l2 = "Ține minte să încerci click-dreapta pe iconițe pentru că există și meniuri adiționale."; - out.readme_cat1_l4 = "Pune pad-urile vechi în gunoi. Poți să folosești funcția click and drag pe pad-uri în categoria {0} la fel ca și în cazul folderelor."; - out.readme_cat2 = "Crează pad-uri ca un profesionist"; - out.edit = "editează"; - out.view = "vezi"; - out.readme_cat2_l1 = "Butonul {0} din pad-ul tău dă accesul colaboratorilor tăi să {1} sau să {2} pad-ul."; - out.readme_cat2_l2 = "Schimbă titlul pad-ului dând click pe creion"; - out.readme_cat3 = "Descoperă aplicațiile CryptPad"; - out.readme_cat3_l1 = "Cu editorul de cod CryptPad, poți colabora pe cod ca Javascript și markdown ca HTML și Markdown"; - out.readme_cat3_l2 = "Cu editorul de slide-uri CryptPad, poți să faci prezentări scurte folosind Markdown"; - out.readme_cat3_l3 = "Cu CryptPoll poți să organizezi votări rapide, mai ales pentru a programa ntâlniri care se potrivesc calendarelor tuturor"; - - out.tips = { }; - out.tips.lag = "Iconița verde din dreapta-sus arată calitatea conexiunii internetului tău la serverele CryptPad."; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` and `ctrl+u` sunt scurtături pentru bold, italic și underline."; - out.tips.indentare = "În listele cu bulină sau cele numerotate, poți folosi tab sau shift+tab pentru a mări sau micșora indentarea."; - out.tips.titlu = "Poți seta titlul pad-urilor tale prin click pe centru sus."; - out.tips.stocare = "De fiecare dată când vizitezi un pad, dacă ești logat va fi salvat pe CryptDrive-ul tău."; - out.tips.marker = "Poți sublinia text într-un pad folosind itemul \"marker\" n meniul de stiluri."; - - out.feedback_about = "Dacă citești asta, probabil că ești curios de ce CryptPad cere pagini web atunci când întreprinzi anumite acțiuni"; - out.feedback_privacy = "Ne pasă de intimitatea ta, si în același timp vrem să păstrăm CryptPad ușor de folosit. Folosim acest fișier pentru a ne da seama care beneficii UI contează cel mai mult pentru utilizatori, cerându-l alături de un parametru specific atunci când acțiunea se desfășoară"; - out.feedback_optout = "Dacă vrei să ieși, vizitează setările de pe pagina ta de user, unde vei găsi o căsuță pentru a activa sau dezactiva feedback-ul de la user"; - - return out; -}); diff --git a/www/common/translations/old/messages.zh.js b/www/common/translations/old/messages.zh.js deleted file mode 100644 index 6d69b35ca..000000000 --- a/www/common/translations/old/messages.zh.js +++ /dev/null @@ -1,535 +0,0 @@ -/* - * This is an internal language file. - * If you want to change some translations in your CryptPad instance, use the '/customize/translations/messages.{LANG}.js' - * file (make a copy from /customize.dist/translations/messages.{LANG}.js) - */ -define(function () { - var out = {}; - // translations must set this key for their language to be available in - // the language dropdowns that are shown throughout Cryptpad's interface - - out._languageName = 'Chinese'; - - out.main_title = "CryptPad: 零知識, 即時協作編寫"; - out.main_slogan = "團結就是力量 - 合作是關鍵"; // TODO remove? - - out.type = {}; - out.type.pad = '富文本'; - out.type.code = '編碼'; - out.type.poll = '投票'; - out.type.slide = '投影片簡報'; - out.type.drive = '磁碟'; - out.type.whiteboard = '白板'; - out.type.file = '檔案'; - out.type.media = '多媒體'; - - out.button_newpad = '富文件檔案'; - out.button_newcode = '新代碼檔案'; - out.button_newpoll = '新投票調查'; - out.button_newslide = '新簡報'; - out.button_newwhiteboard = '新白板'; - - // NOTE: We want to update the 'common_connectionLost' key. - // Please do not add a new 'updated_common_connectionLostAndInfo' but change directly the value of 'common_connectionLost' - out.updated_0_common_connectionLost = "伺服器連線中斷
    現在是唯讀狀態,直到連線恢復正常。"; - out.common_connectionLost = out.updated_0_common_connectionLost; - - out.websocketError = '無法連結上 websocket 伺服器...'; - out.typeError = "這個編輯檔與所選的應用程式並不相容"; - out.onLogout = '你已登出, {0}點擊這裏{1} 來登入
    或按Escape 來以唯讀模型使用你的編輯檔案'; - out.wrongApp = "無法在瀏覽器顯示即時期間的內容,請試著再重新載入本頁。"; - - out.loading = "載入中..."; - out.error = "錯誤"; - out.saved = "儲存"; - out.synced = "所有資料已儲存好了"; - out.deleted = "自 CryptDrive 刪除檔案"; - - out.disconnected = '已斷線'; - out.synchronizing = '同步中'; - out.reconnecting = '重新連結...'; - out.lag = 'Lag'; - out.readonly = '唯讀'; - out.anonymous = "匿名"; - out.yourself = "你自己"; - out.anonymousUsers = "匿名的編輯群"; - out.anonymousUser = "匿名的編輯群者"; - out.users = "用戶"; - out.and = "與"; - out.viewer = "檢視者"; - out.viewers = "檢視群"; - out.editor = "編輯者"; - out.editors = "編輯群"; - - out.language = "語言"; - - out.comingSoon = "即將上市..."; - - out.newVersion = 'CryptPad 已更新!
    ' + - '檢查最新版本有什麼新功能:
    '+ - 'CryptPad新發佈記事 {0}'; - - out.upgrade = "昇級"; - out.upgradeTitle = "昇級帳戶以取得更多的儲存空間"; - out.MB = "MB"; - out.GB = "GB"; - out.KB = "KB"; - - out.formattedMB = "{0} MB"; - out.formattedGB = "{0} GB"; - out.formattedKB = "{0} KB"; - - out.greenLight = "每件事都很順利"; - out.orangeLight = "連線速度慢可能會影響用戶體驗"; - out.redLight = "你這段期間的連線已中斷"; - - out.pinLimitReached = "你已達到儲存容量上限"; - out.updated_0_pinLimitReachedAlert = "你已達到儲存容量上限,新檔案不會儲存到你的 CryptDrive.
    " + - '要嘛你可以自 CryptDrive 移除原有文件或是 昇級到付費版增加你的儲存容量。'; - out.pinLimitReachedAlert = out.updated_0_pinLimitReachedAlert; - out.pinLimitNotPinned = "你已達到容量使用上限
    "+ - "這個檔案無法儲存到你的 CryptDrive."; - out.pinLimitDrive = "你已達到容量使用上限
    " + - "你不能建立新的編輯檔案"; - out.importButtonTitle = '從電腦上傳滙入檔案'; - - out.exportButtonTitle = '將這個檔案滙出到電腦'; - out.exportPrompt = '你希望怎麼命名你的檔案?'; - - out.changeNamePrompt = '更換你的名稱(若留空白則會成為無名氏): '; - out.user_rename = "改變顯示名稱"; - out.user_displayName = "顯示名稱"; - out.user_accountName = "帳號名稱"; - - out.clickToEdit = "點擊以編輯"; - - out.forgetButtonTitle = '將這個檔案移置垃圾筒'; - out.forgetPrompt = '點擊 OK 將把這個檔案移置垃圾筒,確定要這樣做嗎'; - out.movedToTrash = '這個檔案已被移置垃圾筒
    讀取我的雲端硬碟'; - - out.shareButton = '分享'; - out.shareSuccess = '複製連結到剪貼版'; - - out.newButton = '新'; - out.newButtonTitle = '建立新的工作檔案'; - - out.saveTemplateButton = "存成模版"; - out.saveTemplatePrompt = "為這個模版選一個標題"; - out.templateSaved = "模版已儲存!"; - out.selectTemplate = "選擇一個模版或是按 escape 跳出"; - - out.previewButtonTitle = "顯示或隱藏 Markdown 預覽模式"; - - out.presentButtonTitle = "輸入簡報模式"; - - out.backgroundButtonTitle = '改變簡報的顏色背景'; - out.colorButtonTitle = '在簡報模式下改變文字顏色'; - - out.printButton = "列印 (enter)"; - out.printButtonTitle = "列印投影片或滙出成 PDF 檔案"; - out.printOptions = "版型選項"; - out.printSlideNumber = "顯示投影片號碼"; - out.printDate = "顯示日期"; - out.printTitle = "顯示檔案標題"; - out.printCSS = "自定風格規則 (CSS):"; - out.printTransition = "啟用轉場動畫"; - - out.slideOptionsTitle = "自定你的投影片"; - out.slideOptionsButton = "儲存 (enter)"; - - out.editShare = "編輯連結"; - out.editShareTitle = "複製所編輯的連結到剪貼版"; - out.editOpen = "在新分頁開啟連結編輯"; - out.editOpenTitle = "在新分頁開啟這個檔案為編輯模式"; - out.viewShare = "唯讀連結"; - out.viewShareTitle = "複製唯讀的連結到剪貼版"; - out.viewOpen = "在新分頁開啟唯讀連結"; - out.viewOpenTitle = "在新分頁開啟這個檔案為唯讀模式"; - - out.notifyJoined = "{0} 已加入此協作期間"; - out.notifyRenamed = "{0} 現在改名為 {1}"; - out.notifyLeft = "{0} 已離開了這個協作期間"; - - out.okButton = 'OK (enter)'; - - out.cancel = "取消"; - out.cancelButton = '取消 (esc)'; - - out.historyButton = "顯示文件歷史"; - out.history_next = "到下一個版本"; - out.history_prev = "到之前的版本"; - out.history_goTo = "到所選擇的版本"; - out.history_close = "回到"; - out.history_closeTitle = "關閉歷史記錄"; - out.history_restore = "重建"; - out.history_restoreTitle = "將此文件重建到所挑選的版本"; - out.history_restorePrompt = "確定要將這個展現的版本來取代現有版本嗎?"; - out.history_restoreDone = "文件已重建"; - out.history_version = "版本:"; - - // Polls - - out.poll_title = "零知識日期挑選"; - out.poll_subtitle = "零知識, 即時 排程"; - - out.poll_p_save = "你的設定會立即更新, 因此從不需要按鍵儲存或擔心遺失。"; - out.poll_p_encryption = "你所有幹入的資料都會予以加密,只有取得連結者才可以讀取它。即便是伺服器也不能看到你作了什麼變動。"; - - out.wizardLog = "點擊左上方的按鍵以回到你的調查"; - out.wizardTitle = "使用精靈來建立調查投票"; - out.wizardConfirm = "你真的要新增這些問題到你的調查中嗎?"; - - out.poll_publish_button = "發佈"; - out.poll_admin_button = "管理者"; - out.poll_create_user = "新增使用者"; - out.poll_create_option = "新增選項"; - out.poll_commit = "投入"; - - out.poll_closeWizardButton = "關閉協助精靈"; - out.poll_closeWizardButtonTitle = "關閉協助精靈"; - out.poll_wizardComputeButton = "計算最適化"; - out.poll_wizardClearButton = "清除表格"; - out.poll_wizardDescription = "透過輸入任何日期或時間分段,可自動建立一些選項"; - out.poll_wizardAddDateButton = "+ 日期"; - out.poll_wizardAddTimeButton = "+ 時間"; - - out.poll_optionPlaceholder = "選項"; - out.poll_userPlaceholder = "你的名稱"; - out.poll_removeOption = "確定要移除這個選項嗎?"; - out.poll_removeUser = "確定要移除這位使用者嗎?"; - - out.poll_titleHint = "標題"; - out.poll_descriptionHint = "請簡述這個調查目的,完成時使用「發佈鍵」。任何知道此調查連結者可以更改這裏的描述內容,但我們不鼓勵這麼做。."; - - // Canvas - out.canvas_clear = "清除"; - out.canvas_delete = "刪除所選"; - out.canvas_disable = "取消繪圖"; - out.canvas_enable = "啟動繪圖"; - out.canvas_width = "寛度"; - out.canvas_opacity = "透明度"; - - // File manager - - out.fm_rootName = "根目錄"; - out.fm_trashName = "垃圾桶"; - out.fm_unsortedName = "未整理的檔案"; - out.fm_filesDataName = "所有檔案"; - out.fm_templateName = "模版"; - out.fm_searchName = "搜尋"; - out.fm_searchPlaceholder = "搜尋..."; - out.fm_newButton = "新的"; - out.fm_newButtonTitle = "建立新工作檔案或資料夾"; - out.fm_newFolder = "新資料夾"; - out.fm_newFile = "新工作檔案"; - out.fm_folder = "資料夾"; - out.fm_folderName = "資料夾名稱"; - out.fm_numberOfFolders = "# 個資料夾"; - out.fm_numberOfFiles = "# 檔案"; - out.fm_fileName = "檔案名"; - out.fm_title = "標題"; - out.fm_type = "類型"; - out.fm_lastAccess = "上回使用"; - out.fm_creation = "創建"; - out.fm_forbidden = "禁止的行為"; - out.fm_originalPath = "原始路徑"; - out.fm_openParent = "顯示在目錄夾中"; - out.fm_noname = "無標題文件"; - out.fm_emptyTrashDialog = "確定要清理垃圾筒嗎?"; - out.fm_removeSeveralPermanentlyDialog = "確定要將這些 {0} 東西永自垃圾筒移除嗎?"; - out.fm_removePermanentlyDialog = "你確定要永久地移除這些項目嗎?"; - out.fm_removeSeveralDialog = "確定要將這些 {0} 東西移至垃圾筒嗎?"; - out.fm_removeDialog = "確定要將移動 {0} 至垃圾筒嗎?"; - out.fm_restoreDialog = "確定要重置 {0} 到它之前的位置嗎?"; - out.fm_unknownFolderError = "所選或上回訪問的目錄不再存在了,正開啟上層目錄中..."; - out.fm_contextMenuError = "無法在此元件下打開文本選單。如果這個問題一直發生,請試著重新載入此頁。"; - out.fm_selectError = "無法選取目標的要素。如果這個問題一直發生,請試著重新載入此頁。"; - out.fm_categoryError = "無法打開所選的類別,正在顯示根目錄。"; - out.fm_info_root = "在此建立任何巢狀目錄夾以便於整理分類你的檔案。"; - out.fm_info_unsorted = '包含所有你曾訪問過的檔案,其尚未被整理在 "根目錄" 或移到到"垃圾筒".'; // "My Documents" should match with the "out.fm_rootName" key, and "Trash" with "out.fm_trashName" - out.fm_info_template = '包含所有工作檔案已存成模版,便於讓你在建立新工作檔案時套用。'; - out.updated_0_fm_info_trash = '清空垃圾筒好讓 CryptDrive 多出一些空間'; - out.fm_info_trash = out.updated_0_fm_info_trash; - out.fm_info_allFiles = '包含在 "根目錄", "未整理的" 和 "垃圾筒" 裏的所有檔案。這裏你無法移動或移除檔案。'; // Same here - out.fm_info_anonymous = '你尚未登入,因此這些工作檔案可能會被刪除。 (了解原因). ' + - '註冊登入以便保留它們。'; - out.fm_alert_backupUrl = "這個雲端硬碟的備份連結
    " + - "高度建議把自己的 IP 資訊保留成只有自己知道
    " + - "萬一瀏覽器記憶被消除,你可以用它來接收所有的檔案。
    " + - "任何知道此連結的人可以編輯或移除你檔案管理底下的所有檔案。
    "; - out.fm_alert_anonymous = "嗨你好, 你目前正以匿名方式在使用 CryptPad , 這也沒問題,不過你的東西過一段時間沒動靜後,就會自動被刪除。 " + - "匿名的用戶我們也取消其進階功能,因為我們要明確地讓用戶知道,這裏 " + - '不是一個安全存放東西的地方。你可以 進一步了解 關於 ' + - '為何我們這樣作,以及為何你最好能夠註冊 以及 登錄使用。'; - out.fm_backup_title = '備份連結'; - out.fm_nameFile = '你想要如何來命名這個檔案呢?'; - out.fm_error_cantPin = "內部伺服器出錯,請重新載入本頁並再試一次。"; - // File - Context menu - out.fc_newfolder = "新資料夾"; - out.fc_rename = "重新命名"; - out.fc_open = "打開"; - out.fc_open_ro = "打開 (唯讀)"; - out.fc_delete = "刪除"; - out.fc_restore = "重置"; - out.fc_remove = "永久刪除"; - out.fc_empty = "清理垃圾筒"; - out.fc_prop = "Properties"; - out.fc_sizeInKilobytes = "容量大小 (Kilobytes)"; - // fileObject.js (logs) - out.fo_moveUnsortedError = "你不能移動資料夾到未整理的工作檔案清單"; - out.fo_existingNameError = "名稱已被使用,請選擇其它名稱"; - out.fo_moveFolderToChildError = "你不能移動資料夾到它的子資料夾底下"; - out.fo_unableToRestore = "無法將這個檔案重置到原始的位置。你可以試著將它移動到其它新位置。"; - out.fo_unavailableName = "在新位置裏同名的檔案或資料夾名稱已存在,請重新命名後再試看看。"; - - // login - out.login_login = "登入"; - out.login_makeAPad = '匿名地建立一個工作檔案'; - out.login_nologin = "瀏覽本地的工作檔案"; - out.login_register = "註冊"; - out.logoutButton = "登出"; - out.settingsButton = "設定"; - - out.login_username = "用戶名"; - out.login_password = "密碼"; - out.login_confirm = "確認你的密碼"; - out.login_remember = "記住我"; - - out.login_hashing = "散列你的密碼中,這要花上一點時間"; - - out.login_hello = 'Hello {0},'; // {0} is the username - out.login_helloNoName = 'Hello,'; - out.login_accessDrive = '取用你的磁碟'; - out.login_orNoLogin = '或'; - - out.login_noSuchUser = '無效的用戶名或密碼,請再試一次或重新註冊'; - out.login_invalUser = '要求用戶名'; - out.login_invalPass = '要求密碼'; - out.login_unhandledError = '發生了未預期的錯誤 :('; - - out.register_importRecent = "滙入檔案記錄 (建議)"; - out.register_acceptTerms = "我同意 服務條款"; - out.register_passwordsDontMatch = "密碼不相符!"; - out.register_mustAcceptTerms = "你必須同意我們的服務條款。"; - out.register_mustRememberPass = "如果你忘了密碼,我們也無法為你重置。因此務必自行好好記住! 請在勾選處勾選確認。"; - - out.register_header = "歡迎來到 CryptPad"; - out.register_explanation = [ - "

    首先讓我們先了解幾件事

    ", - "
      ", - "
    • 你的密碼是你用來加密所有工作檔案的密鑰。一旦遺失它,我們也沒辦法幫你恢復你的資料。
    • ", - "
    • 你可以滙入近期在瀏覽器下檢視的工作檔案到你的雲端硬碟裏。
    • ", - "
    • 如果你使用的是公用分享電腦,你需要在完成工作後進行登出,只是關閉分頁是不夠的。
    • ", - "
    " - ].join(''); - - out.register_writtenPassword = "我已記下了我的用戶名和密碼,請繼續"; - out.register_cancel = "回去"; - - out.register_warning = "零知識表示如果你遺失了密碼,我們也無法還原你的資料"; - - out.register_alreadyRegistered = "這名用戶己存在了,你要登入嗎?"; - - // Settings - out.settings_title = "設定"; - out.settings_save = "儲存"; - out.settings_backupTitle = "備份或重建你所有的資料"; - out.settings_backup = "備份"; - out.settings_restore = "重建"; - out.settings_resetTitle = "清除你的雲端硬碟"; - out.settings_reset = "從你的 CryptDrive 移除所有的檔案和資料夾"; - out.settings_resetPrompt = "這個動作會自你的雲端硬碟中移除所有工作檔案
    "+ - "確定要繼續嗎?
    " + - "輸入 “I love CryptPad” 來確認。"; - out.settings_resetDone = "你的目錄現已清空!"; - out.settings_resetError = "不正確的認證文字,你的 CryptDrive 並未更改。"; - out.settings_resetTips = "使用 CryptDrive 的竅門"; - out.settings_resetTipsButton = "在 CryptDrive 下重置可用的訣竅"; - out.settings_resetTipsDone = "所有的訣竅現在都可再次看到了。"; - - out.settings_importTitle = "滙入這個瀏覽器近期的工作檔案到我的 CryptDrive"; - out.settings_import = "滙入"; - out.settings_importConfirm = "確定要從這個瀏覽器滙入近期的工作檔案到你的 CryptDrive ?"; - out.settings_importDone = "滙入完成"; - - out.settings_userFeedbackHint1 = "CryptPad 會提供一些基本的反饋到伺服器,以讓我們知道如何改善用戶體驗。"; - out.settings_userFeedbackHint2 = "你的工作檔案內容絕不會被分享到伺服器"; - out.settings_userFeedback = "啟用用戶反饋功能"; - - out.settings_anonymous = "你尚未登入,在此瀏覽器上進行特別設定。"; - out.settings_publicSigningKey = "公開金鑰簽署"; - - out.settings_usage = "用法"; - out.settings_usageTitle = "查看所有置頂的工作檔案所佔的容量"; - out.settings_pinningNotAvailable = "工作檔案置頂功能只開放給已註冊用戶"; - out.settings_pinningError = "有點不對勁"; - out.settings_usageAmount = "你置頂的工作檔案佔了 {0}MB"; - - out.settings_logoutEverywhereTitle = "自所有地點登出"; - out.settings_logoutEverywhere = "自所有其它的網頁期間登出"; - out.settings_logoutEverywhereConfirm = "你確定嗎?你將需要登入到所有用到設置。"; - - out.upload_serverError = "伺服器出錯:本次無法上傳你的檔案"; - out.upload_uploadPending = "你欲上傳檔案正在傳輸中,要取消並上傳新檔案嗎?"; - out.upload_success = "你的檔案 ({0}) 已成功地上傳並放入到你的網路磁碟中。"; - out.upload_notEnoughSpace = "你的 CryptDrive 無足夠空間來存放這個檔案。"; - out.upload_tooLarge = "此檔案超過了上傳單一檔案可允許的容量上限。"; - out.upload_choose = "選擇一個檔案"; - out.upload_pending = "待處理"; - out.upload_cancelled = "已取消的"; - out.upload_name = "檔案名"; - out.upload_size = "大小"; - out.upload_progress = "進度"; - out.download_button = "解密 & 下載"; - - // general warnings - out.warn_notPinned = "這個工作檔案並不在任何人的 CryptDrive 裏,它將在 3 個月到期後刪除。 進一步了解..."; - - // index.html - - - //about.html - out.main_p2 = '本專案使用 CKEditor 視覺編輯器, CodeMirror, 以及 ChainPad 即時引擊。'; - out.main_howitworks_p1 = 'CryptPad 應用一種變體的 操作型變換 Operational transformation 演算法,它利用Nakamoto Blockchain來找到分散的共識, Nakamoto Blockchain 是一種建構當前流行的比特幣。這套演算法可避免需要一個中央的伺服器來解析操作型變換編輯衝突,而無須處理解析衝突,伺服器並不知道哪一個檔案被編輯。'; - - // contact.html - out.main_about_p2 = '若有任何問題和建議, 可以在tweet us, github提出問題, 或是來到 irc (irc.freenode.net)打聲招呼, 再或者 寄封電郵給我們.'; - - out.main_info = "

    Collaborate in Confidence


    利用共同享文件發嚮點子,透過 零知識 科技確保隱私安全; 對任何網路服務商都要加以提防。"; - - out.main_howitworks = '它如何運作'; - out.main_zeroKnowledge = '零知識'; - out.main_zeroKnowledge_p = "你不必相信我們所說的並不會 察看你的檔案, CryptPad 革命性的零知識技術讓我們 真的不能看到。 進一步了解在這裏,我們如何保護用戶的 隱私和安全。"; - out.main_writeItDown = '寫下它'; - out.main_writeItDown_p = "偉大的專案來自不起眼的小點子。記下靈感與點子的瞬間,因為你從不會知道哪個會帶來重大突破。"; - out.main_share = '分享連結, 分享工作檔案'; - out.main_share_p = "一起來發響想法點子: 在任何設備上,與朋友一起執行有效率的會議, 協作待辦清單與快速製作簡報。"; - out.main_organize = 'Get organized'; - out.main_organize_p = "利用 CryptPad 空間, 你可以保留看管重要的東西。資料夾讓你可以追踪專案和全盤了解事情的走向狀況。"; - out.tryIt = 'Try it out!'; - out.main_richText = '富文字編輯器'; - out.main_richText_p = '利用我們的即時零知識技術,集體協作地編輯富文本檔案 CkEditor 應用程式application.'; - out.main_code = '代碼編輯器'; - out.main_code_p = '利用我們的即時零知識技術,集體協作地編輯程式代碼 CodeMirror 應用程式。'; - out.main_slide = '投影片編輯器'; - out.main_slide_p = '使用 Markdown 語法來建立投影片,並利用瀏覽器來展示投影片。'; - out.main_poll = '調查'; - out.main_poll_p = '規劃會議或活動,或是為問題舉行投最佳方案的投票。'; - out.main_drive = 'CryptDrive'; - - out.footer_applications = "應用程式"; - out.footer_contact = "聯繫"; - out.footer_aboutUs = "關於 Cryptpad"; - - out.about = "關於"; - out.privacy = "隱私"; - out.contact = "聯繫"; - out.terms = "服務條款"; - out.blog = "Blog"; - - // privacy.html - - out.policy_title = 'CryptPad 隱私政策'; - out.policy_whatweknow = '我們會知道哪些關於你的資料'; - out.policy_whatweknow_p1 = '作為一個網頁上的應用程式, CryptPad 可以接取 HTTP 協議所曝露的元數據。 這包括你的 IP 地址、各式其它的 HTTP 標頭,其用於識別你特定的瀏覽器。 你可以訪問 WhatIsMyBrowser.com這個網站,知道你的瀏覽器分享了哪些資訊。'; - out.policy_whatweknow_p2 = '我們使用 Kibana, 它是一個開源的流量數據分析平台, 以更了解用戶。Kibana 讓我們知道你是如何地發現 CryptPad, 是透過直接接入、攑搜尋引擊或是其它網站的介紹如 Reddit 和 Twitter。'; - out.policy_howweuse = '我們如何利用我們知道的東西'; - out.policy_howweuse_p1 = '我們利用這些資訊評估過去成功的效果,以更佳地決定如何推廣 CryptPad。有關你地理位置的資訊讓我們知道是否該提供英語之外的語言版本支援'; - out.policy_howweuse_p2 = "有關你的瀏覽器資訊 (是桌面還是手機操作系統) 有助於讓我們決定要優先哪些功能改善。我們開發團隊人很少,我們試著挑選盡可能地提昇更多用戶的使用體驗。"; - out.policy_whatwetell = '我們可以告訴別人關於你的哪些資料'; - out.policy_whatwetell_p1 = '我們不會給第三人我們所收集的資訊,除非被依法要求配合。'; - out.policy_links = '其它網站連結'; - out.policy_links_p1 = '本站含有其它網站的連結,包括其它組織的産品。我們無法對這些隱私實踐或任何本站以外的內容負責。一般而言,連到外站的連結會另啟新視窗,以明確讓你知道已離開了CryptPad.fr.'; - out.policy_ads = '廣告'; - out.policy_ads_p1 = '我們不會放置任何線上廣告,但會提供一些資助我們研究的機構與團體的網址連結'; - out.policy_choices = '你有的選擇'; - out.policy_choices_open = '我們的代碼是開放的,你可以選擇自行在自己的機器上來架設自己的 CryptPad.'; - out.policy_choices_vpn = '如果你要使用我們架設的服務, 但不希望曝露自己的 IP 地址, 你可以利用Tor 瀏覽器套件來保護隱藏 IP 地址, 或是使用 VPN。'; - out.policy_choices_ads = '如果你只是想要封鎖我們的數據分析器, 你可以使用廣告封鎖工具如 Privacy Badger.'; - - // terms.html - - out.tos_title = "CryptPad 服務條款"; - out.tos_legal = "請不要惡意、濫用或從事非法活動。"; - out.tos_availability = "希望你覺得我們的産品與服務對你有所幫助, 但我們並不能一直百分百保證它的表現穩定與可得性。請記得定期滙出你的資料。"; - out.tos_e2ee = "CryptPad 的內容可以被任何猜出或取得工作檔案分段識別碼的人讀取與修改。我們建議你使用端對端加密 (e2ee) 訊息技術來分享工作檔案連結 以及假設如果一旦連結外漏不會背上任何責任。"; - out.tos_logs = "你的瀏覽器提供給伺服器的元數據,可能會因為維護本服務之效能而被收集記錄。"; - out.tos_3rdparties = "除非法令要求,我們不會提供任何個人資料給第三方。"; - - // BottomBar.html - - out.bottom_france = 'Made with love in France'; - out.bottom_support = 'An XWiki SAS Labs Project with the support of OpenPaaS-ng'; - - // Header.html - - out.header_france = 'With love from France by XWiki SAS'; - - out.header_support = ' OpenPaaS-ng'; - out.header_logoTitle = '回到主頁'; - - // Initial states - - out.initialState = [ - '

    ', - '這是 CryptPad, 零知識即時協作編輯平台,當你輸入時一切已即存好。', - '
    ', - '分享這個工作檔案的網址連結給友人或是使用、 按鈕分享唯讀的連結 其只能看不能編寫。', - '

    ' - ].join(''); - - out.codeInitialState = [ - '# CryptPad 零知識即時協作代碼編輯平台\n', - '\n', - '* 你所輸入的東西會予以加密,僅有知道此網頁連結者可以接取這份文件。\n', - '* 你可以在右上角選擇欲編寫的程式語言以及樣版配色風格。' - ].join(''); - - out.slideInitialState = [ - '# CryptSlide\n', - '1. 使用 markdown 語法來寫下你的投影片內容\n', - ' - 進一步學習 markdown 語法 [here](http://www.markdowntutorial.com/)\n', - '2. 利用 --- 來區隔不同的投影片\n', - '3. 點擊下方 "Play" 鍵來查看成果', - ' - 你的投影片會即時更新' - ].join(''); - - // Readme - - out.driveReadmeTitle = "什麼是 CryptPad?"; - out.readme_welcome = "歡迎來到 CryptPad !"; - out.readme_p1 = "歡迎來到 CryptPad, 這裏你可以獨自作個人筆記或是和別人共享協作。"; - out.readme_p2 = "這個工作檔案可以讓你快速地了解如何使用 CryptPad 作筆記,有效地整理管理文件工作檔案。"; - out.readme_cat1 = "認識如何使用 CryptDrive"; - out.readme_cat1_l1 = "建立一個工作檔案: 在 CryptDrive 底下, 點擊 {0} 然後 {1} 這樣就可以建立一個新的工作檔案。"; // 0: New, 1: Rich Text - out.readme_cat1_l2 = "從 CryptDrive 開啟工作檔案: 雙擊工作檔案的圖示來開啟它。"; - out.readme_cat1_l3 = "分類你的工作檔案:登入之後,每一個你能接取使用的工作檔案會顯示在你雲端硬碟中的 {0} 部份。"; // 0: Unsorted files - out.readme_cat1_l3_l1 = "你可以點擊或是拉曳檔案到雲端硬碟 {0} 區,新增資料夾。"; // 0: Documents - out.readme_cat1_l3_l2 = "記得試著點擊圖示,以顯示更多的選項功能。"; - out.readme_cat1_l4 = "把舊的工作檔案放到垃圾筒:點擊或是拉曳檔案到 {0} 如同把它們拉到文件目錄夾一樣的方法。"; // 0: Trash - out.readme_cat2 = "像個專業人士來編寫你的工作檔案"; - out.edit = "編輯"; - out.view = "檢視"; - out.readme_cat2_l1 = "在工作檔案下的 {0} 按鍵可讓其它的協作者接取 {1} 或是 {2} 工作檔案"; // 0: Share, 1: edit, 2: view - out.readme_cat2_l2 = "若要更改工作檔案的名稱,只要點擊右上的鉛筆圖示即可"; - out.readme_cat3 = "發現其它的 CryptPad 應用"; - out.readme_cat3_l1 = "使用 CryptPad 代碼編輯器,你可以和其它人協作各種程式碼,如 Javascript、 markdown、 HTML 等等。"; - out.readme_cat3_l2 = "使用 CryptPad 投影片編輯功能,你可以使用 Markdown 快速製作簡報檔。"; - out.readme_cat3_l3 = "利用 CryptPoll 你可以快速作個線上調查,尤其是調查每個人有空的會議時間。"; - - // Tips - out.tips = {}; - out.tips.lag = "右上角的綠色圖標顯示你連線至 CryptPad 伺服器的連線品質。"; - out.tips.shortcuts = "`ctrl+b`, `ctrl+i` 和 `ctrl+u` 分別是粗體字、斜體、與加底線用法的快速鍵。"; - out.tips.indent = "要使用數字以及符號列表, 可使用 tab 或 shift+tab 快速地增加或滅少縮排指令。"; - out.tips.title = "點擊正上方來設定工作檔案的標題。"; - out.tips.store = "每一回你造訪一個工作檔案, 如果是登入狀態,則這些檔案會自動儲存到你的 CryptDrive."; - out.tips.marker = "在格式下拉選單中使用 \"marker\" 可以標注反亮文字."; - - out.feedback_about = "如果你讀了這裏,也許會好奇為何當你執行某些動作時 CryptPad 會請求網頁資訊。"; - out.feedback_privacy = "我們注重你的隱私,同時也要讓 CryptPad 容易使用。我們利用這個檔案來了解哪一種介面設計為用戶所重視,透過它來請求特別的功能參數。"; - out.feedback_optout = "如果欲退出客戶資料收集, 請到 用戶設定頁, 可以找到勾選項目來啟用或關閉用戶回饋功能。"; - - return out; -}); - From c03bd75f29e18b27a50289ae22e7fe5acaed4dcd Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 28 May 2020 14:37:50 -0400 Subject: [PATCH 11/24] make version info accessible from within apps --- customize.dist/pages.js | 5 ++++- www/common/common-ui-elements.js | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/customize.dist/pages.js b/customize.dist/pages.js index 1ba7991f3..1da801e64 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -61,6 +61,9 @@ define([ var imprintUrl = AppConfig.imprint && (typeof(AppConfig.imprint) === "boolean" ? '/imprint.html' : AppConfig.imprint); + + Pages.versionString = "CryptPad v3.18.0 (Smilodon)"; + Pages.infopageFooter = function () { return h('footer', [ h('div.container', [ @@ -107,7 +110,7 @@ define([ ])*/ ]) ]), - h('div.cp-version-footer', "CryptPad v3.18.0 (Smilodon)") + h('div.cp-version-footer', Pages.versionString) ]); }; diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index ef1f13ca2..a1e5b38e2 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2400,6 +2400,22 @@ define([ content: h('span', Messages.survey) }); } + if (Pages.versionString) { + Messages.user_about = "About CryptPad"; // XXX + var aboutButton = h('span', Messages.user_about); + $(aboutButton).click(function () { + UI.alert(Pages.versionString); + }); + + options.push({ + tag: 'a', + attributes: { + 'class': 'fa fa-info', + }, + content: aboutButton, + }); + } + options.push({ tag: 'hr' }); // Add login or logout button depending on the current status if (priv.loggedIn) { From 649d744d8147547470e21802e6a463e73587c423 Mon Sep 17 00:00:00 2001 From: yflory Date: Fri, 29 May 2020 15:10:35 +0200 Subject: [PATCH 12/24] New x2t build --- www/common/onlyoffice/x2t/x2t.js | 17564 +++++++++++++-------------- www/common/onlyoffice/x2t/x2t.wasm | Bin 38122741 -> 38122754 bytes 2 files changed, 8519 insertions(+), 9045 deletions(-) diff --git a/www/common/onlyoffice/x2t/x2t.js b/www/common/onlyoffice/x2t/x2t.js index 1bfa08870..c87f65922 100644 --- a/www/common/onlyoffice/x2t/x2t.js +++ b/www/common/onlyoffice/x2t/x2t.js @@ -1,1581 +1,1180 @@ -// Copyright 2010 The Emscripten Authors. All rights reserved. -// Emscripten is available under two separate licenses, the MIT license and the -// University of Illinois/NCSA Open Source License. Both these licenses can be -// found in the LICENSE file. +// Support for growable heap + pthreads, where the buffer may change, so JS views +// must be updated. +function GROWABLE_HEAP_STORE_I8(ptr, value) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + HEAP8[ptr] = value; +} +function GROWABLE_HEAP_STORE_I16(ptr, value) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + HEAP16[ptr >> 1] = value; +} +function GROWABLE_HEAP_STORE_I32(ptr, value) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + HEAP32[ptr >> 2] = value; +} +function GROWABLE_HEAP_STORE_F32(ptr, value) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + HEAPF32[ptr >> 2] = value; +} +function GROWABLE_HEAP_STORE_F64(ptr, value) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + HEAPF64[ptr >> 3] = value; +} -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = typeof Module !== 'undefined' ? Module : {}; +function GROWABLE_HEAP_LOAD_I8(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP8[ptr]; +} +function GROWABLE_HEAP_LOAD_U8(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU8[ptr]; +} +function GROWABLE_HEAP_LOAD_I16(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP16[ptr >> 1]; +} +function GROWABLE_HEAP_LOAD_U16(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU16[ptr >> 1]; +} +function GROWABLE_HEAP_LOAD_I32(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP32[ptr >> 2]; +} +function GROWABLE_HEAP_LOAD_U32(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU32[ptr >> 2]; +} +function GROWABLE_HEAP_LOAD_F32(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPF32[ptr >> 2]; +} +function GROWABLE_HEAP_LOAD_F64(ptr) { + if (wasmMemory.buffer != buffer) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPF64[ptr >> 3]; +} +function GROWABLE_HEAP_VIEW_I8(start, end) { + return new Int8Array(wasmMemory.buffer, start, end - start); +} +function GROWABLE_HEAP_VIEW_U8(start, end) { + return new Uint8Array(wasmMemory.buffer, start, end - start); +} +function GROWABLE_HEAP_VIEW_I16(start, end) { + return new Int16Array(wasmMemory.buffer, start >> 1, end - start >> 1); +} +function GROWABLE_HEAP_VIEW_U16(start, end) { + return new Uint16Array(wasmMemory.buffer, start >> 1, end - start >> 1); +} +function GROWABLE_HEAP_VIEW_I32(start, end) { + return new Int32Array(wasmMemory.buffer, start >> 2, end - start >> 2); +} +function GROWABLE_HEAP_VIEW_U32(start, end) { + return new Uint32Array(wasmMemory.buffer, start >> 2, end - start >> 2); +} +function GROWABLE_HEAP_VIEW_F32(start, end) { + return new Float32Array(wasmMemory.buffer, start >> 2, end - start >> 2); +} +function GROWABLE_HEAP_VIEW_F64(start, end) { + return new Float64Array(wasmMemory.buffer, start >> 3, end - start >> 3); +} -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) -// {{PRE_JSES}} -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. +var Module = typeof Module !== "undefined" ? Module : {}; var moduleOverrides = {}; var key; for (key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } } - var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = function(status, toThrow) { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - +var thisProgram = "./this.program"; +var quit_ = (function(status, toThrow) { + throw toThrow; +}); var ENVIRONMENT_IS_WEB = false; var ENVIRONMENT_IS_WORKER = false; var ENVIRONMENT_IS_NODE = false; var ENVIRONMENT_HAS_NODE = false; var ENVIRONMENT_IS_SHELL = false; -ENVIRONMENT_IS_WEB = typeof window === 'object'; -ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -// A web environment like Electron.js can have Node enabled, so we must -// distinguish between Node-enabled environments and Node environments per se. -// This will allow the former to do things like mount NODEFS. -// Extended check using process.versions fixes issue #8816. -// (Also makes redundant the original check that 'require' is a function.) -ENVIRONMENT_HAS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; +ENVIRONMENT_IS_WEB = typeof window === "object"; +ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; +ENVIRONMENT_HAS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); +if (Module["ENVIRONMENT"]) { + throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)"); } - - -// Three configurations we can be running in: -// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false) -// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false) -// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true) - -// ENVIRONMENT_IS_PTHREAD=true will have been preset in worker.js. Make it false in the main runtime thread. -var ENVIRONMENT_IS_PTHREAD = Module['ENVIRONMENT_IS_PTHREAD'] || false; +var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false; if (ENVIRONMENT_IS_PTHREAD) { - // Grab imports from the pthread to local scope. - buffer = Module['buffer']; - tempDoublePtr = Module['tempDoublePtr']; - DYNAMIC_BASE = Module['DYNAMIC_BASE']; - DYNAMICTOP_PTR = Module['DYNAMICTOP_PTR']; - // Note that not all runtime fields are imported above. Values for STACK_BASE, STACKTOP and STACK_MAX are not yet known at worker.js load time. - // These will be filled in at pthread startup time (the 'run' message for a pthread - pthread start establishes the stack frame) + buffer = Module["buffer"]; + tempDoublePtr = Module["tempDoublePtr"]; + DYNAMIC_BASE = Module["DYNAMIC_BASE"]; + DYNAMICTOP_PTR = Module["DYNAMICTOP_PTR"]; } - - - - -// In MODULARIZE mode _scriptDir needs to be captured already at the very top of the page immediately when the page is parsed, so it is generated there -// before the page load. In non-MODULARIZE modes generate it here. -var _scriptDir = (typeof document !== 'undefined' && document.currentScript) ? document.currentScript.src : undefined; - +var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : undefined; if (ENVIRONMENT_IS_NODE) { - _scriptDir = __filename; + _scriptDir = __filename; } - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; +var scriptDirectory = ""; function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; } - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary, - setWindowTitle; - +var read_, readAsync, readBinary, setWindowTitle; var nodeFS; var nodePath; - if (ENVIRONMENT_IS_NODE) { - scriptDirectory = __dirname + '/'; - - - read_ = function shell_read(filename, binary) { - if (!nodeFS) nodeFS = require('fs'); - if (!nodePath) nodePath = require('path'); - filename = nodePath['normalize'](filename); - return nodeFS['readFileSync'](filename, binary ? null : 'utf8'); - }; - - readBinary = function readBinary(filename) { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; - }; - - - - - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/'); + scriptDirectory = __dirname + "/"; + read_ = function shell_read(filename, binary) { + if (!nodeFS) nodeFS = require("fs"); + if (!nodePath) nodePath = require("path"); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); } - - arguments_ = process['argv'].slice(2); - - if (typeof module !== 'undefined') { - module['exports'] = Module; + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + if (typeof module !== "undefined") { + module["exports"] = Module; + } + process["on"]("uncaughtException", (function(ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; } - - process['on']('uncaughtException', function(ex) { - // suppress ExitStatus exceptions from showing an error - if (!(ex instanceof ExitStatus)) { - throw ex; - } + })); + process["on"]("unhandledRejection", abort); + quit_ = (function(status) { + process["exit"](status); + }); + Module["inspect"] = (function() { + return "[Emscripten Module object]"; + }); + var nodeWorkerThreads; + try { + nodeWorkerThreads = require("worker_threads"); + } catch (e) { + console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); + throw e; + } + Worker = nodeWorkerThreads.Worker; +} else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data = read(f, "binary"); + assert(typeof data === "object"); + return data; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = (function(status) { + quit(status); }); - - process['on']('unhandledRejection', abort); - - quit_ = function(status) { - process['exit'](status); - }; - - Module['inspect'] = function () { return '[Emscripten Module object]'; }; - - var nodeWorkerThreads; - try { - nodeWorkerThreads = require('worker_threads'); - } catch (e) { - console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); - throw e; - } - Worker = nodeWorkerThreads.Worker; - -} else -if (ENVIRONMENT_IS_SHELL) { - - - if (typeof read != 'undefined') { - read_ = function shell_read(f) { - return read(f); - }; - } - - readBinary = function readBinary(f) { - var data; - if (typeof readbuffer === 'function') { - return new Uint8Array(readbuffer(f)); - } - data = read(f, 'binary'); - assert(typeof data === 'object'); - return data; - }; - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit === 'function') { - quit_ = function(status) { - quit(status); - }; - } - - if (typeof print !== 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console === 'undefined') console = {}; - console.log = print; - console.warn = console.error = typeof printErr !== 'undefined' ? printErr : print; - } -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_HAS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/')+1); - } else { - scriptDirectory = ''; - } - - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - if (ENVIRONMENT_HAS_NODE) { - - + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } +} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + if (ENVIRONMENT_HAS_NODE) { read_ = function shell_read(filename, binary) { - if (!nodeFS) nodeFS = require('fs'); - if (!nodePath) nodePath = require('path'); - filename = nodePath['normalize'](filename); - return nodeFS['readFileSync'](filename, binary ? null : 'utf8'); + if (!nodeFS) nodeFS = require("fs"); + if (!nodePath) nodePath = require("path"); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); }; - readBinary = function readBinary(filename) { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; }; - - - - - } else - { - - + } else { read_ = function shell_read(url) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; }; - if (ENVIRONMENT_IS_WORKER) { - readBinary = function readBinary(url) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; - xhr.send(null); - return new Uint8Array(xhr.response); - }; - } - - readAsync = function readAsync(url, onload, onerror) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = function xhr_onload() { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; xhr.send(null); - }; - - - - + return new Uint8Array(xhr.response); + }; } - - setWindowTitle = function(title) { document.title = title }; -} else -{ - throw new Error('environment detection error'); + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = (function(title) { + document.title = title; + }); +} else { + throw new Error("environment detection error"); } - if (ENVIRONMENT_HAS_NODE) { - // Polyfill the performance object, which emscripten pthreads support - // depends on for good timing. - if (typeof performance === 'undefined') { - performance = require('perf_hooks').performance; - } + if (typeof performance === "undefined") { + performance = require("perf_hooks").performance; + } } - -// Set up the out() and err() hooks, which are how we can print to stdout or -// stderr, respectively. -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.warn.bind(console); - -// Merge back in the overrides +var out = Module["print"] || console.log.bind(console); +var err = Module["printErr"] || console.warn.bind(console); for (key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } } -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. moduleOverrides = null; - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. -if (Module['arguments']) arguments_ = Module['arguments'];if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', { configurable: true, get: function() { abort('Module.arguments has been replaced with plain arguments_') } }); -if (Module['thisProgram']) thisProgram = Module['thisProgram'];if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', { configurable: true, get: function() { abort('Module.thisProgram has been replaced with plain thisProgram') } }); -if (Module['quit']) quit_ = Module['quit'];if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', { configurable: true, get: function() { abort('Module.quit has been replaced with plain quit_') } }); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); -if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', { configurable: true, get: function() { abort('Module.read has been replaced with plain read_') } }); -if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', { configurable: true, get: function() { abort('Module.readAsync has been replaced with plain readAsync') } }); -if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', { configurable: true, get: function() { abort('Module.readBinary has been replaced with plain readBinary') } }); -// TODO: add when SDL2 is fixed if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) Object.defineProperty(Module, 'setWindowTitle', { configurable: true, get: function() { abort('Module.setWindowTitle has been replaced with plain setWindowTitle') } }); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; - - -assert(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER || ENVIRONMENT_IS_NODE, 'Pthreads do not work in this environment yet (need Web Workers, or an alternative to them)'); - -// TODO remove when SDL2 is fixed (also see above) - - - -// Copyright 2017 The Emscripten Authors. All rights reserved. -// Emscripten is available under two separate licenses, the MIT license and the -// University of Illinois/NCSA Open Source License. Both these licenses can be -// found in the LICENSE file. - -// {{PREAMBLE_ADDITIONS}} - +if (Module["arguments"]) arguments_ = Module["arguments"]; +if (!Object.getOwnPropertyDescriptor(Module, "arguments")) Object.defineProperty(Module, "arguments", { + configurable: true, + get: (function() { + abort("Module.arguments has been replaced with plain arguments_"); + }) +}); +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; +if (!Object.getOwnPropertyDescriptor(Module, "thisProgram")) Object.defineProperty(Module, "thisProgram", { + configurable: true, + get: (function() { + abort("Module.thisProgram has been replaced with plain thisProgram"); + }) +}); +if (Module["quit"]) quit_ = Module["quit"]; +if (!Object.getOwnPropertyDescriptor(Module, "quit")) Object.defineProperty(Module, "quit", { + configurable: true, + get: (function() { + abort("Module.quit has been replaced with plain quit_"); + }) +}); +assert(typeof Module["memoryInitializerPrefixURL"] === "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); +assert(typeof Module["pthreadMainPrefixURL"] === "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); +assert(typeof Module["cdInitializerPrefixURL"] === "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); +assert(typeof Module["filePackagePrefixURL"] === "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); +assert(typeof Module["read"] === "undefined", "Module.read option was removed (modify read_ in JS)"); +assert(typeof Module["readAsync"] === "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); +assert(typeof Module["readBinary"] === "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); +assert(typeof Module["setWindowTitle"] === "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"); +if (!Object.getOwnPropertyDescriptor(Module, "read")) Object.defineProperty(Module, "read", { + configurable: true, + get: (function() { + abort("Module.read has been replaced with plain read_"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "readAsync")) Object.defineProperty(Module, "readAsync", { + configurable: true, + get: (function() { + abort("Module.readAsync has been replaced with plain readAsync"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "readBinary")) Object.defineProperty(Module, "readBinary", { + configurable: true, + get: (function() { + abort("Module.readBinary has been replaced with plain readBinary"); + }) +}); +var IDBFS = "IDBFS is no longer included by default; build with -lidbfs.js"; +var PROXYFS = "PROXYFS is no longer included by default; build with -lproxyfs.js"; +var WORKERFS = "WORKERFS is no longer included by default; build with -lworkerfs.js"; +assert(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER || ENVIRONMENT_IS_NODE, "Pthreads do not work in this environment yet (need Web Workers, or an alternative to them)"); var STACK_ALIGN = 16; - -// stack management, and other functionality that is provided by the compiled code, -// should not be used before it is ready -stackSave = stackRestore = stackAlloc = function() { - abort('cannot use the stack before compiled code is ready to run, and has provided stack access'); -}; - +stackSave = stackRestore = stackAlloc = (function() { + abort("cannot use the stack before compiled code is ready to run, and has provided stack access"); +}); function staticAlloc(size) { - abort('staticAlloc is no longer available at runtime; instead, perform static allocations at compile time (using makeStaticAlloc)'); + abort("staticAlloc is no longer available at runtime; instead, perform static allocations at compile time (using makeStaticAlloc)"); } - function dynamicAlloc(size) { - assert(DYNAMICTOP_PTR); - assert(!ENVIRONMENT_IS_PTHREAD); // this function is not thread-safe - var ret = HEAP32[DYNAMICTOP_PTR>>2]; - var end = (ret + size + 15) & -16; - if (end > _emscripten_get_heap_size()) { - abort('failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly'); - } - HEAP32[DYNAMICTOP_PTR>>2] = end; - return ret; + assert(DYNAMICTOP_PTR); + assert(!ENVIRONMENT_IS_PTHREAD); + var ret = GROWABLE_HEAP_LOAD_I32(DYNAMICTOP_PTR | 0); + var end = ret + size + 15 & -16; + if (end > _emscripten_get_heap_size()) { + abort("failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly"); + } + GROWABLE_HEAP_STORE_I32(DYNAMICTOP_PTR | 0, end); + return ret; } - function alignMemory(size, factor) { - if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default - return Math.ceil(size / factor) * factor; + if (!factor) factor = STACK_ALIGN; + return Math.ceil(size / factor) * factor; } - function getNativeTypeSize(type) { - switch (type) { - case 'i1': case 'i8': return 1; - case 'i16': return 2; - case 'i32': return 4; - case 'i64': return 8; - case 'float': return 4; - case 'double': return 8; - default: { - if (type[type.length-1] === '*') { - return 4; // A pointer - } else if (type[0] === 'i') { - var bits = parseInt(type.substr(1)); - assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); - return bits / 8; - } else { - return 0; - } - } + switch (type) { + case "i1": + case "i8": + return 1; + case "i16": + return 2; + case "i32": + return 4; + case "i64": + return 8; + case "float": + return 4; + case "double": + return 8; + default: + { + if (type[type.length - 1] === "*") { + return 4; + } else if (type[0] === "i") { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type); + return bits / 8; + } else { + return 0; + } } + } } - function warnOnce(text) { - if (!warnOnce.shown) warnOnce.shown = {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - err(text); - } + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } } - -var asm2wasmImports = { // special asm2wasm imports - "f64-rem": function(x, y) { - return x % y; - }, - "debugger": function() { - debugger; - } +var asm2wasmImports = { + "f64-rem": (function(x, y) { + return x % y; + }), + "debugger": (function() { + debugger; + }) }; - - - - -// Wraps a JS function as a wasm function with a given signature. function convertJsFunctionToWasm(func, sig) { - - // If the type reflection proposal is available, use the new - // "WebAssembly.Function" constructor. - // Otherwise, construct a minimal wasm module importing the JS function and - // re-exporting it. - if (typeof WebAssembly.Function === "function") { - var typeNames = { - 'i': 'i32', - 'j': 'i64', - 'f': 'f32', - 'd': 'f64' - }; - var type = { - parameters: [], - results: sig[0] == 'v' ? [] : [typeNames[sig[0]]] - }; - for (var i = 1; i < sig.length; ++i) { - type.parameters.push(typeNames[sig[i]]); - } - return new WebAssembly.Function(type, func); - } - - // The module is static, with the exception of the type section, which is - // generated based on the signature passed in. - var typeSection = [ - 0x01, // id: section, - 0x00, // length: 0 (placeholder) - 0x01, // count: 1 - 0x60, // form: func - ]; - var sigRet = sig.slice(0, 1); - var sigParam = sig.slice(1); - var typeCodes = { - 'i': 0x7f, // i32 - 'j': 0x7e, // i64 - 'f': 0x7d, // f32 - 'd': 0x7c, // f64 + if (typeof WebAssembly.Function === "function") { + var typeNames = { + "i": "i32", + "j": "i64", + "f": "f32", + "d": "f64" }; - - // Parameters, length + signatures - typeSection.push(sigParam.length); - for (var i = 0; i < sigParam.length; ++i) { - typeSection.push(typeCodes[sigParam[i]]); + var type = { + parameters: [], + results: sig[0] == "v" ? [] : [ typeNames[sig[0]] ] + }; + for (var i = 1; i < sig.length; ++i) { + type.parameters.push(typeNames[sig[i]]); } - - // Return values, length + signatures - // With no multi-return in MVP, either 0 (void) or 1 (anything else) - if (sigRet == 'v') { - typeSection.push(0x00); - } else { - typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + return new WebAssembly.Function(type, func); + } + var typeSection = [ 1, 0, 1, 96 ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + "i": 127, + "j": 126, + "f": 125, + "d": 124 + }; + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + if (sigRet == "v") { + typeSection.push(0); + } else { + typeSection = typeSection.concat([ 1, typeCodes[sigRet] ]); + } + typeSection[1] = typeSection.length - 2; + var bytes = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0 ].concat(typeSection, [ 2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0 ])); + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + "e": { + "f": func } - - // Write the overall length of the type section back into the section header - // (excepting the 2 bytes for the section id and length) - typeSection[1] = typeSection.length - 2; - - // Rest of the module is static - var bytes = new Uint8Array([ - 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") - 0x01, 0x00, 0x00, 0x00, // version: 1 - ].concat(typeSection, [ - 0x02, 0x07, // import section - // (import "e" "f" (func 0 (type 0))) - 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, - 0x07, 0x05, // export section - // (export "f" (func 0 (type 0))) - 0x01, 0x01, 0x66, 0x00, 0x00, - ])); - - // We can compile this wasm module synchronously because it is very small. - // This accepts an import (at "e.f"), that it reroutes to an export (at "f") - var module = new WebAssembly.Module(bytes); - var instance = new WebAssembly.Instance(module, { - 'e': { - 'f': func - } - }); - var wrappedFunc = instance.exports['f']; - return wrappedFunc; + }); + var wrappedFunc = instance.exports["f"]; + return wrappedFunc; } - -// Add a wasm function to the table. function addFunctionWasm(func, sig) { - var table = wasmTable; - var ret = table.length; - - // Grow the table - try { - table.grow(1); - } catch (err) { - if (!err instanceof RangeError) { - throw err; - } - throw 'Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.'; + var table = wasmTable; + var ret = table.length; + try { + table.grow(1); + } catch (err) { + if (!err instanceof RangeError) { + throw err; } - - // Insert new element - try { - // Attempting to call this with JS function will cause of table.set() to fail - table.set(ret, func); - } catch (err) { - if (!err instanceof TypeError) { - throw err; - } - assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction'); - var wrapped = convertJsFunctionToWasm(func, sig); - table.set(ret, wrapped); + throw "Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."; + } + try { + table.set(ret, func); + } catch (err) { + if (!err instanceof TypeError) { + throw err; } - - return ret; + assert(typeof sig !== "undefined", "Missing signature argument to addFunction"); + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped); + } + return ret; } - -function removeFunctionWasm(index) { - // TODO(sbc): Look into implementing this to allow re-using of table slots -} - -// 'sig' parameter is required for the llvm backend but only when func is not -// already a WebAssembly function. +function removeFunctionWasm(index) {} function addFunction(func, sig) { - assert(typeof func !== 'undefined'); - - return addFunctionWasm(func, sig); + assert(typeof func !== "undefined"); + return addFunctionWasm(func, sig); } - function removeFunction(index) { - removeFunctionWasm(index); + removeFunctionWasm(index); } - var funcWrappers = {}; - function getFuncWrapper(func, sig) { - if (!func) return; // on null pointer, return undefined - assert(sig); - if (!funcWrappers[sig]) { - funcWrappers[sig] = {}; - } - var sigCache = funcWrappers[sig]; - if (!sigCache[func]) { - // optimize away arguments usage in common cases - if (sig.length === 1) { - sigCache[func] = function dynCall_wrapper() { - return dynCall(sig, func); - }; - } else if (sig.length === 2) { - sigCache[func] = function dynCall_wrapper(arg) { - return dynCall(sig, func, [arg]); - }; - } else { - // general case - sigCache[func] = function dynCall_wrapper() { - return dynCall(sig, func, Array.prototype.slice.call(arguments)); - }; - } - } - return sigCache[func]; -} - - -function makeBigInt(low, high, unsigned) { - return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); -} - -function dynCall(sig, ptr, args) { - if (args && args.length) { - assert(args.length == sig.length-1); - assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); - return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); + if (!func) return; + assert(sig); + if (!funcWrappers[sig]) { + funcWrappers[sig] = {}; + } + var sigCache = funcWrappers[sig]; + if (!sigCache[func]) { + if (sig.length === 1) { + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func); + }; + } else if (sig.length === 2) { + sigCache[func] = function dynCall_wrapper(arg) { + return dynCall(sig, func, [ arg ]); + }; } else { - assert(sig.length == 1); - assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); - return Module['dynCall_' + sig].call(null, ptr); + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func, Array.prototype.slice.call(arguments)); + }; } + } + return sigCache[func]; +} +function makeBigInt(low, high, unsigned) { + return unsigned ? +(low >>> 0) + +(high >>> 0) * 4294967296 : +(low >>> 0) + +(high | 0) * 4294967296; +} +function dynCall(sig, ptr, args) { + if (args && args.length) { + assert(args.length == sig.length - 1); + assert("dynCall_" + sig in Module, "bad function pointer type - no table for sig '" + sig + "'"); + return Module["dynCall_" + sig].apply(null, [ ptr ].concat(args)); + } else { + assert(sig.length == 1); + assert("dynCall_" + sig in Module, "bad function pointer type - no table for sig '" + sig + "'"); + return Module["dynCall_" + sig].call(null, ptr); + } } - var tempRet0 = 0; - -var setTempRet0 = function(value) { - tempRet0 = value; -}; - -var getTempRet0 = function() { - return tempRet0; -}; - +var setTempRet0 = (function(value) { + tempRet0 = value; +}); +var getTempRet0 = (function() { + return tempRet0; +}); function getCompilerSetting(name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; + throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work"; } - var Runtime = { - // helpful errors - getTempRet0: function() { abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, - staticAlloc: function() { abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, - stackAlloc: function() { abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + getTempRet0: (function() { + abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."'); + }), + staticAlloc: (function() { + abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."'); + }), + stackAlloc: (function() { + abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."'); + }) }; - -// The address globals begin at. Very low in memory, for code size and optimization opportunities. -// Above 0 is static memory, starting with globals. -// Then the stack. -// Then 'dynamic' memory for sbrk. var GLOBAL_BASE = 1024; - - -// The wasm backend path does not have a way to set the stack max, so we can -// just implement this function in a trivial way function establishStackSpace(base, max) { - stackRestore(max); + stackRestore(max); } - -// JS library code refers to Atomics in the manner used from asm.js, provide -// the same API here. var Atomics_load = Atomics.load; var Atomics_store = Atomics.store; var Atomics_compareExchange = Atomics.compareExchange; - - -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - - -var wasmBinary;if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', { configurable: true, get: function() { abort('Module.wasmBinary has been replaced with plain wasmBinary') } }); -var noExitRuntime;if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', { configurable: true, get: function() { abort('Module.noExitRuntime has been replaced with plain noExitRuntime') } }); - - -if (typeof WebAssembly !== 'object') { - abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.'); -} - - -// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. -// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) - -/** @type {function(number, number, string, boolean=)} */ -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[((ptr)>>0)]=value; break; - case 'i8': HEAP8[((ptr)>>0)]=value; break; - case 'i16': HEAP16[((ptr)>>1)]=value; break; - case 'i32': HEAP32[((ptr)>>2)]=value; break; - case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; - case 'float': HEAPF32[((ptr)>>2)]=value; break; - case 'double': HEAPF64[((ptr)>>3)]=value; break; - default: abort('invalid type for setValue: ' + type); - } -} - -/** @type {function(number, string, boolean=)} */ -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[((ptr)>>0)]; - case 'i8': return HEAP8[((ptr)>>0)]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': return HEAP32[((ptr)>>2)]; - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - default: abort('invalid type for getValue: ' + type); - } - return null; -} - - - - - -// Wasm globals - -var wasmMemory; - -// In fastcomp asm.js, we don't need a wasm Table at all. -// In the wasm backend, we polyfill the WebAssembly object, -// so this creates a (non-native-wasm) table for us. -var wasmTable = new WebAssembly.Table({ - 'initial': 63857, - 'maximum': 63857 + 0, - 'element': 'anyfunc' +var wasmBinary; +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; +if (!Object.getOwnPropertyDescriptor(Module, "wasmBinary")) Object.defineProperty(Module, "wasmBinary", { + configurable: true, + get: (function() { + abort("Module.wasmBinary has been replaced with plain wasmBinary"); + }) +}); +var noExitRuntime; +if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; +if (!Object.getOwnPropertyDescriptor(Module, "noExitRuntime")) Object.defineProperty(Module, "noExitRuntime", { + configurable: true, + get: (function() { + abort("Module.noExitRuntime has been replaced with plain noExitRuntime"); + }) +}); +if (typeof WebAssembly !== "object") { + abort("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead."); +} +function setValue(ptr, value, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + GROWABLE_HEAP_STORE_I8(ptr >> 0 | 0, value); + break; + case "i8": + GROWABLE_HEAP_STORE_I8(ptr >> 0 | 0, value); + break; + case "i16": + GROWABLE_HEAP_STORE_I16(ptr | 0, value); + break; + case "i32": + GROWABLE_HEAP_STORE_I32(ptr | 0, value); + break; + case "i64": + tempI64 = [ value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(ptr | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(ptr + 4 | 0, tempI64[1]); + break; + case "float": + GROWABLE_HEAP_STORE_F32(ptr | 0, value); + break; + case "double": + GROWABLE_HEAP_STORE_F64(ptr | 0, value); + break; + default: + abort("invalid type for setValue: " + type); + } +} +function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + return GROWABLE_HEAP_LOAD_I8(ptr >> 0 | 0); + case "i8": + return GROWABLE_HEAP_LOAD_I8(ptr >> 0 | 0); + case "i16": + return GROWABLE_HEAP_LOAD_I16(ptr | 0); + case "i32": + return GROWABLE_HEAP_LOAD_I32(ptr | 0); + case "i64": + return GROWABLE_HEAP_LOAD_I32(ptr | 0); + case "float": + return GROWABLE_HEAP_LOAD_F32(ptr | 0); + case "double": + return GROWABLE_HEAP_LOAD_F64(ptr | 0); + default: + abort("invalid type for getValue: " + type); + } + return null; +} +var wasmMemory; +var wasmTable = new WebAssembly.Table({ + "initial": 63857, + "maximum": 63857 + 0, + "element": "anyfunc" }); - -// For sending to workers. var wasmModule; -// Only workers actually use these field, but we refer to them from -// library_pthread (which exists on all threads) so this definition is useful -// to avoid accessing the global scope. var threadInfoStruct = 0; var selfThreadId = 0; var __performance_now_clock_drift = 0; var tempDoublePtr = 0; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. var EXITSTATUS = 0; - -/** @type {function(*, string=)} */ function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } + if (!condition) { + abort("Assertion failed: " + text); + } } - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) function getCFunc(ident) { - var func = Module['_' + ident]; // closure exported function - assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); - return func; + var func = Module["_" + ident]; + assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func; } - -// C calling interface. function ccall(ident, returnType, argTypes, args, opts) { - // For fast lookup of conversion functions - var toC = { - 'string': function(str) { - var ret = 0; - if (str !== null && str !== undefined && str !== 0) { // null string - // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' - var len = (str.length << 2) + 1; - ret = stackAlloc(len); - stringToUTF8(str, ret, len); - } - return ret; - }, - 'array': function(arr) { - var ret = stackAlloc(arr.length); - writeArrayToMemory(arr, ret); - return ret; - } - }; - - function convertReturnValue(ret) { - if (returnType === 'string') return UTF8ToString(ret); - if (returnType === 'boolean') return Boolean(ret); - return ret; - } - - var func = getCFunc(ident); - var cArgs = []; - var stack = 0; - assert(returnType !== 'array', 'Return type should not be "array".'); - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]]; - if (converter) { - if (stack === 0) stack = stackSave(); - cArgs[i] = converter(args[i]); - } else { - cArgs[i] = args[i]; - } - } - } - var ret = func.apply(null, cArgs); - - ret = convertReturnValue(ret); - if (stack !== 0) stackRestore(stack); + var toC = { + "string": (function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }), + "array": (function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + }) + }; + function convertReturnValue(ret) { + if (returnType === "string") return UTF8ToString(ret); + if (returnType === "boolean") return Boolean(ret); return ret; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== "array", 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; } - function cwrap(ident, returnType, argTypes, opts) { - return function() { - return ccall(ident, returnType, argTypes, arguments, opts); - } + return (function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }); } - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_DYNAMIC = 2; // Cannot be freed except through sbrk -var ALLOC_NONE = 3; // Do not allocate - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -/** @type {function((TypedArray|Array|number), string, number, number=)} */ +var ALLOC_NORMAL = 0; +var ALLOC_STACK = 1; +var ALLOC_DYNAMIC = 2; +var ALLOC_NONE = 3; function allocate(slab, types, allocator, ptr) { - var zeroinit, size; - if (typeof slab === 'number') { - zeroinit = true; - size = slab; - } else { - zeroinit = false; - size = slab.length; + var zeroinit, size; + if (typeof slab === "number") { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + var singleType = typeof types === "string" ? types : null; + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [ _malloc, stackAlloc, dynamicAlloc ][allocator](Math.max(size, singleType ? 1 : types.length)); + } + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + GROWABLE_HEAP_STORE_I32(ptr | 0, 0); } - - var singleType = typeof types === 'string' ? types : null; - - var ret; - if (allocator == ALLOC_NONE) { - ret = ptr; - } else { - ret = [_malloc, - stackAlloc, - dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); + stop = ret + size; + while (ptr < stop) { + GROWABLE_HEAP_STORE_I8(ptr++ >> 0 | 0, 0); } - - if (zeroinit) { - var stop; - ptr = ret; - assert((ret & 3) == 0); - stop = ret + (size & ~3); - for (; ptr < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((ptr++)>>0)]=0; - } - return ret; - } - - if (singleType === 'i8') { - if (slab.subarray || slab.slice) { - HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret); - } else { - HEAPU8.set(new Uint8Array(slab), ret); - } - return ret; - } - - var i = 0, type, typeSize, previousType; - while (i < size) { - var curr = slab[i]; - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - assert(type, 'Must know what type to store in allocate!'); - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - return ret; + } + if (singleType === "i8") { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, "Must know what type to store in allocate!"); + if (type == "i64") type = "i32"; + setValue(ret + i, curr, type); + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + return ret; } - -// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready function getMemory(size) { - if (!runtimeInitialized) return dynamicAlloc(size); - return _malloc(size); + if (!runtimeInitialized) return dynamicAlloc(size); + return _malloc(size); } - - - - -/** @type {function(number, number=)} */ function Pointer_stringify(ptr, length) { - abort("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!"); + abort("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!"); } - -// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. - function AsciiToString(ptr) { - var str = ''; - while (1) { - var ch = HEAPU8[((ptr++)>>0)]; - if (!ch) return str; - str += String.fromCharCode(ch); - } + var str = ""; + while (1) { + var ch = GROWABLE_HEAP_LOAD_U8(ptr++ >> 0 | 0); + if (!ch) return str; + str += String.fromCharCode(ch); + } } - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. - function stringToAscii(str, outPtr) { - return writeAsciiToMemory(str, outPtr, false); + return writeAsciiToMemory(str, outPtr, false); } - - -// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns -// a copy of that string as a Javascript String object. - - -/** - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead; - - var str = ''; - while (!(idx >= endIdx)) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = u8Array[idx++]; - // If not building with TextDecoder enabled, we don't know the string length, so scan for \0 byte. - // If building with TextDecoder, we know exactly at what byte index the string ends, so checking for nulls here would be redundant. - if (!u0) return str; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = u8Array[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = u8Array[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; + var endIdx = idx + maxBytesToRead; + var str = ""; + while (!(idx >= endIdx)) { + var u0 = u8Array[idx++]; + if (!u0) return str; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = u8Array[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = u8Array[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"); + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + return str; } - -// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a -// copy of that string as a Javascript String object. -// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit -// this parameter to scan the string until the first \0 byte. If maxBytesToRead is -// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the -// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will -// not produce a string of exact length [ptr, ptr+maxBytesToRead[) -// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may -// throw JS JIT optimizations off, so it is worth to consider consistently using one -// style or the other. -/** - * @param {number} ptr - * @param {number=} maxBytesToRead - * @return {string} - */ function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; } - -// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', -// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. -// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. -// Parameters: -// str: the Javascript string to copy. -// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element. -// outIdx: The starting offset in the array to begin the copying. -// maxBytesToWrite: The maximum number of bytes this function can write to the array. -// This count should include the null terminator, -// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. -// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. -// Returns the number of bytes written, EXCLUDING the null terminator. - function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - outU8Array[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - outU8Array[outIdx++] = 0xC0 | (u >> 6); - outU8Array[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - outU8Array[outIdx++] = 0xE0 | (u >> 12); - outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); - outU8Array[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u >= 0x200000) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).'); - outU8Array[outIdx++] = 0xF0 | (u >> 18); - outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); - outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); - outU8Array[outIdx++] = 0x80 | (u & 63); - } + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; } - // Null-terminate the pointer to the buffer. - outU8Array[outIdx] = 0; - return outIdx - startIdx; + if (u <= 127) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 192 | u >> 6; + outU8Array[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 224 | u >> 12; + outU8Array[outIdx++] = 128 | u >> 6 & 63; + outU8Array[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 2097152) warnOnce("Invalid Unicode code point 0x" + u.toString(16) + " encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."); + outU8Array[outIdx++] = 240 | u >> 18; + outU8Array[outIdx++] = 128 | u >> 12 & 63; + outU8Array[outIdx++] = 128 | u >> 6 & 63; + outU8Array[outIdx++] = 128 | u & 63; + } + } + outU8Array[outIdx] = 0; + return outIdx - startIdx; } - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. -// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. -// Returns the number of bytes written, EXCLUDING the null terminator. - function stringToUTF8(str, outPtr, maxBytesToWrite) { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); + assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); } - -// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); - if (u <= 0x7F) ++len; - else if (u <= 0x7FF) len += 2; - else if (u <= 0xFFFF) len += 3; - else len += 4; - } - return len; + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; else if (u <= 2047) len += 2; else if (u <= 65535) len += 3; else len += 4; + } + return len; } - - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. - function UTF16ToString(ptr) { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } + assert(ptr % 2 == 0, "Pointer passed to UTF16ToString must be aligned to two bytes!"); + var i = 0; + var str = ""; + while (1) { + var codeUnit = GROWABLE_HEAP_LOAD_I16(ptr + i * 2 | 0); + if (codeUnit == 0) return str; + ++i; + str += String.fromCharCode(codeUnit); + } } - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. -// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. -// Parameters: -// str: the Javascript string to copy. -// outPtr: Byte address in Emscripten HEAP where to write the string to. -// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null -// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. -// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. -// Returns the number of bytes written, EXCLUDING the null terminator. - function stringToUTF16(str, outPtr, maxBytesToWrite) { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) return 0; - maxBytesToWrite -= 2; // Null terminator. - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)]=codeUnit; - outPtr += 2; - } - // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)]=0; - return outPtr - startPtr; + assert(outPtr % 2 == 0, "Pointer passed to stringToUTF16 must be aligned to two bytes!"); + assert(typeof maxBytesToWrite == "number", "stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + GROWABLE_HEAP_STORE_I16(outPtr | 0, codeUnit); + outPtr += 2; + } + GROWABLE_HEAP_STORE_I16(outPtr | 0, 0); + return outPtr - startPtr; } - -// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. - function lengthBytesUTF16(str) { - return str.length*2; + return str.length * 2; } - function UTF32ToString(ptr) { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } + assert(ptr % 4 == 0, "Pointer passed to UTF32ToString must be aligned to four bytes!"); + var i = 0; + var str = ""; + while (1) { + var utf32 = GROWABLE_HEAP_LOAD_I32(ptr + i * 4 | 0); + if (utf32 == 0) return str; + ++i; + if (utf32 >= 65536) { + var ch = utf32 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } else { + str += String.fromCharCode(utf32); } + } } - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. -// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. -// Parameters: -// str: the Javascript string to copy. -// outPtr: Byte address in Emscripten HEAP where to write the string to. -// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null -// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. -// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. -// Returns the number of bytes written, EXCLUDING the null terminator. - function stringToUTF32(str, outPtr, maxBytesToWrite) { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; + assert(outPtr % 4 == 0, "Pointer passed to stringToUTF32 must be aligned to four bytes!"); + assert(typeof maxBytesToWrite == "number", "stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023; } - if (maxBytesToWrite < 4) return 0; - var startPtr = outPtr; - var endPtr = startPtr + maxBytesToWrite - 4; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[((outPtr)>>2)]=codeUnit; - outPtr += 4; - if (outPtr + 4 > endPtr) break; - } - // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)]=0; - return outPtr - startPtr; + GROWABLE_HEAP_STORE_I32(outPtr | 0, codeUnit); + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + GROWABLE_HEAP_STORE_I32(outPtr | 0, 0); + return outPtr - startPtr; } - -// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. - function lengthBytesUTF32(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. - len += 4; - } - - return len; + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) ++i; + len += 4; + } + return len; } - -// Allocate heap space for a JS string, and write it there. -// It is the responsibility of the caller to free() that memory. function allocateUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8Array(str, HEAP8, ret, size); - return ret; + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; } - -// Allocate stack space for a JS string, and write it there. function allocateUTF8OnStack(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = stackAlloc(size); - stringToUTF8Array(str, HEAP8, ret, size); - return ret; + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; } - -// Deprecated: This function should not be called because it is unsafe and does not provide -// a maximum length limit of how many bytes it is allowed to write. Prefer calling the -// function stringToUTF8Array() instead, which takes in a maximum length that can be used -// to be secure from out of bounds writes. -/** @deprecated */ function writeStringToMemory(string, buffer, dontAddNull) { - warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); - - var /** @type {number} */ lastChar, /** @type {number} */ end; - if (dontAddNull) { - // stringToUTF8Array always appends null. If we don't want to do that, remember the - // character that existed at the location where the null will be placed, and restore - // that after the write (below). - end = buffer + lengthBytesUTF8(string); - lastChar = HEAP8[end]; - } - stringToUTF8(string, buffer, Infinity); - if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. + warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"); + var lastChar, end; + if (dontAddNull) { + end = buffer + lengthBytesUTF8(string); + lastChar = GROWABLE_HEAP_LOAD_I8(end | 0); + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) GROWABLE_HEAP_STORE_I8(end | 0, lastChar); } - function writeArrayToMemory(array, buffer) { - assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') - HEAP8.set(array, buffer); + assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"); + HEAP8.set(array, buffer); } - function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); - HEAP8[((buffer++)>>0)]=str.charCodeAt(i); - } - // Null-terminate the pointer to the HEAP. - if (!dontAddNull) HEAP8[((buffer)>>0)]=0; + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i) & 255); + GROWABLE_HEAP_STORE_I8(buffer++ >> 0 | 0, str.charCodeAt(i)); + } + if (!dontAddNull) GROWABLE_HEAP_STORE_I8(buffer >> 0 | 0, 0); } - - - - -// Memory management - var PAGE_SIZE = 16384; var WASM_PAGE_SIZE = 65536; var ASMJS_PAGE_SIZE = 16777216; - function alignUp(x, multiple) { - if (x % multiple > 0) { - x += multiple - (x % multiple); - } - return x; + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; } - -var HEAP, -/** @type {ArrayBuffer} */ - buffer, -/** @type {Int8Array} */ - HEAP8, -/** @type {Uint8Array} */ - HEAPU8, -/** @type {Int16Array} */ - HEAP16, -/** @type {Uint16Array} */ - HEAPU16, -/** @type {Int32Array} */ - HEAP32, -/** @type {Uint32Array} */ - HEAPU32, -/** @type {Float32Array} */ - HEAPF32, -/** @type {Float64Array} */ - HEAPF64; - +var HEAP, buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBufferAndViews(buf) { - buffer = buf; - Module['HEAP8'] = HEAP8 = new Int8Array(buf); - Module['HEAP16'] = HEAP16 = new Int16Array(buf); - Module['HEAP32'] = HEAP32 = new Int32Array(buf); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); - Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); - Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); } - -var STATIC_BASE = 1024, - STACK_BASE = 17838800, - STACKTOP = STACK_BASE, - STACK_MAX = 12595920, - DYNAMIC_BASE = 17838800, - DYNAMICTOP_PTR = 12594960; - -assert(STACK_BASE % 16 === 0, 'stack must start aligned'); -assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned'); - +var STATIC_BASE = 1024, STACK_BASE = 17838800, STACKTOP = STACK_BASE, STACK_MAX = 12595920, DYNAMIC_BASE = 17838800, DYNAMICTOP_PTR = 12594960; +assert(STACK_BASE % 16 === 0, "stack must start aligned"); +assert(DYNAMIC_BASE % 16 === 0, "heap must start aligned"); if (ENVIRONMENT_IS_PTHREAD) { - - // At the 'load' stage of Worker startup, we are just loading this script - // but not ready to run yet. At 'run' we receive proper values for the stack - // etc. and can launch a pthread. Set some fake values there meanwhile to - // catch bugs, then set the real values in applyStackValues later. - STACK_MAX = STACKTOP = STACK_MAX = 0x7FFFFFFF; - - Module['applyStackValues'] = function(stackBase, stackTop, stackMax) { - STACK_BASE = stackBase; - STACKTOP = stackTop; - STACK_MAX = stackMax; - }; - - // TODO DYNAMIC_BASE = Module['DYNAMIC_BASE']; - // TODO DYNAMICTOP_PTR = Module['DYNAMICTOP_PTR']; - // TODO tempDoublePtr = Module['tempDoublePtr']; + STACK_MAX = STACKTOP = STACK_MAX = 2147483647; + Module["applyStackValues"] = (function(stackBase, stackTop, stackMax) { + STACK_BASE = stackBase; + STACKTOP = stackTop; + STACK_MAX = stackMax; + }); } - - var TOTAL_STACK = 5242880; -if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') - -var INITIAL_TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 149880832;if (!Object.getOwnPropertyDescriptor(Module, 'TOTAL_MEMORY')) Object.defineProperty(Module, 'TOTAL_MEMORY', { configurable: true, get: function() { abort('Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY') } }); - -assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, 'TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); - -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, - 'JS engine does not provide full typed array support'); - - - - - - -// In standalone mode, the wasm creates the memory, and the user can't provide it. -// In non-standalone/normal mode, we create the memory here. - -// Create the main memory. (Note: this isn't used in STANDALONE_WASM mode since the wasm -// memory is created in the wasm, not in JS.) +if (Module["TOTAL_STACK"]) assert(TOTAL_STACK === Module["TOTAL_STACK"], "the stack size can no longer be determined at runtime"); +var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 268435456; +if (!Object.getOwnPropertyDescriptor(Module, "TOTAL_MEMORY")) Object.defineProperty(Module, "TOTAL_MEMORY", { + configurable: true, + get: (function() { + abort("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY"); + }) +}); +assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, "TOTAL_MEMORY should be larger than TOTAL_STACK, was " + INITIAL_TOTAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")"); +assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, "JS engine does not provide full typed array support"); if (ENVIRONMENT_IS_PTHREAD) { - wasmMemory = Module['wasmMemory']; - buffer = Module['buffer']; + wasmMemory = Module["wasmMemory"]; + buffer = Module["buffer"]; } else { - - if (Module['wasmMemory']) { - wasmMemory = Module['wasmMemory']; - } else - { - wasmMemory = new WebAssembly.Memory({ - 'initial': INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE - , - 'maximum': INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE - , - 'shared': true - }); - if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { - err('requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag'); - if (ENVIRONMENT_HAS_NODE) { - console.log('(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)'); - } - throw Error('bad memory'); - } + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"]; + } else { + wasmMemory = new WebAssembly.Memory({ + "initial": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE, + "maximum": 1073741824 / WASM_PAGE_SIZE, + "shared": true + }); + if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { + err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"); + if (ENVIRONMENT_HAS_NODE) { + console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"); + } + throw Error("bad memory"); } - + } } - if (wasmMemory) { - buffer = wasmMemory.buffer; + buffer = wasmMemory.buffer; } - -// If the user provides an incorrect length, just use that length instead rather than providing the user to -// specifically provide the memory length with Module['TOTAL_MEMORY']. INITIAL_TOTAL_MEMORY = buffer.byteLength; assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0); +assert(65536 % WASM_PAGE_SIZE === 0); updateGlobalBufferAndViews(buffer); - -if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/worker.js, where they were passed to the thread worker at startup time -HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; +if (!ENVIRONMENT_IS_PTHREAD) { + GROWABLE_HEAP_STORE_I32(DYNAMICTOP_PTR | 0, DYNAMIC_BASE); } - - - - -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. function writeStackCookie() { - assert((STACK_MAX & 3) == 0); - // The stack grows downwards - HEAPU32[(STACK_MAX >> 2)+1] = 0x02135467; - HEAPU32[(STACK_MAX >> 2)+2] = 0x89BACDFE; - // Also test the global address 0 for integrity. - // We don't do this with ASan because ASan does its own checks for this. - HEAP32[0] = 0x63736d65; /* 'emsc' */ + assert((STACK_MAX & 3) == 0); + GROWABLE_HEAP_STORE_I32(((STACK_MAX >> 2) + 1) * 4 | 0, 34821223); + GROWABLE_HEAP_STORE_I32(((STACK_MAX >> 2) + 2) * 4 | 0, 2310721022); + GROWABLE_HEAP_STORE_I32(0 * 4 | 0, 1668509029); } - function checkStackCookie() { - var cookie1 = HEAPU32[(STACK_MAX >> 2)+1]; - var cookie2 = HEAPU32[(STACK_MAX >> 2)+2]; - if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { - abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16)); - } - // Also test the global address 0 for integrity. - // We don't do this with ASan because ASan does its own checks for this. - if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); + var cookie1 = GROWABLE_HEAP_LOAD_U32(((STACK_MAX >> 2) + 1) * 4 | 0); + var cookie2 = GROWABLE_HEAP_LOAD_U32(((STACK_MAX >> 2) + 2) * 4 | 0); + if (cookie1 != 34821223 || cookie2 != 2310721022) { + abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x" + cookie2.toString(16) + " " + cookie1.toString(16)); + } + if (GROWABLE_HEAP_LOAD_I32(0 * 4 | 0) !== 1668509029) abort("Runtime error: The application has corrupted its heap memory area (address zero)!"); } - function abortStackOverflow(allocSize) { - abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); + abort("Stack overflow! Attempted to allocate " + allocSize + " bytes on the stack, but stack has only " + (STACK_MAX - stackSave() + allocSize) + " bytes available!"); } - - - - -// Endianness check (note: assumes compiler arch was little-endian) -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; -})(); - +((function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 25459; + if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian!"; +}))(); function abortFnPtrError(ptr, sig) { - abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); + abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); } - - - function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - var callback = callbacks.shift(); - if (typeof callback == 'function') { - callback(); - continue; - } - var func = callback.func; - if (typeof func === 'number') { - if (callback.arg === undefined) { - Module['dynCall_v'](func); - } else { - Module['dynCall_vi'](func, callback.arg); - } - } else { - func(callback.arg === undefined ? null : callback.arg); - } + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(); + continue; } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === undefined) { + Module["dynCall_v"](func); + } else { + Module["dynCall_vi"](func, callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } } - -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - +var __ATPRERUN__ = []; +var __ATINIT__ = []; +var __ATMAIN__ = []; +var __ATEXIT__ = []; +var __ATPOSTRUN__ = []; var runtimeInitialized = false; var runtimeExited = false; - -if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread. - +if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; function preRun() { - if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread. - - if (Module['preRun']) { - if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; - while (Module['preRun'].length) { - addOnPreRun(Module['preRun'].shift()); - } + if (ENVIRONMENT_IS_PTHREAD) return; + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); } - - callRuntimeCallbacks(__ATPRERUN__); + } + callRuntimeCallbacks(__ATPRERUN__); } - function initRuntime() { - checkStackCookie(); - assert(!runtimeInitialized); - runtimeInitialized = true; - if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); -TTY.init(); - callRuntimeCallbacks(__ATINIT__); + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + TTY.init(); + callRuntimeCallbacks(__ATINIT__); } - function preMain() { - checkStackCookie(); - if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread. - FS.ignorePermissions = false; - callRuntimeCallbacks(__ATMAIN__); + checkStackCookie(); + if (ENVIRONMENT_IS_PTHREAD) return; + FS.ignorePermissions = false; + callRuntimeCallbacks(__ATMAIN__); } - function exitRuntime() { - checkStackCookie(); - if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread. - runtimeExited = true; + checkStackCookie(); + if (ENVIRONMENT_IS_PTHREAD) return; + runtimeExited = true; } - function postRun() { - checkStackCookie(); - if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread. - - if (Module['postRun']) { - if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; - while (Module['postRun'].length) { - addOnPostRun(Module['postRun'].shift()); - } + checkStackCookie(); + if (ENVIRONMENT_IS_PTHREAD) return; + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); } - - callRuntimeCallbacks(__ATPOSTRUN__); + } + callRuntimeCallbacks(__ATPOSTRUN__); } - function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); + __ATPRERUN__.unshift(cb); } - function addOnInit(cb) { - __ATINIT__.unshift(cb); + __ATINIT__.unshift(cb); } - function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); + __ATMAIN__.unshift(cb); } - -function addOnExit(cb) { -} - +function addOnExit(cb) {} function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); + __ATPOSTRUN__.unshift(cb); } - function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; + if (value >= 0) { + return value; + } + return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value; } function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } + if (value <= 0) { return value; + } + var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1); + if (value >= half && (bits <= 32 || value > half)) { + value = -2 * half + value; + } + return value; } - - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); - +assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); +assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); +assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); +assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); var Math_abs = Math.abs; var Math_cos = Math.cos; var Math_sin = Math.sin; @@ -1597,7625 +1196,7562 @@ var Math_min = Math.min; var Math_max = Math.max; var Math_clz32 = Math.clz32; var Math_trunc = Math.trunc; - - - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. var runDependencies = 0; var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var dependenciesFulfilled = null; var runDependencyTracking = {}; - function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } - return id; + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + return id; } - function addRunDependency(id) { - // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side, - // so good to be very explicit) - assert(!ENVIRONMENT_IS_PTHREAD, "addRunDependency cannot be used in a pthread worker"); - runDependencies++; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(function() { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err('dependency: ' + dep); - } - if (shown) { - err('(end of list)'); - } - }, 10000); + assert(!ENVIRONMENT_IS_PTHREAD, "addRunDependency cannot be used in a pthread worker"); + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== "undefined") { + runDependencyWatcher = setInterval((function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; } - } else { - err('warning: run dependency added without ID'); + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err("still waiting on run dependencies:"); + } + err("dependency: " + dep); + } + if (shown) { + err("(end of list)"); + } + }), 1e4); } + } else { + err("warning: run dependency added without ID"); + } } - function removeRunDependency(id) { - runDependencies--; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err("warning: run dependency removed without ID"); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; } - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); } + } } - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - +Module["preloadedImages"] = {}; +Module["preloadedAudios"] = {}; function abort(what) { - if (Module['onAbort']) { - Module['onAbort'](what); - } - - if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack); - what += ''; - out(what); - err(what); - - ABORT = true; - EXITSTATUS = 1; - - var output = 'abort(' + what + ') at ' + stackTrace(); - what = output; - - // Throw a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - throw new WebAssembly.RuntimeError(what); + if (Module["onAbort"]) { + Module["onAbort"](what); + } + if (ENVIRONMENT_IS_PTHREAD) console.error("Pthread aborting at " + (new Error).stack); + what += ""; + out(what); + err(what); + ABORT = true; + EXITSTATUS = 1; + var output = "abort(" + what + ") at " + stackTrace(); + what = output; + throw new WebAssembly.RuntimeError(what); } - - var memoryInitializer = null; - - - - - - - -// Copyright 2017 The Emscripten Authors. All rights reserved. -// Emscripten is available under two separate licenses, the MIT license and the -// University of Illinois/NCSA Open Source License. Both these licenses can be -// found in the LICENSE file. - -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -// Indicates whether filename is a base64 data URI. +var dataURIPrefix = "data:application/octet-stream;base64,"; function isDataURI(filename) { - return String.prototype.startsWith ? - filename.startsWith(dataURIPrefix) : - filename.indexOf(dataURIPrefix) === 0; + return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0; } - - - - -var wasmBinaryFile = 'x2t.wasm'; +var wasmBinaryFile = "x2t.wasm"; if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); + wasmBinaryFile = locateFile(wasmBinaryFile); } - function getBinary() { - try { - if (wasmBinary) { - return new Uint8Array(wasmBinary); - } - - if (readBinary) { - return readBinary(wasmBinaryFile); - } else { - throw "both async and sync fetching of the wasm failed"; - } + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary); } - catch (err) { - abort(err); + if (readBinary) { + return readBinary(wasmBinaryFile); + } else { + throw "both async and sync fetching of the wasm failed"; } + } catch (err) { + abort(err); + } } - function getBinaryPromise() { - // if we don't have the binary yet, and have the Fetch api, use that - // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { - if (!response['ok']) { - throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; - } - return response['arrayBuffer'](); - }).catch(function () { - return getBinary(); - }); - } - // Otherwise, getBinary should be able to get it synchronously - return new Promise(function(resolve, reject) { - resolve(getBinary()); - }); + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function") { + return fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then((function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + })).catch((function() { + return getBinary(); + })); + } + return new Promise((function(resolve, reject) { + resolve(getBinary()); + })); } - - - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. function createWasm() { - // prepare imports - var info = { - 'env': asmLibraryArg, - 'wasi_unstable': asmLibraryArg - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - function receiveInstance(instance, module) { - var exports = instance.exports; - Module['asm'] = exports; - // Keep a reference to the compiled module so we can post it to the workers. - wasmModule = module; - // Instantiation is synchronous in pthreads and we assert on run dependencies. - if (!ENVIRONMENT_IS_PTHREAD) removeRunDependency('wasm-instantiate'); + var info = { + "env": asmLibraryArg, + "wasi_unstable": asmLibraryArg + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + wasmModule = module; + if (!ENVIRONMENT_IS_PTHREAD) removeRunDependency("wasm-instantiate"); + } + if (!ENVIRONMENT_IS_PTHREAD) { + addRunDependency("wasm-instantiate"); + } + var trueModule = Module; + function receiveInstantiatedSource(output) { + assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"); + trueModule = null; + receiveInstance(output["instance"], output["module"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then((function(binary) { + return WebAssembly.instantiate(binary, info); + })).then(receiver, (function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + })); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") { + fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then((function(response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, (function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + instantiateArrayBuffer(receiveInstantiatedSource); + })); + })); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); } - // we can't run yet (except in a pthread, where we have a custom sync instantiator) - if (!ENVIRONMENT_IS_PTHREAD) { addRunDependency('wasm-instantiate'); } - - - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiatedSource(output) { - // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - receiveInstance(output['instance'], output['module']); + } + if (Module["instantiateWasm"]) { + try { + var exports = Module["instantiateWasm"](info, receiveInstance); + return exports; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; } - - - function instantiateArrayBuffer(receiver) { - return getBinaryPromise().then(function(binary) { - return WebAssembly.instantiate(binary, info); - }).then(receiver, function(reason) { - err('failed to asynchronously prepare wasm: ' + reason); - abort(reason); - }); - } - - // Prefer streaming instantiation if available. - function instantiateAsync() { - if (!wasmBinary && - typeof WebAssembly.instantiateStreaming === 'function' && - !isDataURI(wasmBinaryFile) && - typeof fetch === 'function') { - fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { - var result = WebAssembly.instantiateStreaming(response, info); - return result.then(receiveInstantiatedSource, function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err('wasm streaming compile failed: ' + reason); - err('falling back to ArrayBuffer instantiation'); - instantiateArrayBuffer(receiveInstantiatedSource); - }); - }); - } else { - return instantiateArrayBuffer(receiveInstantiatedSource); - } - } - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel - // to any other async startup actions they are performing. - if (Module['instantiateWasm']) { - try { - var exports = Module['instantiateWasm'](info, receiveInstance); - return exports; - } catch(e) { - err('Module.instantiateWasm callback failed with error: ' + e); - return false; - } - } - - instantiateAsync(); - return {}; // no exports yet; we'll fill them in later + } + instantiateAsync(); + return {}; } - - -// Globals used by JS i64 conversions var tempDouble; var tempI64; - -// === Body === - var ASM_CONSTS = { - 55680: function() {FS.mkdir('/working'); FS.mount(NODEFS, { root: '.' }, '/working');}, - 10774936: function() {throw 'Canceled!'}, - 10775075: function() {postMessage({cmd : 'processQueuedMainThreadWork'})}, - 10775126: function($0) {if (!ENVIRONMENT_IS_PTHREAD) { if (!PThread.pthreads[$0] || !PThread.pthreads[$0].worker) { return 0; } PThread.pthreads[$0].worker.postMessage({cmd : 'processThreadQueue'}); } else { postMessage({targetThread : $0, cmd : 'processThreadQueue'}); } return 1;}, - 10775494: function() {return !!(Module['canvas'])}, - 10775530: function() {noExitRuntime = true} -}; - -// Avoid creating a new array -var _readAsmConstArgsArray = []; - -function readAsmConstArgs(sigPtr, buf) { - var args = _readAsmConstArgsArray; - args.length = 0; - while (1) { - var ch = HEAPU8[sigPtr++]; - if (!ch) return args; - if (ch === 'd'.charCodeAt(0) || ch === 'f'.charCodeAt(0)) { - buf = alignMemory(buf, 8); - args.push(HEAPF64[(buf >> 3)]); - buf += 8; - } else if (ch === 'i'.charCodeAt(0)) { - buf = alignMemory(buf, 4); - args.push(HEAP32[(buf >> 2)]); - buf += 4; - } else abort("unexpected char in asm const signature " + ch); - } -} - - -function _emscripten_asm_const_iii(code, sigPtr, argbuf) { - var args = readAsmConstArgs(sigPtr, argbuf); - return ASM_CONSTS[code].apply(null, args); -}function initPthreadsJS(){ PThread.initRuntime(); } - - - -// STATICTOP = STATIC_BASE + 12594896; -/* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___wasm_call_ctors() } }); - - - -/* no memory initializer */ -// {{PRE_LIBRARY}} - - - function demangle(func) { - warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); - return func; - } - Module["demangle"] = demangle; - - function demangleAll(text) { - var regex = - /\b_Z[\w\d_]+/g; - return text.replace(regex, - function(x) { - var y = demangle(x); - return x === y ? x : (y + ' [' + x + ']'); - }); - } - Module["demangleAll"] = demangleAll; - - function jsStackTrace() { - var err = new Error(); - if (!err.stack) { - // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, - // so try that as a special-case. - try { - throw new Error(0); - } catch(e) { - err = e; - } - if (!err.stack) { - return '(no stack trace available)'; - } - } - return err.stack.toString(); - } - Module["jsStackTrace"] = jsStackTrace; - - function stackTrace() { - var js = jsStackTrace(); - if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); - return demangleAll(js); - } - Module["stackTrace"] = stackTrace; - - function __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE( - ) { - err('missing function: _ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; - - function __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE( - ) { - err('missing function: _ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; - - function __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE( - ) { - err('missing function: _ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; - - function __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE( - ) { - err('missing function: _ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; - - function __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE( - ) { - err('missing function: _ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; - - function __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb( - ) { - err('missing function: _ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb'); abort(-1); - } - Module["__ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"] = __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb; - - function __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb( - ) { - err('missing function: _ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb'); abort(-1); - } - Module["__ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"] = __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb; - - function __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb( - ) { - err('missing function: _ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb'); abort(-1); - } - Module["__ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb"] = __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb; - - function __ZN12CPdfRendererD1Ev( - ) { - err('missing function: _ZN12CPdfRendererD1Ev'); abort(-1); - } - Module["__ZN12CPdfRendererD1Ev"] = __ZN12CPdfRendererD1Ev; - - function __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv( - ) { - err('missing function: _ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv'); abort(-1); - } - Module["__ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv"] = __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv; - - function __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_( - ) { - err('missing function: _ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_'); abort(-1); - } - Module["__ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_"] = __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_; - - function __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE( - ) { - err('missing function: _ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE'); abort(-1); - } - Module["__ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE"] = __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE; - - function __ZN14NSDoctRenderer13CDoctrendererD1Ev( - ) { - err('missing function: _ZN14NSDoctRenderer13CDoctrendererD1Ev'); abort(-1); - } - Module["__ZN14NSDoctRenderer13CDoctrendererD1Ev"] = __ZN14NSDoctRenderer13CDoctrendererD1Ev; - - function __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_( - ) { - err('missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_'); abort(-1); - } - Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_; - - function __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb( - ) { - err('missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb'); abort(-1); - } - Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb; - - function __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev( - ) { - err('missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev'); abort(-1); - } - Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev; - - function __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev( - ) { - err('missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev'); abort(-1); - } - Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev; - - function __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb( - ) { - err('missing function: _ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb'); abort(-1); - } - Module["__ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb"] = __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb; - - function __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE( - ) { - err('missing function: _ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE'); abort(-1); - } - Module["__ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE"] = __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE; - - function __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE( - ) { - err('missing function: _ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE'); abort(-1); - } - Module["__ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE"] = __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE; - - function __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_( - ) { - err('missing function: _ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_'); abort(-1); - } - Module["__ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_"] = __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_; - - function __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_( - ) { - err('missing function: _ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_'); abort(-1); - } - Module["__ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_"] = __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_; - - function __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_( - ) { - err('missing function: _ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_'); abort(-1); - } - Module["__ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_"] = __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_; - - function __ZN9CHtmlFileC1Ev( - ) { - err('missing function: _ZN9CHtmlFileC1Ev'); abort(-1); - } - Module["__ZN9CHtmlFileC1Ev"] = __ZN9CHtmlFileC1Ev; - - function __ZN9CHtmlFileD1Ev( - ) { - err('missing function: _ZN9CHtmlFileD1Ev'); abort(-1); - } - Module["__ZN9CHtmlFileD1Ev"] = __ZN9CHtmlFileD1Ev; - - function __ZN9PdfReader10CPdfReader8GetErrorEv( - ) { - err('missing function: _ZN9PdfReader10CPdfReader8GetErrorEv'); abort(-1); - } - Module["__ZN9PdfReader10CPdfReader8GetErrorEv"] = __ZN9PdfReader10CPdfReader8GetErrorEv; - - function __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE( - ) { - err('missing function: _ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE'); abort(-1); - } - Module["__ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE"] = __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE; - - function ___assert_fail(condition, filename, line, func) { - abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); - } - Module["___assert_fail"] = ___assert_fail; - - - - var PROCINFO={ppid:1,pid:42,sid:42,pgid:42}; - Module["PROCINFO"] = PROCINFO; - - - var __pthread_ptr=0; - Module["__pthread_ptr"] = __pthread_ptr; - - var __pthread_is_main_runtime_thread=0; - Module["__pthread_is_main_runtime_thread"] = __pthread_is_main_runtime_thread; - - var __pthread_is_main_browser_thread=0; - Module["__pthread_is_main_browser_thread"] = __pthread_is_main_browser_thread;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) { - pthreadPtr = pthreadPtr|0; - isMainBrowserThread = isMainBrowserThread|0; - isMainRuntimeThread = isMainRuntimeThread|0; - __pthread_ptr = pthreadPtr; - __pthread_is_main_browser_thread = isMainBrowserThread; - __pthread_is_main_runtime_thread = isMainRuntimeThread; - } - Module["__register_pthread_ptr"] = __register_pthread_ptr; - - var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135}; - Module["ERRNO_CODES"] = ERRNO_CODES; - - - var __main_thread_futex_wait_address=12595904; - Module["__main_thread_futex_wait_address"] = __main_thread_futex_wait_address;function _emscripten_futex_wake(addr, count) { - if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -28; - if (count == 0) return 0; - // Waking (at least) INT_MAX waiters is defined to mean wake all callers. - // For Atomics.notify() API Infinity is to be passed in that case. - if (count >= 2147483647) count = Infinity; - // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n'); - - // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero. - // Note that this is not a fair procedure, since we always wake main thread first before any workers, so - // this scheme does not adhere to real queue-based waiting. - var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); - var mainThreadWoken = 0; - if (mainThreadWaitAddress == addr) { - var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0); - if (loadedAddr == mainThreadWaitAddress) { - --count; - mainThreadWoken = 1; - if (count <= 0) return 1; - } - } - - // Wake any workers waiting on this address. - var ret = Atomics.notify(HEAP32, addr >> 2, count); - if (ret >= 0) return ret + mainThreadWoken; - throw 'Atomics.notify returned an unexpected value ' + ret; - } - Module["_emscripten_futex_wake"] = _emscripten_futex_wake; - - function __kill_thread(pthread_ptr) { - if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _kill_thread() can only ever be called from main application thread!'; - if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _kill_thread!'; - HEAP32[(((pthread_ptr)+(24))>>2)]=0; - var pthread = PThread.pthreads[pthread_ptr]; - pthread.worker.terminate(); - PThread.freeThreadData(pthread); - // The worker was completely nuked (not just the pthread execution it was hosting), so remove it from running workers - // but don't put it back to the pool. - PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker), 1); // Not a running Worker anymore. - pthread.worker.pthread = undefined; - } - Module["__kill_thread"] = __kill_thread; - - function __cancel_thread(pthread_ptr) { - if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cancel_thread() can only ever be called from main application thread!'; - if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cancel_thread!'; - var pthread = PThread.pthreads[pthread_ptr]; - pthread.worker.postMessage({ 'cmd': 'cancel' }); - } - Module["__cancel_thread"] = __cancel_thread; - - function __cleanup_thread(pthread_ptr) { - if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!'; - if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!'; - HEAP32[(((pthread_ptr)+(24))>>2)]=0; - var pthread = PThread.pthreads[pthread_ptr]; - if (pthread) { - var worker = pthread.worker; - PThread.returnWorkerToPool(worker); - } - } - Module["__cleanup_thread"] = __cleanup_thread;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},preallocatedWorkers:[],unusedWorkers:[],runningWorkers:[],initRuntime:function() { - // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out. - // Global constructors trying to access this value will read the wrong value, but that is UB anyway. - __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); - _emscripten_register_main_browser_thread_id(PThread.mainThreadBlock); - },initMainThreadBlock:function() { - if (ENVIRONMENT_IS_PTHREAD) return undefined; - - - PThread.mainThreadBlock = 12595120; - - for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0; - - // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t - // structure is 'alive'. - HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock; - - // pthread struct robust_list head should point to itself. - var headPtr = PThread.mainThreadBlock + 168; - HEAP32[((headPtr)>>2)]=headPtr; - - // Allocate memory for thread-local storage. - var tlsMemory = 12595376; - for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0; - Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array. - Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID. - Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID. - - },initWorker:function() { - },pthreads:{},exitHandlers:null,setThreadStatus:function() {},runExitHandlers:function() { - if (PThread.exitHandlers !== null) { - while (PThread.exitHandlers.length > 0) { - PThread.exitHandlers.pop()(); - } - PThread.exitHandlers = null; - } - - // Call into the musl function that runs destructors of all thread-specific data. - if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors(); - },threadExit:function(exitCode) { - var tb = _pthread_self(); - if (tb) { // If we haven't yet exited? - Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode); - // When we publish this, the main thread is free to deallocate the thread object and we are done. - // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread. - Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1); - - // Disable all cancellation so that executing the cleanup handlers won't trigger another JS - // canceled exception to be thrown. - Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/); - Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/); - PThread.runExitHandlers(); - - _emscripten_futex_wake(tb + 0, 2147483647); - __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope. - threadInfoStruct = 0; - if (ENVIRONMENT_IS_PTHREAD) { - // Note: in theory we would like to return any offscreen canvases back to the main thread, - // but if we ever fetched a rendering context for them that would not be valid, so we don't try. - postMessage({ 'cmd': 'exit' }); - } - } - },threadCancel:function() { - PThread.runExitHandlers(); - Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/); - Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running. - _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads - threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null. - __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope. - postMessage({ 'cmd': 'cancelDone' }); - },terminateAllThreads:function() { - for (var t in PThread.pthreads) { - var pthread = PThread.pthreads[t]; - if (pthread && pthread.worker) { - PThread.returnWorkerToPool(pthread.worker); - } - } - PThread.pthreads = {}; - - for (var i = 0; i < PThread.preallocatedWorkers.length; ++i) { - var worker = PThread.preallocatedWorkers[i]; - assert(!worker.pthread); // This Worker should not be hosting a pthread at this time. - worker.terminate(); - } - PThread.preallocatedWorkers = []; - - for (var i = 0; i < PThread.unusedWorkers.length; ++i) { - var worker = PThread.unusedWorkers[i]; - assert(!worker.pthread); // This Worker should not be hosting a pthread at this time. - worker.terminate(); - } - PThread.unusedWorkers = []; - - for (var i = 0; i < PThread.runningWorkers.length; ++i) { - var worker = PThread.runningWorkers[i]; - var pthread = worker.pthread; - assert(pthread, 'This Worker should have a pthread it is executing'); - PThread.freeThreadData(pthread); - worker.terminate(); - } - PThread.runningWorkers = []; - },freeThreadData:function(pthread) { - if (!pthread) return; - if (pthread.threadInfoStruct) { - var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]; - HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0; - _free(tlsMemory); - _free(pthread.threadInfoStruct); - } - pthread.threadInfoStruct = 0; - if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase); - pthread.stackBase = 0; - if (pthread.worker) pthread.worker.pthread = null; - },returnWorkerToPool:function(worker) { - delete PThread.pthreads[worker.pthread.thread]; - //Note: worker is intentionally not terminated so the pool can dynamically grow. - PThread.unusedWorkers.push(worker); - PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1); // Not a running Worker anymore - PThread.freeThreadData(worker.pthread); - worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker. - },receiveObjectTransfer:function(data) { - },allocateUnusedWorkers:function(numWorkers, onFinishedLoading) { - if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op. - - var workers = []; - - var numWorkersToCreate = numWorkers; - if (PThread.preallocatedWorkers.length > 0) { - var workersUsed = Math.min(PThread.preallocatedWorkers.length, numWorkers); - workers = workers.concat(PThread.preallocatedWorkers.splice(0, workersUsed)); - numWorkersToCreate -= workersUsed; - } - if (numWorkersToCreate > 0) { - workers = workers.concat(PThread.createNewWorkers(numWorkersToCreate)); - } - - // Add the listeners. - PThread.attachListenerToWorkers(workers, onFinishedLoading); - - // Load the wasm module into the worker. - for (var i = 0; i < numWorkers; ++i) { - var worker = workers[i]; - - - // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation. - worker.postMessage({ - 'cmd': 'load', - // If the application main .js file was loaded from a Blob, then it is not possible - // to access the URL of the current script that could be passed to a Web Worker so that - // it could load up the same file. In that case, developer must either deliver the Blob - // object in Module['mainScriptUrlOrBlob'], or a URL to it, so that pthread Workers can - // independently load up the same main application file. - 'urlOrBlob': Module['mainScriptUrlOrBlob'] || _scriptDir, - 'wasmMemory': wasmMemory, - 'wasmModule': wasmModule, - 'DYNAMIC_BASE': DYNAMIC_BASE, - 'DYNAMICTOP_PTR': DYNAMICTOP_PTR - }); - PThread.unusedWorkers.push(worker); - } - },attachListenerToWorkers:function(workers, onFinishedLoading) { - var numWorkersLoaded = 0; - var numWorkers = workers.length; - for (var i = 0; i < numWorkers; ++i) { - var worker = workers[i]; - (function(worker) { - worker.onmessage = function(e) { - var d = e['data']; - var cmd = d['cmd']; - // Sometimes we need to backproxy events to the calling thread (e.g. HTML5 DOM events handlers such as emscripten_set_mousemove_callback()), so keep track in a globally accessible variable about the thread that initiated the proxying. - if (worker.pthread) PThread.currentProxiedOperationCallerThread = worker.pthread.threadInfoStruct; - - // If this message is intended to a recipient that is not the main thread, forward it to the target thread. - if (d['targetThread'] && d['targetThread'] != _pthread_self()) { - var thread = PThread.pthreads[d.targetThread]; - if (thread) { - thread.worker.postMessage(e.data, d['transferList']); - } else { - console.error('Internal error! Worker sent a message "' + cmd + '" to target pthread ' + d['targetThread'] + ', but that thread no longer exists!'); - } - PThread.currentProxiedOperationCallerThread = undefined; - return; - } - - if (cmd === 'processQueuedMainThreadWork') { - // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode. - _emscripten_main_thread_process_queued_calls(); - } else if (cmd === 'spawnThread') { - __spawn_thread(e.data); - } else if (cmd === 'cleanupThread') { - __cleanup_thread(d['thread']); - } else if (cmd === 'killThread') { - __kill_thread(d['thread']); - } else if (cmd === 'cancelThread') { - __cancel_thread(d['thread']); - } else if (cmd === 'loaded') { - worker.loaded = true; - // If this Worker is already pending to start running a thread, launch the thread now - if (worker.runPthread) { - worker.runPthread(); - delete worker.runPthread; - } - ++numWorkersLoaded; - if (numWorkersLoaded === numWorkers && onFinishedLoading) { - onFinishedLoading(); - } - } else if (cmd === 'print') { - out('Thread ' + d['threadId'] + ': ' + d['text']); - } else if (cmd === 'printErr') { - err('Thread ' + d['threadId'] + ': ' + d['text']); - } else if (cmd === 'alert') { - alert('Thread ' + d['threadId'] + ': ' + d['text']); - } else if (cmd === 'exit') { - var detached = worker.pthread && Atomics.load(HEAPU32, (worker.pthread.thread + 80) >> 2); - if (detached) { - PThread.returnWorkerToPool(worker); - } - } else if (cmd === 'exitProcess') { - // A pthread has requested to exit the whole application process (runtime). - noExitRuntime = false; - try { - exit(d['returnCode']); - } catch (e) { - if (e instanceof ExitStatus) return; - throw e; - } - } else if (cmd === 'cancelDone') { - PThread.returnWorkerToPool(worker); - } else if (cmd === 'objectTransfer') { - PThread.receiveObjectTransfer(e.data); - } else if (e.data.target === 'setimmediate') { - worker.postMessage(e.data); // Worker wants to postMessage() to itself to implement setImmediate() emulation. - } else { - err("worker sent an unknown command " + cmd); - } - PThread.currentProxiedOperationCallerThread = undefined; - }; - - worker.onerror = function(e) { - err('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message); - }; - - if (ENVIRONMENT_HAS_NODE) { - worker.on('message', function(data) { - worker.onmessage({ data: data }); - }); - worker.on('error', function(data) { - worker.onerror(data); - }); - worker.on('exit', function(data) { - console.log('worker exited - TODO: update the worker queue?'); - }); - } - }(worker)); - } // for each worker - },createNewWorkers:function(numWorkers) { - // Creates new workers with the discovered pthread worker file. - if (typeof SharedArrayBuffer === 'undefined') return []; // No multithreading support, no-op. - var pthreadMainJs = "x2t.worker.js"; - // Allow HTML module to configure the location where the 'worker.js' file will be loaded from, - // via Module.locateFile() function. If not specified, then the default URL 'worker.js' relative - // to the main html file is loaded. - pthreadMainJs = locateFile(pthreadMainJs); - var newWorkers = []; - for (var i = 0; i < numWorkers; ++i) { - newWorkers.push(new Worker(pthreadMainJs)); - } - return newWorkers; - },getNewWorker:function() { - if (PThread.unusedWorkers.length == 0) PThread.allocateUnusedWorkers(1); - if (PThread.unusedWorkers.length > 0) return PThread.unusedWorkers.pop(); - else return null; - },busySpinWait:function(msecs) { - var t = performance.now() + msecs; - while(performance.now() < t) { - ; - } - }}; - Module["PThread"] = PThread;function ___call_main(argc, argv) { - var returnCode = _main(argc, argv); - if (!noExitRuntime) postMessage({ 'cmd': 'exitProcess', 'returnCode': returnCode }); - return returnCode; - } - Module["___call_main"] = ___call_main; - - - - function _emscripten_get_now() { abort() } - Module["_emscripten_get_now"] = _emscripten_get_now; - - function _emscripten_get_now_is_monotonic() { - // return whether emscripten_get_now is guaranteed monotonic; the Date.now - // implementation is not :( - return (0 - || ENVIRONMENT_IS_NODE - || (typeof dateNow !== 'undefined') - || (typeof performance === 'object' && performance && typeof performance['now'] === 'function') - ); - } - Module["_emscripten_get_now_is_monotonic"] = _emscripten_get_now_is_monotonic; - - function ___setErrNo(value) { - if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value; - else err('failed to set errno from JS'); - return value; - } - Module["___setErrNo"] = ___setErrNo;function _clock_gettime(clk_id, tp) { - // int clock_gettime(clockid_t clk_id, struct timespec *tp); - var now; - if (clk_id === 0) { - now = Date.now(); - } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) { - now = _emscripten_get_now(); - } else { - ___setErrNo(28); - return -1; - } - HEAP32[((tp)>>2)]=(now/1000)|0; // seconds - HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds - return 0; - } - Module["_clock_gettime"] = _clock_gettime;function ___clock_gettime(a0,a1 - ) { - return _clock_gettime(a0,a1); - } - Module["___clock_gettime"] = ___clock_gettime; - - function ___cxa_allocate_exception(size) { - return _malloc(size); - } - Module["___cxa_allocate_exception"] = ___cxa_allocate_exception; - - - function _atexit(func, arg) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(1, 1, func, arg); - - warnOnce('atexit() called, but EXIT_RUNTIME is not set, so atexits() will not be called. set EXIT_RUNTIME to 1 (see the FAQ)'); - __ATEXIT__.unshift({ func: func, arg: arg }); - } - - Module["_atexit"] = _atexit;function ___cxa_atexit( - ) { - return _atexit.apply(null, arguments) - } - Module["___cxa_atexit"] = ___cxa_atexit; - - - var ___exception_caught= []; - Module["___exception_caught"] = ___exception_caught; - - - var ___exception_infos={}; - Module["___exception_infos"] = ___exception_infos;function ___exception_deAdjust(adjusted) { - if (!adjusted || ___exception_infos[adjusted]) return adjusted; - for (var key in ___exception_infos) { - var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for - var adj = ___exception_infos[ptr].adjusted; - var len = adj.length; - for (var i = 0; i < len; i++) { - if (adj[i] === adjusted) { - return ptr; - } - } - } - return adjusted; - } - Module["___exception_deAdjust"] = ___exception_deAdjust; - - var ___exception_last=0; - Module["___exception_last"] = ___exception_last;function ___cxa_rethrow() { - var ptr = ___exception_caught.pop(); - ptr = ___exception_deAdjust(ptr); - if (!___exception_infos[ptr].rethrown) { - // Only pop if the corresponding push was through rethrow_primary_exception - ___exception_caught.push(ptr); - ___exception_infos[ptr].rethrown = true; - } - ___exception_last = ptr; - throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; - } - Module["___cxa_rethrow"] = ___cxa_rethrow; - - function ___cxa_throw(ptr, type, destructor) { - ___exception_infos[ptr] = { - ptr: ptr, - adjusted: [ptr], - type: type, - destructor: destructor, - refcount: 0, - caught: false, - rethrown: false - }; - ___exception_last = ptr; - if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { - __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; - } else { - __ZSt18uncaught_exceptionv.uncaught_exceptions++; - } - throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; - } - Module["___cxa_throw"] = ___cxa_throw; - - function ___lock() {} - Module["___lock"] = ___lock; - - function ___map_file(pathname, size) { - ___setErrNo(63); - return -1; - } - Module["___map_file"] = ___map_file; - - - - var PATH={splitPath:function(filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up; up--) { - parts.unshift('..'); - } - } - return parts; - },normalize:function(path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function(path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function(path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function(path) { - return PATH.splitPath(path)[3]; - },join:function() { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function(l, r) { - return PATH.normalize(l + '/' + r); - }}; - Module["PATH"] = PATH; - - - var PATH_FS={resolve:function() { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - return ''; // an invalid portion invalidates the whole thing - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function(from, to) { - from = PATH_FS.resolve(from).substr(1); - to = PATH_FS.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - Module["PATH_FS"] = PATH_FS; - - var TTY={ttys:[],init:function () { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function() { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - },close:function(stream) { - // flush any pending line data - stream.tty.ops.flush(stream.tty); - },flush:function(stream) { - stream.tty.ops.flush(stream.tty); - },read:function(stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60); - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } - } catch (e) { - throw new FS.ErrnoError(29); - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function(tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - // we will read data by chunks of BUFSIZE - var BUFSIZE = 256; - var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); - var bytesRead = 0; - - try { - bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); - } catch(e) { - // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, - // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. - if (e.toString().indexOf('EOF') != -1) bytesRead = 0; - else throw e; - } - - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString('utf-8'); - } else { - result = null; - } - } else - if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. - } - },flush:function(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }},default_tty1_ops:{put_char:function(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - },flush:function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }}}; - Module["TTY"] = TTY; - - var MEMFS={ops_table:null,mount:function(mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(63); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap, - msync: MEMFS.stream_ops.msync - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - } - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. - // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred - // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size - // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. - node.contents = null; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },getFileDataAsRegularArray:function(node) { - if (node.contents && node.contents.subarray) { - var arr = []; - for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); - return arr; // Returns a copy of the original data. - } - return node.contents; // No-op, the file contents are already in a JS array. Return as-is. - },getFileDataAsTypedArray:function(node) { - if (!node.contents) return new Uint8Array; - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. - return new Uint8Array(node.contents); - },expandFileStorage:function(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. - // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. - // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to - // avoid overshooting the allocation cap by a very large margin. - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); // Allocate new storage. - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. - return; - },resizeFileStorage:function(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; // Fully decommit when requesting a resize to zero. - node.usedBytes = 0; - return; - } - if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. - var oldContents = node.contents; - node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage. - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. - } - node.usedBytes = newSize; - return; - } - // Backing with a JS array. - if (!node.contents) node.contents = []; - if (node.contents.length > newSize) node.contents.length = newSize; - else while (node.contents.length < newSize) node.contents.push(0); - node.usedBytes = newSize; - },node_ops:{getattr:function(node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.usedBytes; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.resizeFileStorage(node, attr.size); - } - },lookup:function(parent, name) { - throw FS.genericErrors[44]; - },mknod:function(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function(old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(55); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function(parent, name) { - delete parent.contents[name]; - },rmdir:function(parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(55); - } - delete parent.contents[name]; - },readdir:function(node) { - var entries = ['.', '..']; - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - }},stream_ops:{read:function(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= stream.node.usedBytes) return 0; - var size = Math.min(stream.node.usedBytes - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else { - for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; - } - return size; - },write:function(stream, buffer, offset, length, position, canOwn) { - // The data buffer should be a typed array view - assert(!(buffer instanceof ArrayBuffer)); - - if (!length) return 0; - var node = stream.node; - node.timestamp = Date.now(); - - if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? - if (canOwn) { - assert(position === 0, 'canOwn must imply no weird position inside the file'); - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. - node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - - // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. - MEMFS.expandFileStorage(node, position+length); - if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. - else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. - } - } - node.usedBytes = Math.max(node.usedBytes, position+length); - return length; - },llseek:function(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - },allocate:function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - },mmap:function(stream, buffer, offset, length, position, prot, flags) { - // The data buffer should be a typed array view - assert(!(buffer instanceof ArrayBuffer)); - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - contents.buffer === buffer.buffer ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < stream.node.usedBytes) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - // malloc() can lead to growing the heap. If targeting the heap, we need to - // re-acquire the heap buffer object in case growth had occurred. - var fromHeap = (buffer.buffer == HEAP8.buffer); - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - (fromHeap ? HEAP8 : buffer).set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - },msync:function(stream, buffer, offset, length, mmapFlags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (mmapFlags & 2) { - // MAP_PRIVATE calls need not to be synced back to underlying fs - return 0; - } - - var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - // should we check if bytesWritten and length are the same? - return 0; - }}}; - Module["MEMFS"] = MEMFS; - - var NODEFS={isWindows:false,staticInit:function() { - NODEFS.isWindows = !!process.platform.match(/^win/); - var flags = process["binding"]("constants"); - // Node.js 4 compatibility: it has no namespaces for constants - if (flags["fs"]) { - flags = flags["fs"]; - } - NODEFS.flagsForNodeMap = { - "1024": flags["O_APPEND"], - "64": flags["O_CREAT"], - "128": flags["O_EXCL"], - "0": flags["O_RDONLY"], - "2": flags["O_RDWR"], - "4096": flags["O_SYNC"], - "512": flags["O_TRUNC"], - "1": flags["O_WRONLY"] - }; - },bufferFrom:function (arrayBuffer) { - // Node.js < 4.5 compatibility: Buffer.from does not support ArrayBuffer - // Buffer.from before 4.5 was just a method inherited from Uint8Array - // Buffer.alloc has been added with Buffer.from together, so check it instead - return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer); - },convertNodeCode:function(e) { - var code = e.code; - assert(code in ERRNO_CODES); - return ERRNO_CODES[code]; - },mount:function (mount) { - assert(ENVIRONMENT_HAS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(28); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // Node.js on Windows never represents permission bit 'x', so - // propagate read bits to execute bits - stat.mode = stat.mode | ((stat.mode & 292) >> 2); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsForNode:function(flags) { - flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file. - flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file. - flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file. - flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process. - var newFlags = 0; - for (var k in NODEFS.flagsForNodeMap) { - if (flags & k) { - newFlags |= NODEFS.flagsForNodeMap[k]; - flags ^= k; - } - } - - if (!flags) { - return newFlags; - } else { - throw new FS.ErrnoError(28); - } - },node_ops:{getattr:function(node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function(node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },unlink:function(parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },rmdir:function(parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },readdir:function(node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },symlink:function(parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },readlink:function(node) { - var path = NODEFS.realPath(node); - try { - path = fs.readlinkSync(path); - path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); - return path; - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },read:function (stream, buffer, offset, length, position) { - // Node.js < 6 compatibility: node errors on 0 length reads - if (length === 0) return 0; - try { - return fs.readSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },write:function (stream, buffer, offset, length, position) { - try { - return fs.writeSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(28); - } - - return position; - }}}; - Module["NODEFS"] = NODEFS; - - var ERRNO_MESSAGES={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"}; - Module["ERRNO_MESSAGES"] = ERRNO_MESSAGES;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function(path, opts) { - path = PATH_FS.resolve(FS.cwd(), path); - opts = opts || {}; - - if (!path) return { path: '', node: null }; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(32); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(32); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function(node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function(parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function(node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function(node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function(parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err, parent); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function(parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); } - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); } - } - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function(node) { - FS.hashRemoveNode(node); - },isRoot:function(node) { - return node === node.parent; - },isMountpoint:function(node) { - return !!node.mounted; - },isFile:function(mode) { - return (mode & 61440) === 32768; - },isDir:function(mode) { - return (mode & 61440) === 16384; - },isLink:function(mode) { - return (mode & 61440) === 40960; - },isChrdev:function(mode) { - return (mode & 61440) === 8192; - },isBlkdev:function(mode) { - return (mode & 61440) === 24576; - },isFIFO:function(mode) { - return (mode & 61440) === 4096; - },isSocket:function(mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function(flag) { - var perms = ['r', 'w', 'rw'][flag & 3]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function(node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return 2; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return 2; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return 2; - } - return 0; - },mayLookup:function(dir) { - var err = FS.nodePermissions(dir, 'x'); - if (err) return err; - if (!dir.node_ops.lookup) return 2; - return 0; - },mayCreate:function(dir, name) { - try { - var node = FS.lookupNode(dir, name); - return 20; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function(dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return 54; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return 10; - } - } else { - if (FS.isDir(node.mode)) { - return 31; - } - } - return 0; - },mayOpen:function(node, flags) { - if (!node) { - return 44; - } - if (FS.isLink(node.mode)) { - return 32; - } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write - (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function(fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - },getStream:function(fd) { - return FS.streams[fd]; - },createStream:function(stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - // clone it, so we can return an instance of FSStream - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function(fd) { - FS.streams[fd] = null; - },chrdev_stream_ops:{open:function(stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function() { - throw new FS.ErrnoError(70); - }},major:function(dev) { - return ((dev) >> 8); - },minor:function(dev) { - return ((dev) & 0xff); - },makedev:function(ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function(dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function(dev) { - return FS.devices[dev]; - },getMounts:function(mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function(populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - FS.syncFSRequests++; - - if (FS.syncFSRequests > 1) { - console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function doCallback(err) { - assert(FS.syncFSRequests > 0); - FS.syncFSRequests--; - return callback(err); - } - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return doCallback(err); - } - return; - } - if (++completed >= mounts.length) { - doCallback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function(type, opts, mountpoint) { - if (typeof type === 'string') { - // The filesystem was not included, and instead we have an error - // message stored in the variable. - throw type; - } - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(10); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(28); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function(parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function(path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - if (!name || name === '.' || name === '..') { - throw new FS.ErrnoError(28); - } - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function(path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function(path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdirTree:function(path, mode) { - var dirs = path.split('/'); - var d = ''; - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue; - d += '/' + dirs[i]; - try { - FS.mkdir(d, mode); - } catch(e) { - if (e.errno != 20) throw e; - } - } - },mkdev:function(path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function(oldpath, newpath) { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44); - } - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function(old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(10); - } - if (!old_dir || !new_dir) throw new FS.ErrnoError(44); - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28); - } - // new path should not be an ancestor of the old path - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(10); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - try { - if (FS.trackingDelegate['willMovePath']) { - FS.trackingDelegate['willMovePath'](old_path, new_path); - } - } catch(e) { - console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - try { - if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); - } catch(e) { - console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); - } - },rmdir:function(path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - try { - if (FS.trackingDelegate['willDeletePath']) { - FS.trackingDelegate['willDeletePath'](path); - } - } catch(e) { - console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - try { - if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); - } catch(e) { - console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); - } - },readdir:function(path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54); - } - return node.node_ops.readdir(node); - },unlink:function(path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // According to POSIX, we should map EISDIR to EPERM, but - // we instead do what Linux does (and we must, as we use - // the musl linux libc). - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - try { - if (FS.trackingDelegate['willDeletePath']) { - FS.trackingDelegate['willDeletePath'](path); - } - } catch(e) { - console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - try { - if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); - } catch(e) { - console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); - } - },readlink:function(path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link) { - throw new FS.ErrnoError(44); - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28); - } - return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); - },stat:function(path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node) { - throw new FS.ErrnoError(44); - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63); - } - return node.node_ops.getattr(node); - },lstat:function(path) { - return FS.stat(path, true); - },chmod:function(path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function(path, mode) { - FS.chmod(path, mode, true); - },fchmod:function(fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chmod(stream.node, mode); - },chown:function(path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function(path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function(fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chown(stream.node, uid, gid); - },truncate:function(path, len) { - if (len < 0) { - throw new FS.ErrnoError(28); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function(fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28); - } - FS.truncate(stream.node, len); - },utime:function(path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function(path, flags, mode, fd_start, fd_end) { - if (path === "") { - throw new FS.ErrnoError(44); - } - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - var created = false; - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(20); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // if asked only for a directory, then this must be one - if ((flags & 65536) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - // check permissions, if this is not a file we just created now (it is ok to - // create and write to a file with read-only permissions; it is read-only - // for later use) - if (!created) { - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - console.log("FS.trackingDelegate error on read file: " + path); - } - } - try { - if (FS.trackingDelegate['onOpenFile']) { - var trackingFlags = 0; - if ((flags & 2097155) !== 1) { - trackingFlags |= FS.tracking.openFlags.READ; - } - if ((flags & 2097155) !== 0) { - trackingFlags |= FS.tracking.openFlags.WRITE; - } - FS.trackingDelegate['onOpenFile'](path, trackingFlags); - } - } catch(e) { - console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); - } - return stream; - },close:function(stream) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (stream.getdents) stream.getdents = null; // free readdir state - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - stream.fd = null; - },isClosed:function(stream) { - return stream.fd === null; - },llseek:function(stream, offset, whence) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70); - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28); - } - stream.position = stream.stream_ops.llseek(stream, offset, whence); - stream.ungotten = []; - return stream.position; - },read:function(stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28); - } - var seeking = typeof position !== 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function(stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var seeking = typeof position !== 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - try { - if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); - } catch(e) { - console.log("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: " + e.message); - } - return bytesWritten; - },allocate:function(stream, offset, length) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function(stream, buffer, offset, length, position, prot, flags) { - // User requests writing to file (prot & PROT_WRITE != 0). - // Checking if we have permissions to write to the file unless - // MAP_PRIVATE flag is set. According to POSIX spec it is possible - // to write to file opened in read-only mode with MAP_PRIVATE flag, - // as all modifications will be visible only in the memory of - // the current process. - if ((prot & 2) !== 0 - && (flags & 2) === 0 - && (stream.flags & 2097155) !== 2) { - throw new FS.ErrnoError(2); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },msync:function(stream, buffer, offset, length, mmapFlags) { - if (!stream || !stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - },munmap:function(stream) { - return 0; - },ioctl:function(stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function(path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = UTF8ArrayToString(buf, 0); - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function(path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - var stream = FS.open(path, opts.flags, opts.mode); - if (typeof data === 'string') { - var buf = new Uint8Array(lengthBytesUTF8(data)+1); - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); - } else { - throw new Error('Unsupported data type'); - } - FS.close(stream); - },cwd:function() { - return FS.currentPath; - },chdir:function(path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (lookup.node === null) { - throw new FS.ErrnoError(44); - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function() { - FS.mkdir('/tmp'); - FS.mkdir('/home'); - FS.mkdir('/home/web_user'); - },createDefaultDevices:function() { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function(stream, buffer, offset, length, pos) { return length; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // setup /dev/[u]random - var random_device; - if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') { - // for modern web browsers - var randomBuffer = new Uint8Array(1); - random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; - } else - if (ENVIRONMENT_IS_NODE) { - // for nodejs with or without crypto support included - try { - var crypto_module = require('crypto'); - // nodejs has crypto support - random_device = function() { return crypto_module['randomBytes'](1)[0]; }; - } catch (e) { - // nodejs doesn't have crypto support - } - } else - {} - if (!random_device) { - // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 - random_device = function() { abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); }; - } - FS.createDevice('/dev', 'random', random_device); - FS.createDevice('/dev', 'urandom', random_device); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createSpecialDirectories:function() { - // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname) - FS.mkdir('/proc'); - FS.mkdir('/proc/self'); - FS.mkdir('/proc/self/fd'); - FS.mount({ - mount: function() { - var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73); - node.node_ops = { - lookup: function(parent, name) { - var fd = +name; - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: function() { return stream.path } } - }; - ret.parent = ret; // make it look like a simple root node - return ret; - } - }; - return node; - } - }, {}, '/proc/self/fd'); - },createStandardStreams:function() { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - var stdout = FS.open('/dev/stdout', 'w'); - var stderr = FS.open('/dev/stderr', 'w'); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function() { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno, node) { - this.node = node; - this.setErrno = function(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - }; - this.setErrno(errno); - this.message = ERRNO_MESSAGES[errno]; - - // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack - // now ensures it shows what we want. - if (this.stack) { - // Define the stack property for Node.js 4, which otherwise errors on the next line. - Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); - this.stack = demangleAll(this.stack); - } - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [44].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function() { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - - FS.filesystems = { - 'MEMFS': MEMFS, - 'NODEFS': NODEFS, - }; - },init:function(input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function() { - FS.init.initialized = false; - // force-flush all streams, so we get musl std streams printed out - var fflush = Module['_fflush']; - if (fflush) fflush(0); - // close all of our streams - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function(canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function(parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function(relative, base) { - return PATH_FS.resolve(base, relative); - },standardizePath:function(path) { - return PATH.normalize(path); - },findObject:function(path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function(path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function(parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function(parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function(parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function(parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function(parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(29); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function(parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function(obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (read_) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(read_(obj.url), true); - obj.usedBytes = obj.contents.length; - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(29); - return success; - },createLazyFile:function(parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = (idx / this.chunkSize)|0; - return this.getter(chunkNum)[chunkOffset]; - }; - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - }; - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; - - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - if (usesGzip || !datalength) { - // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length - chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file - datalength = this.getter(0).length; - chunkSize = datalength; - console.log("LazyFiles on gzip forces download of the whole file when length is accessed"); - } - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - }; - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperties(lazyArray, { - length: { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }, - chunkSize: { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // Add a function that defers querying the file size until it is asked the first time. - Object.defineProperties(node, { - usedBytes: { - get: function() { return this.contents.length; } - } - }); - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(29); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(29); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { - Browser.init(); // perhaps this method should move onto Browser? - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish(); - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency(dep); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency(dep); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency(dep); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function() { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function() { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function(paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - Module["FS"] = FS;var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function(dirfd, path) { - if (path[0] !== '/') { - // relative path - var dir; - if (dirfd === -100) { - dir = FS.cwd(); - } else { - var dirstream = FS.getStream(dirfd); - if (!dirstream) throw new FS.ErrnoError(8); - dir = dirstream.path; - } - path = PATH.join2(dir, path); - } - return path; - },doStat:function(func, path, buf) { - try { - var stat = func(path); - } catch (e) { - if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { - // an error occurred while trying to look up the path; we should just report ENOTDIR - return -54; - } - throw e; - } - HEAP32[((buf)>>2)]=stat.dev; - HEAP32[(((buf)+(4))>>2)]=0; - HEAP32[(((buf)+(8))>>2)]=stat.ino; - HEAP32[(((buf)+(12))>>2)]=stat.mode; - HEAP32[(((buf)+(16))>>2)]=stat.nlink; - HEAP32[(((buf)+(20))>>2)]=stat.uid; - HEAP32[(((buf)+(24))>>2)]=stat.gid; - HEAP32[(((buf)+(28))>>2)]=stat.rdev; - HEAP32[(((buf)+(32))>>2)]=0; - (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)]=tempI64[0],HEAP32[(((buf)+(44))>>2)]=tempI64[1]); - HEAP32[(((buf)+(48))>>2)]=4096; - HEAP32[(((buf)+(52))>>2)]=stat.blocks; - HEAP32[(((buf)+(56))>>2)]=(stat.atime.getTime() / 1000)|0; - HEAP32[(((buf)+(60))>>2)]=0; - HEAP32[(((buf)+(64))>>2)]=(stat.mtime.getTime() / 1000)|0; - HEAP32[(((buf)+(68))>>2)]=0; - HEAP32[(((buf)+(72))>>2)]=(stat.ctime.getTime() / 1000)|0; - HEAP32[(((buf)+(76))>>2)]=0; - (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(80))>>2)]=tempI64[0],HEAP32[(((buf)+(84))>>2)]=tempI64[1]); - return 0; - },doMsync:function(addr, stream, len, flags) { - var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); - FS.msync(stream, buffer, 0, len, flags); - },doMkdir:function(path, mode) { - // remove a trailing slash, if one - /a/b/ has basename of '', but - // we want to create b in the context of this function - path = PATH.normalize(path); - if (path[path.length-1] === '/') path = path.substr(0, path.length-1); - FS.mkdir(path, mode, 0); - return 0; - },doMknod:function(path, mode, dev) { - // we don't want this in the JS API as it uses mknod to create all nodes. - switch (mode & 61440) { - case 32768: - case 8192: - case 24576: - case 4096: - case 49152: - break; - default: return -28; - } - FS.mknod(path, mode, dev); - return 0; - },doReadlink:function(path, buf, bufsize) { - if (bufsize <= 0) return -28; - var ret = FS.readlink(path); - - var len = Math.min(bufsize, lengthBytesUTF8(ret)); - var endChar = HEAP8[buf+len]; - stringToUTF8(ret, buf, bufsize+1); - // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!) - // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write. - HEAP8[buf+len] = endChar; - - return len; - },doAccess:function(path, amode) { - if (amode & ~7) { - // need a valid mode - return -28; - } - var node; - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - if (!node) { - return -44; - } - var perms = ''; - if (amode & 4) perms += 'r'; - if (amode & 2) perms += 'w'; - if (amode & 1) perms += 'x'; - if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { - return -2; - } - return 0; - },doDup:function(path, flags, suggestFD) { - var suggest = FS.getStream(suggestFD); - if (suggest) FS.close(suggest); - return FS.open(path, flags, 0, suggestFD, suggestFD).fd; - },doReadv:function(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAP32[(((iov)+(i*8))>>2)]; - var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; - var curr = FS.read(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (curr < len) break; // nothing more to read - } - return ret; - },doWritev:function(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAP32[(((iov)+(i*8))>>2)]; - var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; - var curr = FS.write(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - } - return ret; - },varargs:0,get:function(varargs) { - SYSCALLS.varargs += 4; - var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; - return ret; - },getStr:function() { - var ret = UTF8ToString(SYSCALLS.get()); - return ret; - },getStreamFromFD:function(fd) { - // TODO: when all syscalls use wasi, can remove the next line - if (fd === undefined) fd = SYSCALLS.get(); - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - return stream; - },get64:function() { - var low = SYSCALLS.get(), high = SYSCALLS.get(); - if (low >= 0) assert(high === 0); - else assert(high === -1); - return low; - },getZero:function() { - assert(SYSCALLS.get() === 0); - }}; - Module["SYSCALLS"] = SYSCALLS;function ___syscall10(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(2, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // unlink - var path = SYSCALLS.getStr(); - FS.unlink(path); - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall10"] = ___syscall10; - - function ___syscall12(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(3, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // chdir - var path = SYSCALLS.getStr(); - FS.chdir(path); - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall12"] = ___syscall12; - - function ___syscall183(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(4, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // getcwd - var buf = SYSCALLS.get(), size = SYSCALLS.get(); - if (size === 0) return -28; - var cwd = FS.cwd(); - var cwdLengthInBytes = lengthBytesUTF8(cwd); - if (size < cwdLengthInBytes + 1) return -68; - stringToUTF8(cwd, buf, size); - return buf; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall183"] = ___syscall183; - - - - - function _memset(ptr, value, num) { - ptr = ptr|0; value = value|0; num = num|0; - var end = 0, aligned_end = 0, block_aligned_end = 0, value4 = 0; - end = (ptr + num)|0; - - value = value & 0xff; - if ((num|0) >= 67 /* 64 bytes for an unrolled loop + 3 bytes for unaligned head*/) { - while ((ptr&3) != 0) { - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; - } - - aligned_end = (end & -4)|0; - value4 = value | (value << 8) | (value << 16) | (value << 24); - - block_aligned_end = (aligned_end - 64)|0; - - while((ptr|0) <= (block_aligned_end|0)) { - HEAP32[((ptr)>>2)]=value4; - HEAP32[(((ptr)+(4))>>2)]=value4; - HEAP32[(((ptr)+(8))>>2)]=value4; - HEAP32[(((ptr)+(12))>>2)]=value4; - HEAP32[(((ptr)+(16))>>2)]=value4; - HEAP32[(((ptr)+(20))>>2)]=value4; - HEAP32[(((ptr)+(24))>>2)]=value4; - HEAP32[(((ptr)+(28))>>2)]=value4; - HEAP32[(((ptr)+(32))>>2)]=value4; - HEAP32[(((ptr)+(36))>>2)]=value4; - HEAP32[(((ptr)+(40))>>2)]=value4; - HEAP32[(((ptr)+(44))>>2)]=value4; - HEAP32[(((ptr)+(48))>>2)]=value4; - HEAP32[(((ptr)+(52))>>2)]=value4; - HEAP32[(((ptr)+(56))>>2)]=value4; - HEAP32[(((ptr)+(60))>>2)]=value4; - ptr = (ptr + 64)|0; - } - - while ((ptr|0) < (aligned_end|0) ) { - HEAP32[((ptr)>>2)]=value4; - ptr = (ptr+4)|0; - } - } - // The remaining bytes. - while ((ptr|0) < (end|0)) { - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; - } - return (end-num)|0; - } - Module["_memset"] = _memset;function __emscripten_syscall_mmap2(addr, len, prot, flags, fd, off) { - off <<= 12; // undo pgoffset - var ptr; - var allocated = false; - - // addr argument must be page aligned if MAP_FIXED flag is set. - if ((flags & 16) !== 0 && (addr % PAGE_SIZE) !== 0) { - return -28; - } - - // MAP_ANONYMOUS (aka MAP_ANON) isn't actually defined by POSIX spec, - // but it is widely used way to allocate memory pages on Linux, BSD and Mac. - // In this case fd argument is ignored. - if ((flags & 32) !== 0) { - ptr = _memalign(PAGE_SIZE, len); - if (!ptr) return -48; - _memset(ptr, 0, len); - allocated = true; - } else { - var info = FS.getStream(fd); - if (!info) return -8; - var res = FS.mmap(info, HEAPU8, addr, len, off, prot, flags); - ptr = res.ptr; - allocated = res.allocated; - } - SYSCALLS.mappings[ptr] = { malloc: ptr, len: len, allocated: allocated, fd: fd, flags: flags }; - return ptr; - } - Module["__emscripten_syscall_mmap2"] = __emscripten_syscall_mmap2;function ___syscall192(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(5, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // mmap2 - var addr = SYSCALLS.get(), len = SYSCALLS.get(), prot = SYSCALLS.get(), flags = SYSCALLS.get(), fd = SYSCALLS.get(), off = SYSCALLS.get() - return __emscripten_syscall_mmap2(addr, len, prot, flags, fd, off); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall192"] = ___syscall192; - - function ___syscall195(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(6, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // SYS_stat64 - var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); - return SYSCALLS.doStat(FS.stat, path, buf); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall195"] = ___syscall195; - - function ___syscall196(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(7, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // SYS_lstat64 - var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); - return SYSCALLS.doStat(FS.lstat, path, buf); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall196"] = ___syscall196; - - function ___syscall220(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(8, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // SYS_getdents64 - var stream = SYSCALLS.getStreamFromFD(), dirp = SYSCALLS.get(), count = SYSCALLS.get(); - if (!stream.getdents) { - stream.getdents = FS.readdir(stream.path); - } - - var struct_size = 280; - var pos = 0; - var off = FS.llseek(stream, 0, 1); - - var idx = Math.floor(off / struct_size); - - while (idx < stream.getdents.length && pos + struct_size <= count) { - var id; - var type; - var name = stream.getdents[idx]; - if (name[0] === '.') { - id = 1; - type = 4; // DT_DIR - } else { - var child = FS.lookupNode(stream.node, name); - id = child.id; - type = FS.isChrdev(child.mode) ? 2 : // DT_CHR, character device. - FS.isDir(child.mode) ? 4 : // DT_DIR, directory. - FS.isLink(child.mode) ? 10 : // DT_LNK, symbolic link. - 8; // DT_REG, regular file. - } - (tempI64 = [id>>>0,(tempDouble=id,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((dirp + pos)>>2)]=tempI64[0],HEAP32[(((dirp + pos)+(4))>>2)]=tempI64[1]); - (tempI64 = [(idx + 1) * struct_size>>>0,(tempDouble=(idx + 1) * struct_size,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((dirp + pos)+(8))>>2)]=tempI64[0],HEAP32[(((dirp + pos)+(12))>>2)]=tempI64[1]); - HEAP16[(((dirp + pos)+(16))>>1)]=280; - HEAP8[(((dirp + pos)+(18))>>0)]=type; - stringToUTF8(name, dirp + pos + 19, 256); - pos += struct_size; - idx += 1; - } - FS.llseek(stream, idx * struct_size, 0); - return pos; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall220"] = ___syscall220; - - function ___syscall221(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(9, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // fcntl64 - var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); - switch (cmd) { - case 0: { - var arg = SYSCALLS.get(); - if (arg < 0) { - return -28; - } - var newStream; - newStream = FS.open(stream.path, stream.flags, 0, arg); - return newStream.fd; - } - case 1: - case 2: - return 0; // FD_CLOEXEC makes no sense for a single process. - case 3: - return stream.flags; - case 4: { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - case 12: - /* case 12: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { - - var arg = SYSCALLS.get(); - var offset = 0; - // We're always unlocked. - HEAP16[(((arg)+(offset))>>1)]=2; - return 0; - } - case 13: - case 14: - /* case 13: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - /* case 14: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - - - return 0; // Pretend that the locking is successful. - case 16: - case 8: - return -28; // These are for sockets. We don't have them fully implemented yet. - case 9: - // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves. - ___setErrNo(28); - return -1; - default: { - return -28; - } - } - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall221"] = ___syscall221; - - function ___syscall3(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(10, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // read - var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(), count = SYSCALLS.get(); - return FS.read(stream, HEAP8,buf, count); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall3"] = ___syscall3; - - function ___syscall39(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(11, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // mkdir - var path = SYSCALLS.getStr(), mode = SYSCALLS.get(); - return SYSCALLS.doMkdir(path, mode); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall39"] = ___syscall39; - - function ___syscall4(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(12, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // write - var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(), count = SYSCALLS.get(); - return FS.write(stream, HEAP8,buf, count); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall4"] = ___syscall4; - - function ___syscall40(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(13, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // rmdir - var path = SYSCALLS.getStr(); - FS.rmdir(path); - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall40"] = ___syscall40; - - function ___syscall5(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(14, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // open - var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get(); // optional TODO - var stream = FS.open(pathname, flags, mode); - return stream.fd; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall5"] = ___syscall5; - - function ___syscall54(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(15, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // ioctl - var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); - switch (op) { - case 21509: - case 21505: { - if (!stream.tty) return -59; - return 0; - } - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59; - return 0; // no-op, not actually adjusting terminal settings - } - case 21519: { - if (!stream.tty) return -59; - var argp = SYSCALLS.get(); - HEAP32[((argp)>>2)]=0; - return 0; - } - case 21520: { - if (!stream.tty) return -59; - return -28; // not supported - } - case 21531: { - var argp = SYSCALLS.get(); - return FS.ioctl(stream, op, argp); - } - case 21523: { - // TODO: in theory we should write to the winsize struct that gets - // passed in, but for now musl doesn't read anything on it - if (!stream.tty) return -59; - return 0; - } - case 21524: { - // TODO: technically, this ioctl call should change the window size. - // but, since emscripten doesn't have any concept of a terminal window - // yet, we'll just silently throw it away as we do TIOCGWINSZ - if (!stream.tty) return -59; - return 0; - } - default: abort('bad ioctl syscall ' + op); - } - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall54"] = ___syscall54; - - function ___syscall85(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(16, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // readlink - var path = SYSCALLS.getStr(), buf = SYSCALLS.get(), bufsize = SYSCALLS.get(); - return SYSCALLS.doReadlink(path, buf, bufsize); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall85"] = ___syscall85; - - - function __emscripten_syscall_munmap(addr, len) { - if (addr === -1 || len === 0) { - return -28; - } - // TODO: support unmmap'ing parts of allocations - var info = SYSCALLS.mappings[addr]; - if (!info) return 0; - if (len === info.len) { - var stream = FS.getStream(info.fd); - SYSCALLS.doMsync(addr, stream, len, info.flags); - FS.munmap(stream); - SYSCALLS.mappings[addr] = null; - if (info.allocated) { - _free(info.malloc); - } - } - return 0; - } - Module["__emscripten_syscall_munmap"] = __emscripten_syscall_munmap;function ___syscall91(which, varargs) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(17, 1, which, varargs); - SYSCALLS.varargs = varargs; - try { - // munmap - var addr = SYSCALLS.get(), len = SYSCALLS.get(); - return __emscripten_syscall_munmap(addr, len); - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } - } - - Module["___syscall91"] = ___syscall91; - - function ___unlock() {} - Module["___unlock"] = ___unlock; - - function _abort() { - abort(); - } - Module["_abort"] = _abort; - - - function _emscripten_check_blocking_allowed() { - assert(ENVIRONMENT_IS_WEB); - warnOnce('Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread'); - } - Module["_emscripten_check_blocking_allowed"] = _emscripten_check_blocking_allowed; - - - function _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) { - } - Module["_emscripten_conditional_set_current_thread_status_js"] = _emscripten_conditional_set_current_thread_status_js;function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) { - expectedStatus = expectedStatus|0; - newStatus = newStatus|0; - } - Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status; - - function _emscripten_futex_wait(addr, val, timeout) { - if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -28; - // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n'); - if (ENVIRONMENT_IS_WORKER) { - var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout); - // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n'); - if (ret === 'timed-out') return -73; - if (ret === 'not-equal') return -6; - if (ret === 'ok') return 0; - throw 'Atomics.wait returned an unexpected value ' + ret; - } else { - // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning. - var loadedVal = Atomics.load(HEAP32, addr >> 2); - if (val != loadedVal) return -6; - - var tNow = performance.now(); - var tEnd = tNow + timeout; - - - // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything, - // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on. - Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr); - var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation. - while (addr == ourWaitAddress) { - tNow = performance.now(); - if (tNow > tEnd) { - return -73; - } - _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied. - addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up. - } - return 0; - } - } - Module["_emscripten_futex_wait"] = _emscripten_futex_wait; - - - function _emscripten_get_heap_size() { - return HEAP8.length; - } - Module["_emscripten_get_heap_size"] = _emscripten_get_heap_size; - - - function _emscripten_get_sbrk_ptr() { - return 12594960; - } - Module["_emscripten_get_sbrk_ptr"] = _emscripten_get_sbrk_ptr; - - function _emscripten_has_threading_support() { - return typeof SharedArrayBuffer !== 'undefined'; - } - Module["_emscripten_has_threading_support"] = _emscripten_has_threading_support; - - function _emscripten_is_main_browser_thread() { - return __pthread_is_main_browser_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_WORKER" outside the asm.js scope - } - Module["_emscripten_is_main_browser_thread"] = _emscripten_is_main_browser_thread; - - function _emscripten_is_main_runtime_thread() { - return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope - } - Module["_emscripten_is_main_runtime_thread"] = _emscripten_is_main_runtime_thread; - - - - - var setjmpId=0; - Module["setjmpId"] = setjmpId;function _saveSetjmp(env, label, table, size) { - // Not particularly fast: slow table lookup of setjmpId to label. But setjmp - // prevents relooping anyhow, so slowness is to be expected. And typical case - // is 1 setjmp per invocation, or less. - env = env|0; - label = label|0; - table = table|0; - size = size|0; - var i = 0; - setjmpId = (setjmpId+1)|0; - HEAP32[((env)>>2)]=setjmpId; - while ((i|0) < (size|0)) { - if (((HEAP32[(((table)+((i<<3)))>>2)])|0) == 0) { - HEAP32[(((table)+((i<<3)))>>2)]=setjmpId; - HEAP32[(((table)+((i<<3)+4))>>2)]=label; - // prepare next slot - HEAP32[(((table)+((i<<3)+8))>>2)]=0; - setTempRet0((size) | 0); - return table | 0; - } - i = i+1|0; - } - // grow the table - size = (size*2)|0; - table = _realloc(table|0, 8*(size+1|0)|0) | 0; - table = _saveSetjmp(env|0, label|0, table|0, size|0) | 0; - setTempRet0((size) | 0); - return table | 0; - } - Module["_saveSetjmp"] = _saveSetjmp; - - function _testSetjmp(id, table, size) { - id = id|0; - table = table|0; - size = size|0; - var i = 0, curr = 0; - while ((i|0) < (size|0)) { - curr = ((HEAP32[(((table)+((i<<3)))>>2)])|0); - if ((curr|0) == 0) break; - if ((curr|0) == (id|0)) { - return ((HEAP32[(((table)+((i<<3)+4))>>2)])|0); - } - i = i+1|0; - } - return 0; - } - Module["_testSetjmp"] = _testSetjmp;function _longjmp(env, value) { - _setThrew(env, value || 1); - throw 'longjmp'; - } - Module["_longjmp"] = _longjmp;function _emscripten_longjmp(env, value) { - _longjmp(env, value); - } - Module["_emscripten_longjmp"] = _emscripten_longjmp; - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - } - Module["_emscripten_memcpy_big"] = _emscripten_memcpy_big; - - - function _emscripten_proxy_to_main_thread_js(index, sync) { - // Additional arguments are passed after those two, which are the actual - // function arguments. - // The serialization buffer contains the number of call params, and then - // all the args here. - // We also pass 'sync' to C separately, since C needs to look at it. - var numCallArgs = arguments.length - 2; - if (numCallArgs > 20-1) throw 'emscripten_proxy_to_main_thread_js: Too many arguments ' + numCallArgs + ' to proxied function idx=' + index + ', maximum supported is ' + (20-1) + '!'; - // Allocate a buffer, which will be copied by the C code. - var stack = stackSave(); - // First passed parameter specifies the number of arguments to the function. - var args = stackAlloc(numCallArgs * 8); - var b = args >> 3; - for (var i = 0; i < numCallArgs; i++) { - HEAPF64[b + i] = arguments[2 + i]; - } - var ret = _emscripten_run_in_main_runtime_thread_js(index, numCallArgs, args, sync); - stackRestore(stack); - return ret; - } - Module["_emscripten_proxy_to_main_thread_js"] = _emscripten_proxy_to_main_thread_js; - - var _emscripten_receive_on_main_thread_js_callArgs=[]; - Module["_emscripten_receive_on_main_thread_js_callArgs"] = _emscripten_receive_on_main_thread_js_callArgs;function _emscripten_receive_on_main_thread_js(index, numCallArgs, args) { - _emscripten_receive_on_main_thread_js_callArgs.length = numCallArgs; - var b = args >> 3; - for (var i = 0; i < numCallArgs; i++) { - _emscripten_receive_on_main_thread_js_callArgs[i] = HEAPF64[b + i]; - } - // Proxied JS library funcs are encoded as positive values, and - // EM_ASMs as negative values (see include_asm_consts) - var isEmAsmConst = index < 0; - var func = !isEmAsmConst ? proxiedFunctionTable[index] : ASM_CONSTS[-index - 1]; - if (isEmAsmConst) { - // EM_ASM arguments are stored in their own buffer in memory, that we need - // to unpack in order to call. The proxied arguments are the code index, - // signature pointer, and vararg buffer pointer, in that order. - var sigPtr = _emscripten_receive_on_main_thread_js_callArgs[1]; - var varargPtr = _emscripten_receive_on_main_thread_js_callArgs[2]; - var constArgs = readAsmConstArgs(sigPtr, varargPtr); - return func.apply(null, constArgs); - } - assert(func.length == numCallArgs, 'Call args mismatch in emscripten_receive_on_main_thread_js'); - return func.apply(null, _emscripten_receive_on_main_thread_js_callArgs); - } - Module["_emscripten_receive_on_main_thread_js"] = _emscripten_receive_on_main_thread_js; - - - function abortOnCannotGrowMemory(requestedSize) { - abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); - } - Module["abortOnCannotGrowMemory"] = abortOnCannotGrowMemory;function _emscripten_resize_heap(requestedSize) { - abortOnCannotGrowMemory(requestedSize); - } - Module["_emscripten_resize_heap"] = _emscripten_resize_heap; - - - var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function() { - for(var i = JSEvents.eventHandlers.length-1; i >= 0; --i) { - JSEvents._removeHandler(i); - } - JSEvents.eventHandlers = []; - JSEvents.deferredCalls = []; - },registerRemoveEventListeners:function() { - if (!JSEvents.removeEventListenersRegistered) { - __ATEXIT__.push(JSEvents.removeAllEventListeners); - JSEvents.removeEventListenersRegistered = true; - } - },deferredCalls:[],deferCall:function(targetFunction, precedence, argsList) { - function arraysHaveEqualContent(arrA, arrB) { - if (arrA.length != arrB.length) return false; - - for(var i in arrA) { - if (arrA[i] != arrB[i]) return false; - } - return true; - } - // Test if the given call was already queued, and if so, don't add it again. - for(var i in JSEvents.deferredCalls) { - var call = JSEvents.deferredCalls[i]; - if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { - return; - } - } - JSEvents.deferredCalls.push({ - targetFunction: targetFunction, - precedence: precedence, - argsList: argsList - }); - - JSEvents.deferredCalls.sort(function(x,y) { return x.precedence < y.precedence; }); - },removeDeferredCalls:function(targetFunction) { - for(var i = 0; i < JSEvents.deferredCalls.length; ++i) { - if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { - JSEvents.deferredCalls.splice(i, 1); - --i; - } - } - },canPerformEventHandlerRequests:function() { - return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; - },runDeferredCalls:function() { - if (!JSEvents.canPerformEventHandlerRequests()) { - return; - } - for(var i = 0; i < JSEvents.deferredCalls.length; ++i) { - var call = JSEvents.deferredCalls[i]; - JSEvents.deferredCalls.splice(i, 1); - --i; - call.targetFunction.apply(this, call.argsList); - } - },inEventHandler:0,currentEventHandler:null,eventHandlers:[],isInternetExplorer:function() { return navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0; },removeAllHandlersOnTarget:function(target, eventTypeString) { - for(var i = 0; i < JSEvents.eventHandlers.length; ++i) { - if (JSEvents.eventHandlers[i].target == target && - (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { - JSEvents._removeHandler(i--); - } - } - },_removeHandler:function(i) { - var h = JSEvents.eventHandlers[i]; - h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); - JSEvents.eventHandlers.splice(i, 1); - },registerOrRemoveHandler:function(eventHandler) { - var jsEventHandler = function jsEventHandler(event) { - // Increment nesting count for the event handler. - ++JSEvents.inEventHandler; - JSEvents.currentEventHandler = eventHandler; - // Process any old deferred calls the user has placed. - JSEvents.runDeferredCalls(); - // Process the actual event, calls back to user C code handler. - eventHandler.handlerFunc(event); - // Process any new deferred calls that were placed right now from this event handler. - JSEvents.runDeferredCalls(); - // Out of event handler - restore nesting count. - --JSEvents.inEventHandler; - }; - - if (eventHandler.callbackfunc) { - eventHandler.eventListenerFunc = jsEventHandler; - eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); - JSEvents.eventHandlers.push(eventHandler); - JSEvents.registerRemoveEventListeners(); - } else { - for(var i = 0; i < JSEvents.eventHandlers.length; ++i) { - if (JSEvents.eventHandlers[i].target == eventHandler.target - && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { - JSEvents._removeHandler(i--); - } - } - } - },queueEventHandlerOnThread_iiii:function(targetThread, eventHandlerFunc, eventTypeId, eventData, userData) { - var stackTop = stackSave(); - var varargs = stackAlloc(12); - HEAP32[((varargs)>>2)]=eventTypeId; - HEAP32[(((varargs)+(4))>>2)]=eventData; - HEAP32[(((varargs)+(8))>>2)]=userData; - _emscripten_async_queue_on_thread_(targetThread, 637534208, eventHandlerFunc, eventData, varargs); - stackRestore(stackTop); - },getTargetThreadForEventCallback:function(targetThread) { - switch(targetThread) { - case 1: return 0; // The event callback for the current event should be called on the main browser thread. (0 == don't proxy) - case 2: return PThread.currentProxiedOperationCallerThread; // The event callback for the current event should be backproxied to the the thread that is registering the event. - default: return targetThread; // The event callback for the current event should be proxied to the given specific thread. - } - },getBoundingClientRectOrZeros:function(target) { - return target.getBoundingClientRect ? target.getBoundingClientRect() : { left: 0, top: 0 }; - },getNodeNameForTarget:function(target) { - if (!target) return ''; - if (target == window) return '#window'; - if (target == screen) return '#screen'; - return (target && target.nodeName) ? target.nodeName : ''; - },tick:function() { - if (window['performance'] && window['performance']['now']) return window['performance']['now'](); - else return Date.now(); - },fullscreenEnabled:function() { - return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled; - }}; - Module["JSEvents"] = JSEvents; - - - - - function stringToNewUTF8(jsString) { - var length = lengthBytesUTF8(jsString)+1; - var cString = _malloc(length); - stringToUTF8(jsString, cString, length); - return cString; - } - Module["stringToNewUTF8"] = stringToNewUTF8;function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height) { - var stackTop = stackSave(); - var varargs = stackAlloc(12); - var targetCanvasPtr = 0; - if (targetCanvas) { - targetCanvasPtr = stringToNewUTF8(targetCanvas); - } - HEAP32[((varargs)>>2)]=targetCanvasPtr; - HEAP32[(((varargs)+(4))>>2)]=width; - HEAP32[(((varargs)+(8))>>2)]=height; - // Note: If we are also a pthread, the call below could theoretically be done synchronously. However if the target pthread is waiting for a mutex from us, then - // these two threads will deadlock. At the moment, we'd like to consider that this kind of deadlock would be an Emscripten runtime bug, although if - // emscripten_set_canvas_element_size() was documented to require running an event in the queue of thread that owns the OffscreenCanvas, then that might be ok. - // (safer this way however) - _emscripten_async_queue_on_thread_(targetThread, 657457152, 0, targetCanvasPtr /* satellite data */, varargs); - stackRestore(stackTop); - } - Module["_emscripten_set_offscreencanvas_size_on_target_thread_js"] = _emscripten_set_offscreencanvas_size_on_target_thread_js;function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, targetCanvas, width, height) { - targetCanvas = targetCanvas ? UTF8ToString(targetCanvas) : ''; - _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height); - } - Module["_emscripten_set_offscreencanvas_size_on_target_thread"] = _emscripten_set_offscreencanvas_size_on_target_thread; - - - - var __specialEventTargets=[0, typeof document !== 'undefined' ? document : 0, typeof window !== 'undefined' ? window : 0]; - Module["__specialEventTargets"] = __specialEventTargets;function __findEventTarget(target) { - warnOnce('Rules for selecting event targets in HTML5 API are changing: instead of using document.getElementById() that only can refer to elements by their DOM ID, new event target selection mechanism uses the more flexible function document.querySelector() that can look up element names, classes, and complex CSS selectors. Build with -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 to change to the new lookup rules. See https://github.com/emscripten-core/emscripten/pull/7977 for more details.'); - try { - // The sensible "default" target varies between events, but use window as the default - // since DOM events mostly can default to that. Specific callback registrations - // override their own defaults. - if (!target) return window; - if (typeof target === "number") target = __specialEventTargets[target] || UTF8ToString(target); - if (target === '#window') return window; - else if (target === '#document') return document; - else if (target === '#screen') return screen; - else if (target === '#canvas') return Module['canvas']; - return (typeof target === 'string') ? document.getElementById(target) : target; - } catch(e) { - // In Web Workers, some objects above, such as '#document' do not exist. Gracefully - // return null for them. - return null; - } - } - Module["__findEventTarget"] = __findEventTarget;function __findCanvasEventTarget(target) { - if (typeof target === 'number') target = UTF8ToString(target); - if (!target || target === '#canvas') { - if (typeof GL !== 'undefined' && GL.offscreenCanvases['canvas']) return GL.offscreenCanvases['canvas']; // TODO: Remove this line, target '#canvas' should refer only to Module['canvas'], not to GL.offscreenCanvases['canvas'] - but need stricter tests to be able to remove this line. - return Module['canvas']; - } - if (typeof GL !== 'undefined' && GL.offscreenCanvases[target]) return GL.offscreenCanvases[target]; - return __findEventTarget(target); - } - Module["__findCanvasEventTarget"] = __findCanvasEventTarget;function _emscripten_set_canvas_element_size_calling_thread(target, width, height) { - var canvas = __findCanvasEventTarget(target); - if (!canvas) return -4; - - if (canvas.canvasSharedPtr) { - // N.B. We hold the canvasSharedPtr info structure as the authoritative source for specifying the size of a canvas - // since the actual canvas size changes are asynchronous if the canvas is owned by an OffscreenCanvas on another thread. - // Therefore when setting the size, eagerly set the size of the canvas on the calling thread here, though this thread - // might not be the one that actually ends up specifying the size, but the actual size change may be dispatched - // as an asynchronous event below. - HEAP32[((canvas.canvasSharedPtr)>>2)]=width; - HEAP32[(((canvas.canvasSharedPtr)+(4))>>2)]=height; - } - - if (canvas.offscreenCanvas || !canvas.controlTransferredOffscreen) { - if (canvas.offscreenCanvas) canvas = canvas.offscreenCanvas; - var autoResizeViewport = false; - if (canvas.GLctxObject && canvas.GLctxObject.GLctx) { - var prevViewport = canvas.GLctxObject.GLctx.getParameter(canvas.GLctxObject.GLctx.VIEWPORT); - // TODO: Perhaps autoResizeViewport should only be true if FBO 0 is currently active? - autoResizeViewport = (prevViewport[0] === 0 && prevViewport[1] === 0 && prevViewport[2] === canvas.width && prevViewport[3] === canvas.height); - } - canvas.width = width; - canvas.height = height; - if (autoResizeViewport) { - // TODO: Add -s CANVAS_RESIZE_SETS_GL_VIEWPORT=0/1 option (default=1). This is commonly done and several graphics engines depend on this, - // but this can be quite disruptive. - canvas.GLctxObject.GLctx.viewport(0, 0, width, height); - } - } else if (canvas.canvasSharedPtr) { - var targetThread = HEAP32[(((canvas.canvasSharedPtr)+(8))>>2)]; - _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, target, width, height); - return 1; // This will have to be done asynchronously - } else { - return -4; - } - return 0; - } - Module["_emscripten_set_canvas_element_size_calling_thread"] = _emscripten_set_canvas_element_size_calling_thread; - - function _emscripten_set_canvas_element_size_main_thread(target, width, height) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(18, 1, target, width, height); - return _emscripten_set_canvas_element_size_calling_thread(target, width, height); } - - Module["_emscripten_set_canvas_element_size_main_thread"] = _emscripten_set_canvas_element_size_main_thread;function _emscripten_set_canvas_element_size(target, width, height) { - var canvas = __findCanvasEventTarget(target); - if (canvas) { - return _emscripten_set_canvas_element_size_calling_thread(target, width, height); - } else { - return _emscripten_set_canvas_element_size_main_thread(target, width, height); - } - } - Module["_emscripten_set_canvas_element_size"] = _emscripten_set_canvas_element_size; - - - function _emscripten_set_current_thread_status_js(newStatus) { - } - Module["_emscripten_set_current_thread_status_js"] = _emscripten_set_current_thread_status_js;function _emscripten_set_current_thread_status(newStatus) { - newStatus = newStatus|0; - } - Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status; - - - function _emscripten_set_thread_name_js(threadId, name) { - } - Module["_emscripten_set_thread_name_js"] = _emscripten_set_thread_name_js;function _emscripten_set_thread_name(threadId, name) { - threadId = threadId|0; - name = name|0; - } - Module["_emscripten_set_thread_name"] = _emscripten_set_thread_name; - - function _emscripten_syscall(which, varargs) { - switch (which) { - case 10: return ___syscall10(which, varargs); - case 12: return ___syscall12(which, varargs); - case 183: return ___syscall183(which, varargs); - case 192: return ___syscall192(which, varargs); - case 195: return ___syscall195(which, varargs); - case 196: return ___syscall196(which, varargs); - case 220: return ___syscall220(which, varargs); - case 221: return ___syscall221(which, varargs); - case 3: return ___syscall3(which, varargs); - case 39: return ___syscall39(which, varargs); - case 4: return ___syscall4(which, varargs); - case 40: return ___syscall40(which, varargs); - case 5: return ___syscall5(which, varargs); - case 54: return ___syscall54(which, varargs); - case 85: return ___syscall85(which, varargs); - case 91: return ___syscall91(which, varargs); - default: throw "surprising proxied syscall: " + which; - } - } - Module["_emscripten_syscall"] = _emscripten_syscall; - - - - var __emscripten_webgl_power_preferences=['default', 'low-power', 'high-performance']; - Module["__emscripten_webgl_power_preferences"] = __emscripten_webgl_power_preferences; - - var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function() { - GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE); - for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) { - GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i+1); - } - },recordError:function recordError(errorCode) { - if (!GL.lastError) { - GL.lastError = errorCode; - } - },getNewId:function(table) { - var ret = GL.counter++; - for (var i = table.length; i < ret; i++) { - table[i] = null; - } - return ret; - },MINI_TEMP_BUFFER_SIZE:256,miniTempBuffer:null,miniTempBufferViews:[0],getSource:function(shader, count, string, length) { - var source = ''; - for (var i = 0; i < count; ++i) { - var len = length ? HEAP32[(((length)+(i*4))>>2)] : -1; - source += UTF8ToString(HEAP32[(((string)+(i*4))>>2)], len < 0 ? undefined : len); - } - return source; - },createContext:function(canvas, webGLContextAttributes) { - - - - - var ctx = - (canvas.getContext("webgl", webGLContextAttributes) || canvas.getContext("experimental-webgl", webGLContextAttributes)); - - - if (!ctx) return 0; - - var handle = GL.registerContext(ctx, webGLContextAttributes); - - - - return handle; - },registerContext:function(ctx, webGLContextAttributes) { - var handle = _malloc(8); // Make space on the heap to store GL context attributes that need to be accessible as shared between threads. - HEAP32[(((handle)+(4))>>2)]=_pthread_self(); // the thread pointer of the thread that owns the control of the context - var context = { - handle: handle, - attributes: webGLContextAttributes, - version: webGLContextAttributes.majorVersion, - GLctx: ctx - }; - - - - // Store the created context object so that we can access the context given a canvas without having to pass the parameters again. - if (ctx.canvas) ctx.canvas.GLctxObject = context; - GL.contexts[handle] = context; - if (typeof webGLContextAttributes.enableExtensionsByDefault === 'undefined' || webGLContextAttributes.enableExtensionsByDefault) { - GL.initExtensions(context); - } - - - - - return handle; - },makeContextCurrent:function(contextHandle) { - - GL.currentContext = GL.contexts[contextHandle]; // Active Emscripten GL layer context object. - Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; // Active WebGL context object. - return !(contextHandle && !GLctx); - },getContext:function(contextHandle) { - return GL.contexts[contextHandle]; - },deleteContext:function(contextHandle) { - if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null; - if (typeof JSEvents === 'object') JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); // Release all JS event handlers on the DOM element that the GL context is associated with since the context is now deleted. - if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; // Make sure the canvas object no longer refers to the context object so there are no GC surprises. - _free(GL.contexts[contextHandle]); - GL.contexts[contextHandle] = null; - },acquireInstancedArraysExtension:function(ctx) { - // Extension available in WebGL 1 from Firefox 26 and Google Chrome 30 onwards. Core feature in WebGL 2. - var ext = ctx.getExtension('ANGLE_instanced_arrays'); - if (ext) { - ctx['vertexAttribDivisor'] = function(index, divisor) { ext['vertexAttribDivisorANGLE'](index, divisor); }; - ctx['drawArraysInstanced'] = function(mode, first, count, primcount) { ext['drawArraysInstancedANGLE'](mode, first, count, primcount); }; - ctx['drawElementsInstanced'] = function(mode, count, type, indices, primcount) { ext['drawElementsInstancedANGLE'](mode, count, type, indices, primcount); }; - } - },acquireVertexArrayObjectExtension:function(ctx) { - // Extension available in WebGL 1 from Firefox 25 and WebKit 536.28/desktop Safari 6.0.3 onwards. Core feature in WebGL 2. - var ext = ctx.getExtension('OES_vertex_array_object'); - if (ext) { - ctx['createVertexArray'] = function() { return ext['createVertexArrayOES'](); }; - ctx['deleteVertexArray'] = function(vao) { ext['deleteVertexArrayOES'](vao); }; - ctx['bindVertexArray'] = function(vao) { ext['bindVertexArrayOES'](vao); }; - ctx['isVertexArray'] = function(vao) { return ext['isVertexArrayOES'](vao); }; - } - },acquireDrawBuffersExtension:function(ctx) { - // Extension available in WebGL 1 from Firefox 28 onwards. Core feature in WebGL 2. - var ext = ctx.getExtension('WEBGL_draw_buffers'); - if (ext) { - ctx['drawBuffers'] = function(n, bufs) { ext['drawBuffersWEBGL'](n, bufs); }; - } - },initExtensions:function(context) { - // If this function is called without a specific context object, init the extensions of the currently active context. - if (!context) context = GL.currentContext; - - if (context.initExtensionsDone) return; - context.initExtensionsDone = true; - - var GLctx = context.GLctx; - - // Detect the presence of a few extensions manually, this GL interop layer itself will need to know if they exist. - - if (context.version < 2) { - GL.acquireInstancedArraysExtension(GLctx); - GL.acquireVertexArrayObjectExtension(GLctx); - GL.acquireDrawBuffersExtension(GLctx); - } - - GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query"); - - // These are the 'safe' feature-enabling extensions that don't add any performance impact related to e.g. debugging, and - // should be enabled by default so that client GLES2/GL code will not need to go through extra hoops to get its stuff working. - // As new extensions are ratified at http://www.khronos.org/registry/webgl/extensions/ , feel free to add your new extensions - // here, as long as they don't produce a performance impact for users that might not be using those extensions. - // E.g. debugging-related extensions should probably be off by default. - var automaticallyEnabledExtensions = [ // Khronos ratified WebGL extensions ordered by number (no debug extensions): - "OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", - "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", - "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", - "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", - "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", - // Community approved WebGL extensions ordered by number: - "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", - "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", - "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", - "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", - // Old style prefixed forms of extensions (but still currently used on e.g. iPhone Xs as - // tested on iOS 12.4.1): - "WEBKIT_WEBGL_compressed_texture_pvrtc"]; - - function shouldEnableAutomatically(extension) { - var ret = false; - automaticallyEnabledExtensions.forEach(function(include) { - if (extension.indexOf(include) != -1) { - ret = true; - } - }); - return ret; - } - - var exts = GLctx.getSupportedExtensions() || []; // .getSupportedExtensions() can return null if context is lost, so coerce to empty array. - exts.forEach(function(ext) { - if (automaticallyEnabledExtensions.indexOf(ext) != -1) { - GLctx.getExtension(ext); // Calling .getExtension enables that extension permanently, no need to store the return value to be enabled. - } - }); - },populateUniformTable:function(program) { - var p = GL.programs[program]; - var ptable = GL.programInfos[program] = { - uniforms: {}, - maxUniformLength: 0, // This is eagerly computed below, since we already enumerate all uniforms anyway. - maxAttributeLength: -1, // This is lazily computed and cached, computed when/if first asked, "-1" meaning not computed yet. - maxUniformBlockNameLength: -1 // Lazily computed as well - }; - - var utable = ptable.uniforms; - // A program's uniform table maps the string name of an uniform to an integer location of that uniform. - // The global GL.uniforms map maps integer locations to WebGLUniformLocations. - var numUniforms = GLctx.getProgramParameter(p, 0x8B86/*GL_ACTIVE_UNIFORMS*/); - for (var i = 0; i < numUniforms; ++i) { - var u = GLctx.getActiveUniform(p, i); - - var name = u.name; - ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length+1); - - // If we are dealing with an array, e.g. vec4 foo[3], strip off the array index part to canonicalize that "foo", "foo[]", - // and "foo[0]" will mean the same. Loop below will populate foo[1] and foo[2]. - if (name.slice(-1) == ']') { - name = name.slice(0, name.lastIndexOf('[')); - } - - // Optimize memory usage slightly: If we have an array of uniforms, e.g. 'vec3 colors[3];', then - // only store the string 'colors' in utable, and 'colors[0]', 'colors[1]' and 'colors[2]' will be parsed as 'colors'+i. - // Note that for the GL.uniforms table, we still need to fetch the all WebGLUniformLocations for all the indices. - var loc = GLctx.getUniformLocation(p, name); - if (loc) { - var id = GL.getNewId(GL.uniforms); - utable[name] = [u.size, id]; - GL.uniforms[id] = loc; - - for (var j = 1; j < u.size; ++j) { - var n = name + '['+j+']'; - loc = GLctx.getUniformLocation(p, n); - id = GL.getNewId(GL.uniforms); - - GL.uniforms[id] = loc; - } - } - } - }}; - Module["GL"] = GL;function _emscripten_webgl_do_create_context(target, attributes) { - assert(attributes); - var contextAttributes = {}; - var a = attributes >> 2; - contextAttributes['alpha'] = !!HEAP32[a + (0>>2)]; - contextAttributes['depth'] = !!HEAP32[a + (4>>2)]; - contextAttributes['stencil'] = !!HEAP32[a + (8>>2)]; - contextAttributes['antialias'] = !!HEAP32[a + (12>>2)]; - contextAttributes['premultipliedAlpha'] = !!HEAP32[a + (16>>2)]; - contextAttributes['preserveDrawingBuffer'] = !!HEAP32[a + (20>>2)]; - var powerPreference = HEAP32[a + (24>>2)]; - contextAttributes['powerPreference'] = __emscripten_webgl_power_preferences[powerPreference]; - contextAttributes['failIfMajorPerformanceCaveat'] = !!HEAP32[a + (28>>2)]; - contextAttributes.majorVersion = HEAP32[a + (32>>2)]; - contextAttributes.minorVersion = HEAP32[a + (36>>2)]; - contextAttributes.enableExtensionsByDefault = HEAP32[a + (40>>2)]; - contextAttributes.explicitSwapControl = HEAP32[a + (44>>2)]; - contextAttributes.proxyContextToMainThread = HEAP32[a + (48>>2)]; - contextAttributes.renderViaOffscreenBackBuffer = HEAP32[a + (52>>2)]; - - var canvas = __findCanvasEventTarget(target); - - - - if (!canvas) { - return 0; - } - - if (contextAttributes.explicitSwapControl) { - return 0; - } - - - var contextHandle = GL.createContext(canvas, contextAttributes); - return contextHandle; - } - Module["_emscripten_webgl_do_create_context"] = _emscripten_webgl_do_create_context;function _emscripten_webgl_create_context(a0,a1 - ) { - return _emscripten_webgl_do_create_context(a0,a1); - } - Module["_emscripten_webgl_create_context"] = _emscripten_webgl_create_context; - - - - var ENV={}; - Module["ENV"] = ENV;function _emscripten_get_environ() { - if (!_emscripten_get_environ.strings) { - // Default values. - var env = { - 'USER': 'web_user', - 'LOGNAME': 'web_user', - 'PATH': '/', - 'PWD': '/', - 'HOME': '/home/web_user', - // Browser language detection #8751 - 'LANG': ((typeof navigator === 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8', - '_': thisProgram - }; - // Apply the user-provided values, if any. - for (var x in ENV) { - env[x] = ENV[x]; - } - var strings = []; - for (var x in env) { - strings.push(x + '=' + env[x]); - } - _emscripten_get_environ.strings = strings; - } - return _emscripten_get_environ.strings; - } - Module["_emscripten_get_environ"] = _emscripten_get_environ;function _environ_get(__environ, environ_buf) { - var strings = _emscripten_get_environ(); - var bufSize = 0; - strings.forEach(function(string, i) { - var ptr = environ_buf + bufSize; - HEAP32[(((__environ)+(i * 4))>>2)]=ptr; - writeAsciiToMemory(string, ptr); - bufSize += string.length + 1; - }); - return 0; - } - Module["_environ_get"] = _environ_get; - - function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = _emscripten_get_environ(); - HEAP32[((penviron_count)>>2)]=strings.length; - var bufSize = 0; - strings.forEach(function(string) { - bufSize += string.length + 1; - }); - HEAP32[((penviron_buf_size)>>2)]=bufSize; - return 0; - } - Module["_environ_sizes_get"] = _environ_sizes_get; - - function _exit(status) { - // void _exit(int status); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html - exit(status); - } - Module["_exit"] = _exit; - - function _fd_close(fd) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(19, 1, fd); - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - FS.close(stream); - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } - } - - Module["_fd_close"] = _fd_close; - - function _fd_read(fd, iov, iovcnt, pnum) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(20, 1, fd, iov, iovcnt, pnum); - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = SYSCALLS.doReadv(stream, iov, iovcnt); - HEAP32[((pnum)>>2)]=num - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } - } - - Module["_fd_read"] = _fd_read; - - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(21, 1, fd, offset_low, offset_high, whence, newOffset); - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var HIGH_OFFSET = 0x100000000; // 2^32 - // use an unsigned operator on low and shift high by 32-bits - var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); - - var DOUBLE_LIMIT = 0x20000000000000; // 2^53 - // we also check for equality since DOUBLE_LIMIT + 1 == DOUBLE_LIMIT - if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { - return -61; - } - - FS.llseek(stream, offset, whence); - (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)]=tempI64[0],HEAP32[(((newOffset)+(4))>>2)]=tempI64[1]); - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } - } - - Module["_fd_seek"] = _fd_seek; - - function _fd_write(fd, iov, iovcnt, pnum) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(22, 1, fd, iov, iovcnt, pnum); - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = SYSCALLS.doWritev(stream, iov, iovcnt); - HEAP32[((pnum)>>2)]=num - return 0; - } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } - } - - Module["_fd_write"] = _fd_write; - - function _getTempRet0() { - return (getTempRet0() | 0); - } - Module["_getTempRet0"] = _getTempRet0; - - function _gettimeofday(ptr) { - var now = Date.now(); - HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds - HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds - return 0; - } - Module["_gettimeofday"] = _gettimeofday; - - - var ___tm_current=12594976; - Module["___tm_current"] = ___tm_current; - - - var ___tm_timezone=(stringToUTF8("GMT", 12595024, 4), 12595024); - Module["___tm_timezone"] = ___tm_timezone;function _gmtime_r(time, tmPtr) { - var date = new Date(HEAP32[((time)>>2)]*1000); - HEAP32[((tmPtr)>>2)]=date.getUTCSeconds(); - HEAP32[(((tmPtr)+(4))>>2)]=date.getUTCMinutes(); - HEAP32[(((tmPtr)+(8))>>2)]=date.getUTCHours(); - HEAP32[(((tmPtr)+(12))>>2)]=date.getUTCDate(); - HEAP32[(((tmPtr)+(16))>>2)]=date.getUTCMonth(); - HEAP32[(((tmPtr)+(20))>>2)]=date.getUTCFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)]=date.getUTCDay(); - HEAP32[(((tmPtr)+(36))>>2)]=0; - HEAP32[(((tmPtr)+(32))>>2)]=0; - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = ((date.getTime() - start) / (1000 * 60 * 60 * 24))|0; - HEAP32[(((tmPtr)+(28))>>2)]=yday; - HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; - - return tmPtr; - } - Module["_gmtime_r"] = _gmtime_r;function _gmtime(time) { - return _gmtime_r(time, ___tm_current); - } - Module["_gmtime"] = _gmtime; - - function _memcpy(dest, src, num) { - dest = dest|0; src = src|0; num = num|0; - var ret = 0; - var aligned_dest_end = 0; - var block_aligned_dest_end = 0; - var dest_end = 0; - // Test against a benchmarked cutoff limit for when HEAPU8.set() becomes faster to use. - if ((num|0) >= 8192) { - _emscripten_memcpy_big(dest|0, src|0, num|0)|0; - return dest|0; - } - - ret = dest|0; - dest_end = (dest + num)|0; - if ((dest&3) == (src&3)) { - // The initial unaligned < 4-byte front. - while (dest & 3) { - if ((num|0) == 0) return ret|0; - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; - num = (num-1)|0; - } - aligned_dest_end = (dest_end & -4)|0; - block_aligned_dest_end = (aligned_dest_end - 64)|0; - while ((dest|0) <= (block_aligned_dest_end|0) ) { - HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); - HEAP32[(((dest)+(4))>>2)]=((HEAP32[(((src)+(4))>>2)])|0); - HEAP32[(((dest)+(8))>>2)]=((HEAP32[(((src)+(8))>>2)])|0); - HEAP32[(((dest)+(12))>>2)]=((HEAP32[(((src)+(12))>>2)])|0); - HEAP32[(((dest)+(16))>>2)]=((HEAP32[(((src)+(16))>>2)])|0); - HEAP32[(((dest)+(20))>>2)]=((HEAP32[(((src)+(20))>>2)])|0); - HEAP32[(((dest)+(24))>>2)]=((HEAP32[(((src)+(24))>>2)])|0); - HEAP32[(((dest)+(28))>>2)]=((HEAP32[(((src)+(28))>>2)])|0); - HEAP32[(((dest)+(32))>>2)]=((HEAP32[(((src)+(32))>>2)])|0); - HEAP32[(((dest)+(36))>>2)]=((HEAP32[(((src)+(36))>>2)])|0); - HEAP32[(((dest)+(40))>>2)]=((HEAP32[(((src)+(40))>>2)])|0); - HEAP32[(((dest)+(44))>>2)]=((HEAP32[(((src)+(44))>>2)])|0); - HEAP32[(((dest)+(48))>>2)]=((HEAP32[(((src)+(48))>>2)])|0); - HEAP32[(((dest)+(52))>>2)]=((HEAP32[(((src)+(52))>>2)])|0); - HEAP32[(((dest)+(56))>>2)]=((HEAP32[(((src)+(56))>>2)])|0); - HEAP32[(((dest)+(60))>>2)]=((HEAP32[(((src)+(60))>>2)])|0); - dest = (dest+64)|0; - src = (src+64)|0; - } - while ((dest|0) < (aligned_dest_end|0) ) { - HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); - dest = (dest+4)|0; - src = (src+4)|0; - } - } else { - // In the unaligned copy case, unroll a bit as well. - aligned_dest_end = (dest_end - 4)|0; - while ((dest|0) < (aligned_dest_end|0) ) { - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - HEAP8[(((dest)+(1))>>0)]=((HEAP8[(((src)+(1))>>0)])|0); - HEAP8[(((dest)+(2))>>0)]=((HEAP8[(((src)+(2))>>0)])|0); - HEAP8[(((dest)+(3))>>0)]=((HEAP8[(((src)+(3))>>0)])|0); - dest = (dest+4)|0; - src = (src+4)|0; - } - } - // The remaining unaligned < 4 byte tail. - while ((dest|0) < (dest_end|0)) { - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; - } - return ret|0; - } - Module["_memcpy"] = _memcpy; - - - - function _tzset() { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(23, 1); - - // TODO: Use (malleable) environment variables instead of system settings. - if (_tzset.called) return; - _tzset.called = true; - - // timezone is specified as seconds west of UTC ("The external variable - // `timezone` shall be set to the difference, in seconds, between - // Coordinated Universal Time (UTC) and local standard time."), the same - // as returned by getTimezoneOffset(). - // See http://pubs.opengroup.org/onlinepubs/009695399/functions/tzset.html - HEAP32[((__get_timezone())>>2)]=(new Date()).getTimezoneOffset() * 60; - - var currentYear = new Date().getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - HEAP32[((__get_daylight())>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset()); - - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - }; - var winterName = extractZone(winter); - var summerName = extractZone(summer); - var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL); - var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL); - if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) { - // Northern hemisphere - HEAP32[((__get_tzname())>>2)]=winterNamePtr; - HEAP32[(((__get_tzname())+(4))>>2)]=summerNamePtr; - } else { - HEAP32[((__get_tzname())>>2)]=summerNamePtr; - HEAP32[(((__get_tzname())+(4))>>2)]=winterNamePtr; - } - } - - Module["_tzset"] = _tzset;function _mktime(tmPtr) { - _tzset(); - var date = new Date(HEAP32[(((tmPtr)+(20))>>2)] + 1900, - HEAP32[(((tmPtr)+(16))>>2)], - HEAP32[(((tmPtr)+(12))>>2)], - HEAP32[(((tmPtr)+(8))>>2)], - HEAP32[(((tmPtr)+(4))>>2)], - HEAP32[((tmPtr)>>2)], - 0); - - // There's an ambiguous hour when the time goes back; the tm_isdst field is - // used to disambiguate it. Date() basically guesses, so we fix it up if it - // guessed wrong, or fill in tm_isdst with the guess if it's -1. - var dst = HEAP32[(((tmPtr)+(32))>>2)]; - var guessedOffset = date.getTimezoneOffset(); - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dstOffset = Math.min(winterOffset, summerOffset); // DST is in December in South - if (dst < 0) { - // Attention: some regions don't have DST at all. - HEAP32[(((tmPtr)+(32))>>2)]=Number(summerOffset != winterOffset && dstOffset == guessedOffset); - } else if ((dst > 0) != (dstOffset == guessedOffset)) { - var nonDstOffset = Math.max(winterOffset, summerOffset); - var trueOffset = dst > 0 ? dstOffset : nonDstOffset; - // Don't try setMinutes(date.getMinutes() + ...) -- it's messed up. - date.setTime(date.getTime() + (trueOffset - guessedOffset)*60000); - } - - HEAP32[(((tmPtr)+(24))>>2)]=date.getDay(); - var yday = ((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24))|0; - HEAP32[(((tmPtr)+(28))>>2)]=yday; - - return (date.getTime() / 1000)|0; - } - Module["_mktime"] = _mktime; - - function _pthread_cleanup_pop(execute) { - var routine = PThread.exitHandlers.pop(); - if (execute) routine(); - } - Module["_pthread_cleanup_pop"] = _pthread_cleanup_pop; - - function _pthread_cleanup_push(routine, arg) { - if (PThread.exitHandlers === null) { - PThread.exitHandlers = []; - if (!ENVIRONMENT_IS_PTHREAD) { - __ATEXIT__.push(function() { PThread.runExitHandlers(); }); - } - } - PThread.exitHandlers.push(function() { dynCall_vi(routine, arg) }); - } - Module["_pthread_cleanup_push"] = _pthread_cleanup_push; - - - function __spawn_thread(threadParams) { - if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!'; - - var worker = PThread.getNewWorker(); - - if (worker.pthread !== undefined) throw 'Internal error!'; - if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!'; - PThread.runningWorkers.push(worker); - - // Allocate memory for thread-local storage and initialize it to zero. - var tlsMemory = _malloc(128 * 4); - for (var i = 0; i < 128; ++i) { - HEAP32[(((tlsMemory)+(i*4))>>2)]=0; - } - - var stackHigh = threadParams.stackBase + threadParams.stackSize; - - var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread. - worker: worker, - stackBase: threadParams.stackBase, - stackSize: threadParams.stackSize, - allocatedOwnStack: threadParams.allocatedOwnStack, - thread: threadParams.pthread_ptr, - threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared) - }; - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID. - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID. - - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, stackHigh); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, stackHigh); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy); - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio); - - var global_libc = _emscripten_get_global_libc(); - var global_locale = global_libc + 40; - Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale); - - - worker.pthread = pthread; - var msg = { - 'cmd': 'run', - 'start_routine': threadParams.startRoutine, - 'arg': threadParams.arg, - 'threadInfoStruct': threadParams.pthread_ptr, - 'selfThreadId': threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address. - 'parentThreadId': threadParams.parent_pthread_ptr, - 'stackBase': threadParams.stackBase, - 'stackSize': threadParams.stackSize, - }; - worker.runPthread = function() { - // Ask the worker to start executing its pthread entry point function. - msg.time = performance.now(); - worker.postMessage(msg, threadParams.transferList); - }; - if (worker.loaded) { - worker.runPthread(); - delete worker.runPthread; - } - } - Module["__spawn_thread"] = __spawn_thread; - - function _pthread_getschedparam(thread, policy, schedparam) { - if (!policy && !schedparam) return ERRNO_CODES.EINVAL; - - if (!thread) { - err('pthread_getschedparam called with a null thread pointer!'); - return ERRNO_CODES.ESRCH; - } - var self = HEAP32[(((thread)+(24))>>2)]; - if (self !== thread) { - err('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!'); - return ERRNO_CODES.ESRCH; - } - - var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2); - var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2); - - if (policy) HEAP32[((policy)>>2)]=schedPolicy; - if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio; - return 0; - } - Module["_pthread_getschedparam"] = _pthread_getschedparam; - - function _pthread_self() { - return __pthread_ptr|0; - } - Module["_pthread_self"] = _pthread_self;function _pthread_create(pthread_ptr, attr, start_routine, arg) { - if (typeof SharedArrayBuffer === 'undefined') { - err('Current environment does not support SharedArrayBuffer, pthreads are not available!'); - return 6; - } - if (!pthread_ptr) { - err('pthread_create called with a null thread pointer!'); - return 28; - } - - var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread - var error = 0; - - - // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then - // proxy asynchronously via postMessage. - if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { - return _emscripten_sync_run_in_main_thread_4(687865856, pthread_ptr, attr, start_routine, arg); - } - - // If on the main thread, and accessing Canvas/OffscreenCanvas failed, abort with the detected error. - if (error) return error; - - var stackSize = 0; - var stackBase = 0; - var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached. - var schedPolicy = 0; /*SCHED_OTHER*/ - var schedPrio = 0; - if (attr) { - stackSize = HEAP32[((attr)>>2)]; - // Musl has a convention that the stack size that is stored to the pthread attribute structure is always musl's #define DEFAULT_STACK_SIZE - // smaller than the actual created stack size. That is, stored stack size of 0 would mean a stack of DEFAULT_STACK_SIZE in size. All musl - // functions hide this impl detail, and offset the size transparently, so pthread_*() API user does not see this offset when operating with - // the pthread API. When reading the structure directly on JS side however, we need to offset the size manually here. - stackSize += 81920 /*DEFAULT_STACK_SIZE*/; - stackBase = HEAP32[(((attr)+(8))>>2)]; - detached = HEAP32[(((attr)+(12))>>2)] !== 0/*PTHREAD_CREATE_JOINABLE*/; - var inheritSched = HEAP32[(((attr)+(16))>>2)] === 0/*PTHREAD_INHERIT_SCHED*/; - if (inheritSched) { - var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)]; - var prevSchedPrio = HEAP32[(((attr)+(24))>>2)]; - // If we are inheriting the scheduling properties from the parent thread, we need to identify the parent thread properly - this function call may - // be getting proxied, in which case _pthread_self() will point to the thread performing the proxying, not the thread that initiated the call. - var parentThreadPtr = PThread.currentProxiedOperationCallerThread ? PThread.currentProxiedOperationCallerThread : _pthread_self(); - _pthread_getschedparam(parentThreadPtr, attr + 20, attr + 24); - schedPolicy = HEAP32[(((attr)+(20))>>2)]; - schedPrio = HEAP32[(((attr)+(24))>>2)]; - HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy; - HEAP32[(((attr)+(24))>>2)]=prevSchedPrio; - } else { - schedPolicy = HEAP32[(((attr)+(20))>>2)]; - schedPrio = HEAP32[(((attr)+(24))>>2)]; - } - } else { - // According to http://man7.org/linux/man-pages/man3/pthread_create.3.html, default stack size if not specified is 2 MB, so follow that convention. - stackSize = 2097152; - } - var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation. - if (allocatedOwnStack) { - stackBase = _memalign(16, stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area. - } else { - // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the - // stack grows upwards instead. - stackBase -= stackSize; - assert(stackBase > 0); - } - - // Allocate thread block (pthread_t structure). - var threadInfoStruct = _malloc(244); - for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure. - HEAP32[((pthread_ptr)>>2)]=threadInfoStruct; - - // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t - // structure is 'alive'. - HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct; - - // pthread struct robust_list head should point to itself. - var headPtr = threadInfoStruct + 168; - HEAP32[((headPtr)>>2)]=headPtr; - - - var threadParams = { - stackBase: stackBase, - stackSize: stackSize, - allocatedOwnStack: allocatedOwnStack, - schedPolicy: schedPolicy, - schedPrio: schedPrio, - detached: detached, - startRoutine: start_routine, - pthread_ptr: threadInfoStruct, - parent_pthread_ptr: _pthread_self(), - arg: arg, - transferList: transferList - }; - - if (ENVIRONMENT_IS_PTHREAD) { - // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a - // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread. - threadParams.cmd = 'spawnThread'; - postMessage(threadParams, transferList); - } else { - // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation - // directly ourselves. - __spawn_thread(threadParams); - } - - return 0; - } - Module["_pthread_create"] = _pthread_create; - - - - function _setTempRet0($i) { - setTempRet0(($i) | 0); - } - Module["_setTempRet0"] = _setTempRet0; - - - - function __isLeapYear(year) { - return year%4 === 0 && (year%100 !== 0 || year%400 === 0); - } - Module["__isLeapYear"] = __isLeapYear; - - function __arraySum(array, index) { - var sum = 0; - for (var i = 0; i <= index; sum += array[i++]); - return sum; - } - Module["__arraySum"] = __arraySum; - - - var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31]; - Module["__MONTH_DAYS_LEAP"] = __MONTH_DAYS_LEAP; - - var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31]; - Module["__MONTH_DAYS_REGULAR"] = __MONTH_DAYS_REGULAR;function __addDays(date, days) { - var newDate = new Date(date.getTime()); - while(days > 0) { - var leap = __isLeapYear(newDate.getFullYear()); - var currentMonth = newDate.getMonth(); - var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; - - if (days > daysInCurrentMonth-newDate.getDate()) { - // we spill over to next month - days -= (daysInCurrentMonth-newDate.getDate()+1); - newDate.setDate(1); - if (currentMonth < 11) { - newDate.setMonth(currentMonth+1) - } else { - newDate.setMonth(0); - newDate.setFullYear(newDate.getFullYear()+1); - } - } else { - // we stay in current month - newDate.setDate(newDate.getDate()+days); - return newDate; - } - } - - return newDate; - } - Module["__addDays"] = __addDays;function _strftime(s, maxsize, format, tm) { - // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html - - var tm_zone = HEAP32[(((tm)+(40))>>2)]; - - var date = { - tm_sec: HEAP32[((tm)>>2)], - tm_min: HEAP32[(((tm)+(4))>>2)], - tm_hour: HEAP32[(((tm)+(8))>>2)], - tm_mday: HEAP32[(((tm)+(12))>>2)], - tm_mon: HEAP32[(((tm)+(16))>>2)], - tm_year: HEAP32[(((tm)+(20))>>2)], - tm_wday: HEAP32[(((tm)+(24))>>2)], - tm_yday: HEAP32[(((tm)+(28))>>2)], - tm_isdst: HEAP32[(((tm)+(32))>>2)], - tm_gmtoff: HEAP32[(((tm)+(36))>>2)], - tm_zone: tm_zone ? UTF8ToString(tm_zone) : '' - }; - - var pattern = UTF8ToString(format); - - // expand format - var EXPANSION_RULES_1 = { - '%c': '%a %b %d %H:%M:%S %Y', // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug 3 14:02:01 2013 - '%D': '%m/%d/%y', // Equivalent to %m / %d / %y - '%F': '%Y-%m-%d', // Equivalent to %Y - %m - %d - '%h': '%b', // Equivalent to %b - '%r': '%I:%M:%S %p', // Replaced by the time in a.m. and p.m. notation - '%R': '%H:%M', // Replaced by the time in 24-hour notation - '%T': '%H:%M:%S', // Replaced by the time - '%x': '%m/%d/%y', // Replaced by the locale's appropriate date representation - '%X': '%H:%M:%S', // Replaced by the locale's appropriate time representation - // Modified Conversion Specifiers - '%Ec': '%c', // Replaced by the locale's alternative appropriate date and time representation. - '%EC': '%C', // Replaced by the name of the base year (period) in the locale's alternative representation. - '%Ex': '%m/%d/%y', // Replaced by the locale's alternative date representation. - '%EX': '%H:%M:%S', // Replaced by the locale's alternative time representation. - '%Ey': '%y', // Replaced by the offset from %EC (year only) in the locale's alternative representation. - '%EY': '%Y', // Replaced by the full alternative year representation. - '%Od': '%d', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading zeros if there is any alternative symbol for zero; otherwise, with leading characters. - '%Oe': '%e', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading characters. - '%OH': '%H', // Replaced by the hour (24-hour clock) using the locale's alternative numeric symbols. - '%OI': '%I', // Replaced by the hour (12-hour clock) using the locale's alternative numeric symbols. - '%Om': '%m', // Replaced by the month using the locale's alternative numeric symbols. - '%OM': '%M', // Replaced by the minutes using the locale's alternative numeric symbols. - '%OS': '%S', // Replaced by the seconds using the locale's alternative numeric symbols. - '%Ou': '%u', // Replaced by the weekday as a number in the locale's alternative representation (Monday=1). - '%OU': '%U', // Replaced by the week number of the year (Sunday as the first day of the week, rules corresponding to %U ) using the locale's alternative numeric symbols. - '%OV': '%V', // Replaced by the week number of the year (Monday as the first day of the week, rules corresponding to %V ) using the locale's alternative numeric symbols. - '%Ow': '%w', // Replaced by the number of the weekday (Sunday=0) using the locale's alternative numeric symbols. - '%OW': '%W', // Replaced by the week number of the year (Monday as the first day of the week) using the locale's alternative numeric symbols. - '%Oy': '%y', // Replaced by the year (offset from %C ) using the locale's alternative numeric symbols. - }; - for (var rule in EXPANSION_RULES_1) { - pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_1[rule]); - } - - var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; - var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - - function leadingSomething(value, digits, character) { - var str = typeof value === 'number' ? value.toString() : (value || ''); - while (str.length < digits) { - str = character[0]+str; - } - return str; - } - - function leadingNulls(value, digits) { - return leadingSomething(value, digits, '0'); - } - - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : (value > 0 ? 1 : 0); - } - - var compare; - if ((compare = sgn(date1.getFullYear()-date2.getFullYear())) === 0) { - if ((compare = sgn(date1.getMonth()-date2.getMonth())) === 0) { - compare = sgn(date1.getDate()-date2.getDate()); - } - } - return compare; - } - - function getFirstWeekStartDate(janFourth) { - switch (janFourth.getDay()) { - case 0: // Sunday - return new Date(janFourth.getFullYear()-1, 11, 29); - case 1: // Monday - return janFourth; - case 2: // Tuesday - return new Date(janFourth.getFullYear(), 0, 3); - case 3: // Wednesday - return new Date(janFourth.getFullYear(), 0, 2); - case 4: // Thursday - return new Date(janFourth.getFullYear(), 0, 1); - case 5: // Friday - return new Date(janFourth.getFullYear()-1, 11, 31); - case 6: // Saturday - return new Date(janFourth.getFullYear()-1, 11, 30); - } - } - - function getWeekBasedYear(date) { - var thisDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); - - var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); - var janFourthNextYear = new Date(thisDate.getFullYear()+1, 0, 4); - - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - - if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { - // this date is after the start of the first week of this year - if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { - return thisDate.getFullYear()+1; - } else { - return thisDate.getFullYear(); - } - } else { - return thisDate.getFullYear()-1; - } - } - - var EXPANSION_RULES_2 = { - '%a': function(date) { - return WEEKDAYS[date.tm_wday].substring(0,3); - }, - '%A': function(date) { - return WEEKDAYS[date.tm_wday]; - }, - '%b': function(date) { - return MONTHS[date.tm_mon].substring(0,3); - }, - '%B': function(date) { - return MONTHS[date.tm_mon]; - }, - '%C': function(date) { - var year = date.tm_year+1900; - return leadingNulls((year/100)|0,2); - }, - '%d': function(date) { - return leadingNulls(date.tm_mday, 2); - }, - '%e': function(date) { - return leadingSomething(date.tm_mday, 2, ' '); - }, - '%g': function(date) { - // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year. - // In this system, weeks begin on a Monday and week 1 of the year is the week that includes - // January 4th, which is also the week that includes the first Thursday of the year, and - // is also the first week that contains at least four days in the year. - // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of - // the last week of the preceding year; thus, for Saturday 2nd January 1999, - // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th, - // or 31st is a Monday, it and any following days are part of week 1 of the following year. - // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01. - - return getWeekBasedYear(date).toString().substring(2); - }, - '%G': function(date) { - return getWeekBasedYear(date); - }, - '%H': function(date) { - return leadingNulls(date.tm_hour, 2); - }, - '%I': function(date) { - var twelveHour = date.tm_hour; - if (twelveHour == 0) twelveHour = 12; - else if (twelveHour > 12) twelveHour -= 12; - return leadingNulls(twelveHour, 2); - }, - '%j': function(date) { - // Day of the year (001-366) - return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon-1), 3); - }, - '%m': function(date) { - return leadingNulls(date.tm_mon+1, 2); - }, - '%M': function(date) { - return leadingNulls(date.tm_min, 2); - }, - '%n': function() { - return '\n'; - }, - '%p': function(date) { - if (date.tm_hour >= 0 && date.tm_hour < 12) { - return 'AM'; - } else { - return 'PM'; - } - }, - '%S': function(date) { - return leadingNulls(date.tm_sec, 2); - }, - '%t': function() { - return '\t'; - }, - '%u': function(date) { - return date.tm_wday || 7; - }, - '%U': function(date) { - // Replaced by the week number of the year as a decimal number [00,53]. - // The first Sunday of January is the first day of week 1; - // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] - var janFirst = new Date(date.tm_year+1900, 0, 1); - var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7-janFirst.getDay()); - var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); - - // is target date after the first Sunday? - if (compareByDay(firstSunday, endDate) < 0) { - // calculate difference in days between first Sunday and endDate - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; - var firstSundayUntilEndJanuary = 31-firstSunday.getDate(); - var days = firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); - return leadingNulls(Math.ceil(days/7), 2); - } - - return compareByDay(firstSunday, janFirst) === 0 ? '01': '00'; - }, - '%V': function(date) { - // Replaced by the week number of the year (Monday as the first day of the week) - // as a decimal number [01,53]. If the week containing 1 January has four - // or more days in the new year, then it is considered week 1. - // Otherwise, it is the last week of the previous year, and the next week is week 1. - // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday] - var janFourthThisYear = new Date(date.tm_year+1900, 0, 4); - var janFourthNextYear = new Date(date.tm_year+1901, 0, 4); - - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - - var endDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); - - if (compareByDay(endDate, firstWeekStartThisYear) < 0) { - // if given date is before this years first week, then it belongs to the 53rd week of last year - return '53'; - } - - if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { - // if given date is after next years first week, then it belongs to the 01th week of next year - return '01'; - } - - // given date is in between CW 01..53 of this calendar year - var daysDifference; - if (firstWeekStartThisYear.getFullYear() < date.tm_year+1900) { - // first CW of this year starts last year - daysDifference = date.tm_yday+32-firstWeekStartThisYear.getDate() - } else { - // first CW of this year starts this year - daysDifference = date.tm_yday+1-firstWeekStartThisYear.getDate(); - } - return leadingNulls(Math.ceil(daysDifference/7), 2); - }, - '%w': function(date) { - return date.tm_wday; - }, - '%W': function(date) { - // Replaced by the week number of the year as a decimal number [00,53]. - // The first Monday of January is the first day of week 1; - // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] - var janFirst = new Date(date.tm_year, 0, 1); - var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7-janFirst.getDay()+1); - var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); - - // is target date after the first Monday? - if (compareByDay(firstMonday, endDate) < 0) { - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; - var firstMondayUntilEndJanuary = 31-firstMonday.getDate(); - var days = firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); - return leadingNulls(Math.ceil(days/7), 2); - } - return compareByDay(firstMonday, janFirst) === 0 ? '01': '00'; - }, - '%y': function(date) { - // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year] - return (date.tm_year+1900).toString().substring(2); - }, - '%Y': function(date) { - // Replaced by the year as a decimal number (for example, 1997). [ tm_year] - return date.tm_year+1900; - }, - '%z': function(date) { - // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ). - // For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). - var off = date.tm_gmtoff; - var ahead = off >= 0; - off = Math.abs(off) / 60; - // convert from minutes into hhmm format (which means 60 minutes = 100 units) - off = (off / 60)*100 + (off % 60); - return (ahead ? '+' : '-') + String("0000" + off).slice(-4); - }, - '%Z': function(date) { - return date.tm_zone; - }, - '%%': function() { - return '%'; - } - }; - for (var rule in EXPANSION_RULES_2) { - if (pattern.indexOf(rule) >= 0) { - pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_2[rule](date)); - } - } - - var bytes = intArrayFromString(pattern, false); - if (bytes.length > maxsize) { - return 0; - } - - writeArrayToMemory(bytes, s); - return bytes.length-1; - } - Module["_strftime"] = _strftime;function _strftime_l(s, maxsize, format, tm) { - return _strftime(s, maxsize, format, tm); // no locale support yet - } - Module["_strftime_l"] = _strftime_l; - - function _sysconf(name) { - if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(24, 1, name); - - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 85: - var maxHeapSize = 2*1024*1024*1024 - 65536; - maxHeapSize = HEAPU8.length; - return maxHeapSize / PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 79: - return 0; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: { - if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1; - return 1; - } - } - ___setErrNo(28); - return -1; - } - - Module["_sysconf"] = _sysconf; - - function _system(command) { - // int system(const char *command); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/system.html - // Can't call external programs. - ___setErrNo(6); - return -1; - } - Module["_system"] = _system; - - - function _time(ptr) { - var ret = (Date.now()/1000)|0; - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - Module["_time"] = _time; - - function _times(buffer) { - // clock_t times(struct tms *buffer); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/times.html - // NOTE: This is fake, since we can't calculate real CPU time usage in JS. - if (buffer !== 0) { - _memset(buffer, 0, 16); - } - return 0; - } - Module["_times"] = _times; -if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock(); else PThread.initWorker();; -if (ENVIRONMENT_IS_NODE) { - _emscripten_get_now = function _emscripten_get_now_actual() { - var t = process['hrtime'](); - return t[0] * 1e3 + t[1] / 1e6; - }; - } else if (ENVIRONMENT_IS_PTHREAD) { - _emscripten_get_now = function() { return performance['now']() - __performance_now_clock_drift; }; - } else if (typeof dateNow !== 'undefined') { - _emscripten_get_now = dateNow; - } else if (typeof performance === 'object' && performance && typeof performance['now'] === 'function') { - _emscripten_get_now = function() { return performance['now'](); }; + 55680: (function() { + FS.mkdir("/working"); + FS.mount(NODEFS, { + root: "." + }, "/working"); + }), + 10774952: (function() { + throw "Canceled!"; + }), + 10775091: (function() { + postMessage({ + cmd: "processQueuedMainThreadWork" + }); + }), + 10775142: (function($0) { + if (!ENVIRONMENT_IS_PTHREAD) { + if (!PThread.pthreads[$0] || !PThread.pthreads[$0].worker) { + return 0; + } + PThread.pthreads[$0].worker.postMessage({ + cmd: "processThreadQueue" + }); } else { - _emscripten_get_now = Date.now; - }; -FS.staticInit();; -if (ENVIRONMENT_HAS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); }; -var GLctx; GL.init(); - - // proxiedFunctionTable specifies the list of functions that can be called either synchronously or asynchronously from other threads in postMessage()d or internally queued events. This way a pthread in a Worker can synchronously access e.g. the DOM on the main thread. - -var proxiedFunctionTable = [null,_atexit,___syscall10,___syscall12,___syscall183,___syscall192,___syscall195,___syscall196,___syscall220,___syscall221,___syscall3,___syscall39,___syscall4,___syscall40,___syscall5,___syscall54,___syscall85,___syscall91,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_read,_fd_seek,_fd_write,_tzset,_sysconf]; - -var ASSERTIONS = true; - -// Copyright 2017 The Emscripten Authors. All rights reserved. -// Emscripten is available under two separate licenses, the MIT license and the -// University of Illinois/NCSA Open Source License. Both these licenses can be -// found in the LICENSE file. - -/** @type {function(string, boolean=, number=)} */ -function intArrayFromString(stringy, dontAddNull, length) { - var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; - var u8array = new Array(len); - var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); - if (dontAddNull) u8array.length = numBytesWritten; - return u8array; -} - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - if (ASSERTIONS) { - assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); - } - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); + postMessage({ + targetThread: $0, + cmd: "processThreadQueue" + }); } - return ret.join(''); + return 1; + }), + 10775510: (function() { + return !!Module["canvas"]; + }), + 10775546: (function() { + noExitRuntime = true; + }) +}; +var _readAsmConstArgsArray = []; +function readAsmConstArgs(sigPtr, buf) { + var args = _readAsmConstArgsArray; + args.length = 0; + while (1) { + var ch = GROWABLE_HEAP_LOAD_U8(sigPtr++ | 0); + if (!ch) return args; + if (ch === "d".charCodeAt(0) || ch === "f".charCodeAt(0)) { + buf = alignMemory(buf, 8); + args.push(GROWABLE_HEAP_LOAD_F64(buf | 0)); + buf += 8; + } else if (ch === "i".charCodeAt(0)) { + buf = alignMemory(buf, 4); + args.push(GROWABLE_HEAP_LOAD_I32(buf | 0)); + buf += 4; + } else abort("unexpected char in asm const signature " + ch); + } +} +function _emscripten_asm_const_iii(code, sigPtr, argbuf) { + var args = readAsmConstArgs(sigPtr, argbuf); + return ASM_CONSTS[code].apply(null, args); +} +function initPthreadsJS() { + PThread.initRuntime(); +} +if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ + func: (function() { + ___wasm_call_ctors(); + }) +}); +function demangle(func) { + warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"); + return func; +} +Module["demangle"] = demangle; +function demangleAll(text) { + var regex = /\b_Z[\w\d_]+/g; + return text.replace(regex, (function(x) { + var y = demangle(x); + return x === y ? x : y + " [" + x + "]"; + })); +} +Module["demangleAll"] = demangleAll; +function jsStackTrace() { + var err = new Error; + if (!err.stack) { + try { + throw new Error(0); + } catch (e) { + err = e; + } + if (!err.stack) { + return "(no stack trace available)"; + } + } + return err.stack.toString(); +} +Module["jsStackTrace"] = jsStackTrace; +function stackTrace() { + var js = jsStackTrace(); + if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); + return demangleAll(js); +} +Module["stackTrace"] = stackTrace; +function __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE() { + err("missing function: _ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; +function __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE() { + err("missing function: _ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; +function __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE() { + err("missing function: _ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; +function __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE() { + err("missing function: _ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; +function __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE() { + err("missing function: _ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE"] = __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE; +function __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb() { + err("missing function: _ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"); + abort(-1); +} +Module["__ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"] = __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb; +function __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb() { + err("missing function: _ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"); + abort(-1); +} +Module["__ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb"] = __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb; +function __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb() { + err("missing function: _ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb"); + abort(-1); +} +Module["__ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb"] = __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb; +function __ZN12CPdfRendererD1Ev() { + err("missing function: _ZN12CPdfRendererD1Ev"); + abort(-1); +} +Module["__ZN12CPdfRendererD1Ev"] = __ZN12CPdfRendererD1Ev; +function __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv() { + err("missing function: _ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv"); + abort(-1); +} +Module["__ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv"] = __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv; +function __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_() { + err("missing function: _ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_"); + abort(-1); +} +Module["__ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_"] = __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_; +function __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE() { + err("missing function: _ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE"); + abort(-1); +} +Module["__ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE"] = __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE; +function __ZN14NSDoctRenderer13CDoctrendererD1Ev() { + err("missing function: _ZN14NSDoctRenderer13CDoctrendererD1Ev"); + abort(-1); +} +Module["__ZN14NSDoctRenderer13CDoctrendererD1Ev"] = __ZN14NSDoctRenderer13CDoctrendererD1Ev; +function __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_() { + err("missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_"); + abort(-1); +} +Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_; +function __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb() { + err("missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb"); + abort(-1); +} +Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb; +function __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev() { + err("missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev"); + abort(-1); +} +Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev; +function __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev() { + err("missing function: _ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev"); + abort(-1); +} +Module["__ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev"] = __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev; +function __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb() { + err("missing function: _ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb"); + abort(-1); +} +Module["__ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb"] = __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb; +function __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE() { + err("missing function: _ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE"); + abort(-1); +} +Module["__ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE"] = __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE; +function __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE() { + err("missing function: _ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE"); + abort(-1); +} +Module["__ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE"] = __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE; +function __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_() { + err("missing function: _ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_"); + abort(-1); +} +Module["__ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_"] = __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_; +function __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_() { + err("missing function: _ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_"); + abort(-1); +} +Module["__ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_"] = __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_; +function __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_() { + err("missing function: _ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_"); + abort(-1); +} +Module["__ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_"] = __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_; +function __ZN9CHtmlFileC1Ev() { + err("missing function: _ZN9CHtmlFileC1Ev"); + abort(-1); +} +Module["__ZN9CHtmlFileC1Ev"] = __ZN9CHtmlFileC1Ev; +function __ZN9CHtmlFileD1Ev() { + err("missing function: _ZN9CHtmlFileD1Ev"); + abort(-1); +} +Module["__ZN9CHtmlFileD1Ev"] = __ZN9CHtmlFileD1Ev; +function __ZN9PdfReader10CPdfReader8GetErrorEv() { + err("missing function: _ZN9PdfReader10CPdfReader8GetErrorEv"); + abort(-1); +} +Module["__ZN9PdfReader10CPdfReader8GetErrorEv"] = __ZN9PdfReader10CPdfReader8GetErrorEv; +function __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE() { + err("missing function: _ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE"); + abort(-1); +} +Module["__ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE"] = __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE; +function ___assert_fail(condition, filename, line, func) { + abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]); +} +Module["___assert_fail"] = ___assert_fail; +var PROCINFO = { + ppid: 1, + pid: 42, + sid: 42, + pgid: 42 +}; +Module["PROCINFO"] = PROCINFO; +var __pthread_ptr = 0; +Module["__pthread_ptr"] = __pthread_ptr; +var __pthread_is_main_runtime_thread = 0; +Module["__pthread_is_main_runtime_thread"] = __pthread_is_main_runtime_thread; +var __pthread_is_main_browser_thread = 0; +Module["__pthread_is_main_browser_thread"] = __pthread_is_main_browser_thread; +function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) { + pthreadPtr = pthreadPtr | 0; + isMainBrowserThread = isMainBrowserThread | 0; + isMainRuntimeThread = isMainRuntimeThread | 0; + __pthread_ptr = pthreadPtr; + __pthread_is_main_browser_thread = isMainBrowserThread; + __pthread_is_main_runtime_thread = isMainRuntimeThread; +} +Module["__register_pthread_ptr"] = __register_pthread_ptr; +var ERRNO_CODES = { + EPERM: 63, + ENOENT: 44, + ESRCH: 71, + EINTR: 27, + EIO: 29, + ENXIO: 60, + E2BIG: 1, + ENOEXEC: 45, + EBADF: 8, + ECHILD: 12, + EAGAIN: 6, + EWOULDBLOCK: 6, + ENOMEM: 48, + EACCES: 2, + EFAULT: 21, + ENOTBLK: 105, + EBUSY: 10, + EEXIST: 20, + EXDEV: 75, + ENODEV: 43, + ENOTDIR: 54, + EISDIR: 31, + EINVAL: 28, + ENFILE: 41, + EMFILE: 33, + ENOTTY: 59, + ETXTBSY: 74, + EFBIG: 22, + ENOSPC: 51, + ESPIPE: 70, + EROFS: 69, + EMLINK: 34, + EPIPE: 64, + EDOM: 18, + ERANGE: 68, + ENOMSG: 49, + EIDRM: 24, + ECHRNG: 106, + EL2NSYNC: 156, + EL3HLT: 107, + EL3RST: 108, + ELNRNG: 109, + EUNATCH: 110, + ENOCSI: 111, + EL2HLT: 112, + EDEADLK: 16, + ENOLCK: 46, + EBADE: 113, + EBADR: 114, + EXFULL: 115, + ENOANO: 104, + EBADRQC: 103, + EBADSLT: 102, + EDEADLOCK: 16, + EBFONT: 101, + ENOSTR: 100, + ENODATA: 116, + ETIME: 117, + ENOSR: 118, + ENONET: 119, + ENOPKG: 120, + EREMOTE: 121, + ENOLINK: 47, + EADV: 122, + ESRMNT: 123, + ECOMM: 124, + EPROTO: 65, + EMULTIHOP: 36, + EDOTDOT: 125, + EBADMSG: 9, + ENOTUNIQ: 126, + EBADFD: 127, + EREMCHG: 128, + ELIBACC: 129, + ELIBBAD: 130, + ELIBSCN: 131, + ELIBMAX: 132, + ELIBEXEC: 133, + ENOSYS: 52, + ENOTEMPTY: 55, + ENAMETOOLONG: 37, + ELOOP: 32, + EOPNOTSUPP: 138, + EPFNOSUPPORT: 139, + ECONNRESET: 15, + ENOBUFS: 42, + EAFNOSUPPORT: 5, + EPROTOTYPE: 67, + ENOTSOCK: 57, + ENOPROTOOPT: 50, + ESHUTDOWN: 140, + ECONNREFUSED: 14, + EADDRINUSE: 3, + ECONNABORTED: 13, + ENETUNREACH: 40, + ENETDOWN: 38, + ETIMEDOUT: 73, + EHOSTDOWN: 142, + EHOSTUNREACH: 23, + EINPROGRESS: 26, + EALREADY: 7, + EDESTADDRREQ: 17, + EMSGSIZE: 35, + EPROTONOSUPPORT: 66, + ESOCKTNOSUPPORT: 137, + EADDRNOTAVAIL: 4, + ENETRESET: 39, + EISCONN: 30, + ENOTCONN: 53, + ETOOMANYREFS: 141, + EUSERS: 136, + EDQUOT: 19, + ESTALE: 72, + ENOTSUP: 138, + ENOMEDIUM: 148, + EILSEQ: 25, + EOVERFLOW: 61, + ECANCELED: 11, + ENOTRECOVERABLE: 56, + EOWNERDEAD: 62, + ESTRPIPE: 135 +}; +Module["ERRNO_CODES"] = ERRNO_CODES; +var __main_thread_futex_wait_address = 12595904; +Module["__main_thread_futex_wait_address"] = __main_thread_futex_wait_address; +function _emscripten_futex_wake(addr, count) { + if (addr <= 0 || addr > HEAP8.length || addr & 3 != 0 || count < 0) return -28; + if (count == 0) return 0; + if (count >= 2147483647) count = Infinity; + var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); + var mainThreadWoken = 0; + if (mainThreadWaitAddress == addr) { + var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0); + if (loadedAddr == mainThreadWaitAddress) { + --count; + mainThreadWoken = 1; + if (count <= 0) return 1; + } + } + var ret = Atomics.notify(HEAP32, addr >> 2, count); + if (ret >= 0) return ret + mainThreadWoken; + throw "Atomics.notify returned an unexpected value " + ret; +} +Module["_emscripten_futex_wake"] = _emscripten_futex_wake; +function __kill_thread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _kill_thread() can only ever be called from main application thread!"; + if (!pthread_ptr) throw "Internal Error! Null pthread_ptr in _kill_thread!"; + GROWABLE_HEAP_STORE_I32(pthread_ptr + 24 | 0, 0); + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.terminate(); + PThread.freeThreadData(pthread); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker), 1); + pthread.worker.pthread = undefined; +} +Module["__kill_thread"] = __kill_thread; +function __cancel_thread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _cancel_thread() can only ever be called from main application thread!"; + if (!pthread_ptr) throw "Internal Error! Null pthread_ptr in _cancel_thread!"; + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.postMessage({ + "cmd": "cancel" + }); +} +Module["__cancel_thread"] = __cancel_thread; +function __cleanup_thread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _cleanup_thread() can only ever be called from main application thread!"; + if (!pthread_ptr) throw "Internal Error! Null pthread_ptr in _cleanup_thread!"; + GROWABLE_HEAP_STORE_I32(pthread_ptr + 24 | 0, 0); + var pthread = PThread.pthreads[pthread_ptr]; + if (pthread) { + var worker = pthread.worker; + PThread.returnWorkerToPool(worker); + } +} +Module["__cleanup_thread"] = __cleanup_thread; +var PThread = { + MAIN_THREAD_ID: 1, + mainThreadInfo: { + schedPolicy: 0, + schedPrio: 0 + }, + preallocatedWorkers: [], + unusedWorkers: [], + runningWorkers: [], + initRuntime: (function() { + __register_pthread_ptr(PThread.mainThreadBlock, !ENVIRONMENT_IS_WORKER, 1); + _emscripten_register_main_browser_thread_id(PThread.mainThreadBlock); + }), + initMainThreadBlock: (function() { + if (ENVIRONMENT_IS_PTHREAD) return undefined; + PThread.mainThreadBlock = 12595120; + for (var i = 0; i < 244 / 4; ++i) GROWABLE_HEAP_STORE_I32((PThread.mainThreadBlock / 4 + i) * 4 | 0, 0); + GROWABLE_HEAP_STORE_I32(PThread.mainThreadBlock + 24 | 0, PThread.mainThreadBlock); + var headPtr = PThread.mainThreadBlock + 168; + GROWABLE_HEAP_STORE_I32(headPtr | 0, headPtr); + var tlsMemory = 12595376; + for (var i = 0; i < 128; ++i) GROWABLE_HEAP_STORE_I32((tlsMemory / 4 + i) * 4 | 0, 0); + Atomics.store(HEAPU32, PThread.mainThreadBlock + 116 >> 2, tlsMemory); + Atomics.store(HEAPU32, PThread.mainThreadBlock + 52 >> 2, PThread.mainThreadBlock); + Atomics.store(HEAPU32, PThread.mainThreadBlock + 56 >> 2, PROCINFO.pid); + }), + initWorker: (function() {}), + pthreads: {}, + exitHandlers: null, + setThreadStatus: (function() {}), + runExitHandlers: (function() { + if (PThread.exitHandlers !== null) { + while (PThread.exitHandlers.length > 0) { + PThread.exitHandlers.pop()(); + } + PThread.exitHandlers = null; + } + if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors(); + }), + threadExit: (function(exitCode) { + var tb = _pthread_self(); + if (tb) { + Atomics.store(HEAPU32, tb + 4 >> 2, exitCode); + Atomics.store(HEAPU32, tb + 0 >> 2, 1); + Atomics.store(HEAPU32, tb + 72 >> 2, 1); + Atomics.store(HEAPU32, tb + 76 >> 2, 0); + PThread.runExitHandlers(); + _emscripten_futex_wake(tb + 0, 2147483647); + __register_pthread_ptr(0, 0, 0); + threadInfoStruct = 0; + if (ENVIRONMENT_IS_PTHREAD) { + postMessage({ + "cmd": "exit" + }); + } + } + }), + threadCancel: (function() { + PThread.runExitHandlers(); + Atomics.store(HEAPU32, threadInfoStruct + 4 >> 2, -1); + Atomics.store(HEAPU32, threadInfoStruct + 0 >> 2, 1); + _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); + threadInfoStruct = selfThreadId = 0; + __register_pthread_ptr(0, 0, 0); + postMessage({ + "cmd": "cancelDone" + }); + }), + terminateAllThreads: (function() { + for (var t in PThread.pthreads) { + var pthread = PThread.pthreads[t]; + if (pthread && pthread.worker) { + PThread.returnWorkerToPool(pthread.worker); + } + } + PThread.pthreads = {}; + for (var i = 0; i < PThread.preallocatedWorkers.length; ++i) { + var worker = PThread.preallocatedWorkers[i]; + assert(!worker.pthread); + worker.terminate(); + } + PThread.preallocatedWorkers = []; + for (var i = 0; i < PThread.unusedWorkers.length; ++i) { + var worker = PThread.unusedWorkers[i]; + assert(!worker.pthread); + worker.terminate(); + } + PThread.unusedWorkers = []; + for (var i = 0; i < PThread.runningWorkers.length; ++i) { + var worker = PThread.runningWorkers[i]; + var pthread = worker.pthread; + assert(pthread, "This Worker should have a pthread it is executing"); + PThread.freeThreadData(pthread); + worker.terminate(); + } + PThread.runningWorkers = []; + }), + freeThreadData: (function(pthread) { + if (!pthread) return; + if (pthread.threadInfoStruct) { + var tlsMemory = GROWABLE_HEAP_LOAD_I32(pthread.threadInfoStruct + 116 | 0); + GROWABLE_HEAP_STORE_I32(pthread.threadInfoStruct + 116 | 0, 0); + _free(tlsMemory); + _free(pthread.threadInfoStruct); + } + pthread.threadInfoStruct = 0; + if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase); + pthread.stackBase = 0; + if (pthread.worker) pthread.worker.pthread = null; + }), + returnWorkerToPool: (function(worker) { + delete PThread.pthreads[worker.pthread.thread]; + PThread.unusedWorkers.push(worker); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1); + PThread.freeThreadData(worker.pthread); + worker.pthread = undefined; + }), + receiveObjectTransfer: (function(data) {}), + allocateUnusedWorkers: (function(numWorkers, onFinishedLoading) { + if (typeof SharedArrayBuffer === "undefined") return; + var workers = []; + var numWorkersToCreate = numWorkers; + if (PThread.preallocatedWorkers.length > 0) { + var workersUsed = Math.min(PThread.preallocatedWorkers.length, numWorkers); + workers = workers.concat(PThread.preallocatedWorkers.splice(0, workersUsed)); + numWorkersToCreate -= workersUsed; + } + if (numWorkersToCreate > 0) { + workers = workers.concat(PThread.createNewWorkers(numWorkersToCreate)); + } + PThread.attachListenerToWorkers(workers, onFinishedLoading); + for (var i = 0; i < numWorkers; ++i) { + var worker = workers[i]; + worker.postMessage({ + "cmd": "load", + "urlOrBlob": Module["mainScriptUrlOrBlob"] || _scriptDir, + "wasmMemory": wasmMemory, + "wasmModule": wasmModule, + "DYNAMIC_BASE": DYNAMIC_BASE, + "DYNAMICTOP_PTR": DYNAMICTOP_PTR + }); + PThread.unusedWorkers.push(worker); + } + }), + attachListenerToWorkers: (function(workers, onFinishedLoading) { + var numWorkersLoaded = 0; + var numWorkers = workers.length; + for (var i = 0; i < numWorkers; ++i) { + var worker = workers[i]; + ((function(worker) { + worker.onmessage = (function(e) { + var d = e["data"]; + var cmd = d["cmd"]; + if (worker.pthread) PThread.currentProxiedOperationCallerThread = worker.pthread.threadInfoStruct; + if (d["targetThread"] && d["targetThread"] != _pthread_self()) { + var thread = PThread.pthreads[d.targetThread]; + if (thread) { + thread.worker.postMessage(e.data, d["transferList"]); + } else { + console.error('Internal error! Worker sent a message "' + cmd + '" to target pthread ' + d["targetThread"] + ", but that thread no longer exists!"); + } + PThread.currentProxiedOperationCallerThread = undefined; + return; + } + if (cmd === "processQueuedMainThreadWork") { + _emscripten_main_thread_process_queued_calls(); + } else if (cmd === "spawnThread") { + __spawn_thread(e.data); + } else if (cmd === "cleanupThread") { + __cleanup_thread(d["thread"]); + } else if (cmd === "killThread") { + __kill_thread(d["thread"]); + } else if (cmd === "cancelThread") { + __cancel_thread(d["thread"]); + } else if (cmd === "loaded") { + worker.loaded = true; + if (worker.runPthread) { + worker.runPthread(); + delete worker.runPthread; + } + ++numWorkersLoaded; + if (numWorkersLoaded === numWorkers && onFinishedLoading) { + onFinishedLoading(); + } + } else if (cmd === "print") { + out("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "printErr") { + err("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "alert") { + alert("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "exit") { + var detached = worker.pthread && Atomics.load(HEAPU32, worker.pthread.thread + 80 >> 2); + if (detached) { + PThread.returnWorkerToPool(worker); + } + } else if (cmd === "exitProcess") { + noExitRuntime = false; + try { + exit(d["returnCode"]); + } catch (e) { + if (e instanceof ExitStatus) return; + throw e; + } + } else if (cmd === "cancelDone") { + PThread.returnWorkerToPool(worker); + } else if (cmd === "objectTransfer") { + PThread.receiveObjectTransfer(e.data); + } else if (e.data.target === "setimmediate") { + worker.postMessage(e.data); + } else { + err("worker sent an unknown command " + cmd); + } + PThread.currentProxiedOperationCallerThread = undefined; + }); + worker.onerror = (function(e) { + err("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message); + }); + if (ENVIRONMENT_HAS_NODE) { + worker.on("message", (function(data) { + worker.onmessage({ + data: data + }); + })); + worker.on("error", (function(data) { + worker.onerror(data); + })); + worker.on("exit", (function(data) { + console.log("worker exited - TODO: update the worker queue?"); + })); + } + }))(worker); + } + }), + createNewWorkers: (function(numWorkers) { + if (typeof SharedArrayBuffer === "undefined") return []; + var pthreadMainJs = "x2t.worker.js"; + pthreadMainJs = locateFile(pthreadMainJs); + var newWorkers = []; + for (var i = 0; i < numWorkers; ++i) { + newWorkers.push(new Worker(pthreadMainJs)); + } + return newWorkers; + }), + getNewWorker: (function() { + if (PThread.unusedWorkers.length == 0) PThread.allocateUnusedWorkers(1); + if (PThread.unusedWorkers.length > 0) return PThread.unusedWorkers.pop(); else return null; + }), + busySpinWait: (function(msecs) { + var t = performance.now() + msecs; + while (performance.now() < t) { + } + }) +}; +Module["PThread"] = PThread; +function ___call_main(argc, argv) { + var returnCode = _main(argc, argv); + if (!noExitRuntime) postMessage({ + "cmd": "exitProcess", + "returnCode": returnCode + }); + return returnCode; +} +Module["___call_main"] = ___call_main; +function _emscripten_get_now() { + abort(); +} +Module["_emscripten_get_now"] = _emscripten_get_now; +function _emscripten_get_now_is_monotonic() { + return 0 || ENVIRONMENT_IS_NODE || typeof dateNow !== "undefined" || typeof performance === "object" && performance && typeof performance["now"] === "function"; +} +Module["_emscripten_get_now_is_monotonic"] = _emscripten_get_now_is_monotonic; +function ___setErrNo(value) { + if (Module["___errno_location"]) GROWABLE_HEAP_STORE_I32(Module["___errno_location"]() | 0, value); else err("failed to set errno from JS"); + return value; +} +Module["___setErrNo"] = ___setErrNo; +function _clock_gettime(clk_id, tp) { + var now; + if (clk_id === 0) { + now = Date.now(); + } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) { + now = _emscripten_get_now(); + } else { + ___setErrNo(28); + return -1; + } + GROWABLE_HEAP_STORE_I32(tp | 0, now / 1e3 | 0); + GROWABLE_HEAP_STORE_I32(tp + 4 | 0, now % 1e3 * 1e3 * 1e3 | 0); + return 0; +} +Module["_clock_gettime"] = _clock_gettime; +function ___clock_gettime(a0, a1) { + return _clock_gettime(a0, a1); +} +Module["___clock_gettime"] = ___clock_gettime; +function ___cxa_allocate_exception(size) { + return _malloc(size); +} +Module["___cxa_allocate_exception"] = ___cxa_allocate_exception; +function _atexit(func, arg) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(1, 1, func, arg); + warnOnce("atexit() called, but EXIT_RUNTIME is not set, so atexits() will not be called. set EXIT_RUNTIME to 1 (see the FAQ)"); + __ATEXIT__.unshift({ + func: func, + arg: arg + }); +} +Module["_atexit"] = _atexit; +function ___cxa_atexit() { + return _atexit.apply(null, arguments); +} +Module["___cxa_atexit"] = ___cxa_atexit; +var ___exception_caught = []; +Module["___exception_caught"] = ___exception_caught; +var ___exception_infos = {}; +Module["___exception_infos"] = ___exception_infos; +function ___exception_deAdjust(adjusted) { + if (!adjusted || ___exception_infos[adjusted]) return adjusted; + for (var key in ___exception_infos) { + var ptr = +key; + var adj = ___exception_infos[ptr].adjusted; + var len = adj.length; + for (var i = 0; i < len; i++) { + if (adj[i] === adjusted) { + return ptr; + } + } + } + return adjusted; +} +Module["___exception_deAdjust"] = ___exception_deAdjust; +var ___exception_last = 0; +Module["___exception_last"] = ___exception_last; +function ___cxa_rethrow() { + var ptr = ___exception_caught.pop(); + ptr = ___exception_deAdjust(ptr); + if (!___exception_infos[ptr].rethrown) { + ___exception_caught.push(ptr); + ___exception_infos[ptr].rethrown = true; + } + ___exception_last = ptr; + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; +} +Module["___cxa_rethrow"] = ___cxa_rethrow; +function ___cxa_throw(ptr, type, destructor) { + ___exception_infos[ptr] = { + ptr: ptr, + adjusted: [ ptr ], + type: type, + destructor: destructor, + refcount: 0, + caught: false, + rethrown: false + }; + ___exception_last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exceptions++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; +} +Module["___cxa_throw"] = ___cxa_throw; +function ___lock() {} +Module["___lock"] = ___lock; +function ___map_file(pathname, size) { + ___setErrNo(63); + return -1; +} +Module["___map_file"] = ___map_file; +var PATH = { + splitPath: (function(filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }), + normalizeArray: (function(parts, allowAboveRoot) { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift(".."); + } + } + return parts; + }), + normalize: (function(path) { + var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter((function(p) { + return !!p; + })), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }), + dirname: (function(path) { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }), + basename: (function(path) { + if (path === "/") return "/"; + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }), + extname: (function(path) { + return PATH.splitPath(path)[3]; + }), + join: (function() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join("/")); + }), + join2: (function(l, r) { + return PATH.normalize(l + "/" + r); + }) +}; +Module["PATH"] = PATH; +var PATH_FS = { + resolve: (function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path !== "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = path.charAt(0) === "/"; + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((function(p) { + return !!p; + })), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }), + relative: (function(from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== "") break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split("/")); + var toParts = trim(to.split("/")); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + }) +}; +Module["PATH_FS"] = PATH_FS; +var TTY = { + ttys: [], + init: (function() {}), + shutdown: (function() {}), + register: (function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }), + stream_ops: { + open: (function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }), + close: (function(stream) { + stream.tty.ops.flush(stream.tty); + }), + flush: (function(stream) { + stream.tty.ops.flush(stream.tty); + }), + read: (function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }), + write: (function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }) + }, + default_tty_ops: { + get_char: (function(tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + var BUFSIZE = 256; + var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); + var bytesRead = 0; + try { + bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); + } catch (e) { + if (e.toString().indexOf("EOF") != -1) bytesRead = 0; else throw e; + } + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString("utf-8"); + } else { + result = null; + } + } else if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }), + put_char: (function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }), + flush: (function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }) + }, + default_tty1_ops: { + put_char: (function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }), + flush: (function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }) + } +}; +Module["TTY"] = TTY; +var MEMFS = { + ops_table: null, + mount: (function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }), + createNode: (function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + } + return node; + }), + getFileDataAsRegularArray: (function(node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr; + } + return node.contents; + }), + getFileDataAsTypedArray: (function(node) { + if (!node.contents) return new Uint8Array; + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }), + expandFileStorage: (function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + return; + }), + resizeFileStorage: (function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + return; + } + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0); + node.usedBytes = newSize; + }), + node_ops: { + getattr: (function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }), + setattr: (function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }), + lookup: (function(parent, name) { + throw FS.genericErrors[44]; + }), + mknod: (function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }), + rename: (function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + }), + unlink: (function(parent, name) { + delete parent.contents[name]; + }), + rmdir: (function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + }), + readdir: (function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }), + symlink: (function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }), + readlink: (function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + }) + }, + stream_ops: { + read: (function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }), + write: (function(stream, buffer, offset, length, position, canOwn) { + assert(!(buffer instanceof ArrayBuffer)); + if (buffer.buffer === HEAP8.buffer) { + if (canOwn) { + warnOnce("file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)"); + } + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + assert(position === 0, "canOwn must imply no weird position inside the file"); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }), + llseek: (function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }), + allocate: (function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }), + mmap: (function(stream, buffer, offset, length, position, prot, flags) { + assert(!(buffer instanceof ArrayBuffer)); + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === buffer.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < stream.node.usedBytes) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + var fromHeap = buffer.buffer == HEAP8.buffer; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + (fromHeap ? HEAP8 : buffer).set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }), + msync: (function(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (mmapFlags & 2) { + return 0; + } + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + }) + } +}; +Module["MEMFS"] = MEMFS; +var NODEFS = { + isWindows: false, + staticInit: (function() { + NODEFS.isWindows = !!process.platform.match(/^win/); + var flags = process["binding"]("constants"); + if (flags["fs"]) { + flags = flags["fs"]; + } + NODEFS.flagsForNodeMap = { + "1024": flags["O_APPEND"], + "64": flags["O_CREAT"], + "128": flags["O_EXCL"], + "0": flags["O_RDONLY"], + "2": flags["O_RDWR"], + "4096": flags["O_SYNC"], + "512": flags["O_TRUNC"], + "1": flags["O_WRONLY"] + }; + }), + bufferFrom: (function(arrayBuffer) { + return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer); + }), + convertNodeCode: (function(e) { + var code = e.code; + assert(code in ERRNO_CODES); + return ERRNO_CODES[code]; + }), + mount: (function(mount) { + assert(ENVIRONMENT_HAS_NODE); + return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0); + }), + createNode: (function(parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(28); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + }), + getMode: (function(path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + stat.mode = stat.mode | (stat.mode & 292) >> 2; + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + return stat.mode; + }), + realPath: (function(node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + }), + flagsForNode: (function(flags) { + flags &= ~2097152; + flags &= ~2048; + flags &= ~32768; + flags &= ~524288; + var newFlags = 0; + for (var k in NODEFS.flagsForNodeMap) { + if (flags & k) { + newFlags |= NODEFS.flagsForNodeMap[k]; + flags ^= k; + } + } + if (!flags) { + return newFlags; + } else { + throw new FS.ErrnoError(28); + } + }), + node_ops: { + getattr: (function(node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + }), + setattr: (function(node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + lookup: (function(parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + }), + mknod: (function(parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, "", { + mode: node.mode + }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + return node; + }), + rename: (function(oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + unlink: (function(parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + rmdir: (function(parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + readdir: (function(node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + symlink: (function(parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + readlink: (function(node) { + var path = NODEFS.realPath(node); + try { + path = fs.readlinkSync(path); + path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); + return path; + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }) + }, + stream_ops: { + open: (function(stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + close: (function(stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + read: (function(stream, buffer, offset, length, position) { + if (length === 0) return 0; + try { + return fs.readSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + write: (function(stream, buffer, offset, length, position) { + try { + return fs.writeSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }), + llseek: (function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }) + } +}; +Module["NODEFS"] = NODEFS; +var ERRNO_MESSAGES = { + 0: "Success", + 1: "Arg list too long", + 2: "Permission denied", + 3: "Address already in use", + 4: "Address not available", + 5: "Address family not supported by protocol family", + 6: "No more processes", + 7: "Socket already connected", + 8: "Bad file number", + 9: "Trying to read unreadable message", + 10: "Mount device busy", + 11: "Operation canceled", + 12: "No children", + 13: "Connection aborted", + 14: "Connection refused", + 15: "Connection reset by peer", + 16: "File locking deadlock error", + 17: "Destination address required", + 18: "Math arg out of domain of func", + 19: "Quota exceeded", + 20: "File exists", + 21: "Bad address", + 22: "File too large", + 23: "Host is unreachable", + 24: "Identifier removed", + 25: "Illegal byte sequence", + 26: "Connection already in progress", + 27: "Interrupted system call", + 28: "Invalid argument", + 29: "I/O error", + 30: "Socket is already connected", + 31: "Is a directory", + 32: "Too many symbolic links", + 33: "Too many open files", + 34: "Too many links", + 35: "Message too long", + 36: "Multihop attempted", + 37: "File or path name too long", + 38: "Network interface is not configured", + 39: "Connection reset by network", + 40: "Network is unreachable", + 41: "Too many open files in system", + 42: "No buffer space available", + 43: "No such device", + 44: "No such file or directory", + 45: "Exec format error", + 46: "No record locks available", + 47: "The link has been severed", + 48: "Not enough core", + 49: "No message of desired type", + 50: "Protocol not available", + 51: "No space left on device", + 52: "Function not implemented", + 53: "Socket is not connected", + 54: "Not a directory", + 55: "Directory not empty", + 56: "State not recoverable", + 57: "Socket operation on non-socket", + 59: "Not a typewriter", + 60: "No such device or address", + 61: "Value too large for defined data type", + 62: "Previous owner died", + 63: "Not super-user", + 64: "Broken pipe", + 65: "Protocol error", + 66: "Unknown protocol", + 67: "Protocol wrong type for socket", + 68: "Math result not representable", + 69: "Read only file system", + 70: "Illegal seek", + 71: "No such process", + 72: "Stale file handle", + 73: "Connection timed out", + 74: "Text file busy", + 75: "Cross-device link", + 100: "Device not a stream", + 101: "Bad font file fmt", + 102: "Invalid slot", + 103: "Invalid request code", + 104: "No anode", + 105: "Block device required", + 106: "Channel number out of range", + 107: "Level 3 halted", + 108: "Level 3 reset", + 109: "Link number out of range", + 110: "Protocol driver not attached", + 111: "No CSI structure available", + 112: "Level 2 halted", + 113: "Invalid exchange", + 114: "Invalid request descriptor", + 115: "Exchange full", + 116: "No data (for no delay io)", + 117: "Timer expired", + 118: "Out of streams resources", + 119: "Machine is not on the network", + 120: "Package not installed", + 121: "The object is remote", + 122: "Advertise error", + 123: "Srmount error", + 124: "Communication error on send", + 125: "Cross mount point (not really error)", + 126: "Given log. name not unique", + 127: "f.d. invalid for this operation", + 128: "Remote address changed", + 129: "Can access a needed shared lib", + 130: "Accessing a corrupted shared lib", + 131: ".lib section in a.out corrupted", + 132: "Attempting to link in too many libs", + 133: "Attempting to exec a shared library", + 135: "Streams pipe error", + 136: "Too many users", + 137: "Socket type not supported", + 138: "Not supported", + 139: "Protocol family not supported", + 140: "Can't send after socket shutdown", + 141: "Too many references", + 142: "Host is down", + 148: "No medium (in tape drive)", + 156: "Level 2 not synchronized" +}; +Module["ERRNO_MESSAGES"] = ERRNO_MESSAGES; +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + trackingDelegate: {}, + tracking: { + openFlags: { + READ: 1, + WRITE: 2 + } + }, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + handleFSError: (function(e) { + if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); + return ___setErrNo(e.errno); + }), + lookupPath: (function(path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = PATH.normalizeArray(path.split("/").filter((function(p) { + return !!p; + })), false); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }), + getPath: (function(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }), + hashName: (function(parentid, name) { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }), + hashAddNode: (function(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }), + hashRemoveNode: (function(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }), + lookupNode: (function(parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }), + createNode: (function(parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = (function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }); + FS.FSNode.prototype = {}; + var readMode = 292 | 73; + var writeMode = 146; + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: (function() { + return (this.mode & readMode) === readMode; + }), + set: (function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + }) + }, + write: { + get: (function() { + return (this.mode & writeMode) === writeMode; + }), + set: (function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + }) + }, + isFolder: { + get: (function() { + return FS.isDir(this.mode); + }) + }, + isDevice: { + get: (function() { + return FS.isChrdev(this.mode); + }) + } + }); + } + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }), + destroyNode: (function(node) { + FS.hashRemoveNode(node); + }), + isRoot: (function(node) { + return node === node.parent; + }), + isMountpoint: (function(node) { + return !!node.mounted; + }), + isFile: (function(mode) { + return (mode & 61440) === 32768; + }), + isDir: (function(mode) { + return (mode & 61440) === 16384; + }), + isLink: (function(mode) { + return (mode & 61440) === 40960; + }), + isChrdev: (function(mode) { + return (mode & 61440) === 8192; + }), + isBlkdev: (function(mode) { + return (mode & 61440) === 24576; + }), + isFIFO: (function(mode) { + return (mode & 61440) === 4096; + }), + isSocket: (function(mode) { + return (mode & 49152) === 49152; + }), + flagModes: { + "r": 0, + "rs": 1052672, + "r+": 2, + "w": 577, + "wx": 705, + "xw": 705, + "w+": 578, + "wx+": 706, + "xw+": 706, + "a": 1089, + "ax": 1217, + "xa": 1217, + "a+": 1090, + "ax+": 1218, + "xa+": 1218 + }, + modeStringToFlags: (function(str) { + var flags = FS.flagModes[str]; + if (typeof flags === "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }), + flagsToPermissionString: (function(flag) { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }), + nodePermissions: (function(node, perms) { + if (FS.ignorePermissions) { + return 0; + } + if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { + return 2; + } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { + return 2; + } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { + return 2; + } + return 0; + }), + mayLookup: (function(dir) { + var err = FS.nodePermissions(dir, "x"); + if (err) return err; + if (!dir.node_ops.lookup) return 2; + return 0; + }), + mayCreate: (function(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }), + mayDelete: (function(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, "wx"); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }), + mayOpen: (function(node, flags) { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }), + MAX_OPEN_FDS: 4096, + nextfd: (function(fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }), + getStream: (function(fd) { + return FS.streams[fd]; + }), + createStream: (function(stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = (function() {}); + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: (function() { + return this.node; + }), + set: (function(val) { + this.node = val; + }) + }, + isRead: { + get: (function() { + return (this.flags & 2097155) !== 1; + }) + }, + isWrite: { + get: (function() { + return (this.flags & 2097155) !== 0; + }) + }, + isAppend: { + get: (function() { + return this.flags & 1024; + }) + } + }); + } + var newStream = new FS.FSStream; + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }), + closeStream: (function(fd) { + FS.streams[fd] = null; + }), + chrdev_stream_ops: { + open: (function(stream) { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }), + llseek: (function() { + throw new FS.ErrnoError(70); + }) + }, + major: (function(dev) { + return dev >> 8; + }), + minor: (function(dev) { + return dev & 255; + }), + makedev: (function(ma, mi) { + return ma << 8 | mi; + }), + registerDevice: (function(dev, ops) { + FS.devices[dev] = { + stream_ops: ops + }; + }), + getDevice: (function(dev) { + return FS.devices[dev]; + }), + getMounts: (function(mount) { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }), + syncfs: (function(populate, callback) { + if (typeof populate === "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(err) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(err); + } + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return doCallback(err); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach((function(mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + })); + }), + mount: (function(type, opts, mountpoint) { + if (typeof type === "string") { + throw type; + } + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }), + unmount: (function(mountpoint) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach((function(hash) { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + current = next; + } + })); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + }), + lookup: (function(parent, name) { + return parent.node_ops.lookup(parent, name); + }), + mknod: (function(path, mode, dev) { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }), + create: (function(path, mode) { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }), + mkdir: (function(path, mode) { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }), + mkdirTree: (function(path, mode) { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + try { + FS.mkdir(d, mode); + } catch (e) { + if (e.errno != 20) throw e; + } + } + }), + mkdev: (function(path, mode, dev) { + if (typeof dev === "undefined") { + dev = mode; + mode = 438; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + }), + symlink: (function(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + }), + rename: (function(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { + parent: true + }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { + parent: true + }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(10); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + var old_node = FS.lookupNode(old_dir, old_name); + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(28); + } + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(55); + } + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (old_node === new_node) { + return; + } + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { + throw new FS.ErrnoError(10); + } + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, "w"); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate["willMovePath"]) { + FS.trackingDelegate["willMovePath"](old_path, new_path); + } + } catch (e) { + console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); + } + FS.hashRemoveNode(old_node); + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path); + } catch (e) { + console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); + } + }), + rmdir: (function(path) { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path); + } + } catch (e) { + console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); + } catch (e) { + console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); + } + }), + readdir: (function(path) { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }), + unlink: (function(path) { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path); + } + } catch (e) { + console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); + } catch (e) { + console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); + } + }), + readlink: (function(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }), + stat: (function(path, dontFollow) { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }), + lstat: (function(path) { + return FS.stat(path, true); + }), + chmod: (function(path, mode, dontFollow) { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }), + lchmod: (function(path, mode) { + FS.chmod(path, mode, true); + }), + fchmod: (function(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }), + chown: (function(path, uid, gid, dontFollow) { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }), + lchown: (function(path, uid, gid) { + FS.chown(path, uid, gid, true); + }), + fchown: (function(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }), + truncate: (function(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var err = FS.nodePermissions(node, "w"); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }), + ftruncate: (function(fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }), + utime: (function(path, atime, mtime) { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }), + open: (function(path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + if (flags & 512) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }, fd_start, fd_end); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + console.log("FS.trackingDelegate error on read file: " + path); + } + } + try { + if (FS.trackingDelegate["onOpenFile"]) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate["onOpenFile"](path, trackingFlags); + } + } catch (e) { + console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message); + } + return stream; + }), + close: (function(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }), + isClosed: (function(stream) { + return stream.fd === null; + }), + llseek: (function(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }), + read: (function(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position !== "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }), + write: (function(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path); + } catch (e) { + console.log("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message); + } + return bytesWritten; + }), + allocate: (function(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }), + mmap: (function(stream, buffer, offset, length, position, prot, flags) { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + }), + msync: (function(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }), + munmap: (function(stream) { + return 0; + }), + ioctl: (function(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }), + readFile: (function(path, opts) { + opts = opts || {}; + opts.flags = opts.flags || "r"; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }), + writeFile: (function(path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || "w"; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }), + cwd: (function() { + return FS.currentPath; + }), + chdir: (function(path) { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var err = FS.nodePermissions(lookup.node, "x"); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + }), + createDefaultDirectories: (function() { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }), + createDefaultDevices: (function() { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: (function() { + return 0; + }), + write: (function(stream, buffer, offset, length, pos) { + return length; + }) + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device; + if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") { + var randomBuffer = new Uint8Array(1); + random_device = (function() { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }); + } else if (ENVIRONMENT_IS_NODE) { + try { + var crypto_module = require("crypto"); + random_device = (function() { + return crypto_module["randomBytes"](1)[0]; + }); + } catch (e) {} + } else {} + if (!random_device) { + random_device = (function() { + abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); + }); + } + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }), + createSpecialDirectories: (function() { + FS.mkdir("/proc"); + FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: (function() { + var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: (function() { + return stream.path; + }) + } + }; + ret.parent = ret; + return ret; + }) + }; + return node; + }) + }, {}, "/proc/self/fd"); + }), + createStandardStreams: (function() { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", "r"); + var stdout = FS.open("/dev/stdout", "w"); + var stderr = FS.open("/dev/stderr", "w"); + assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")"); + assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")"); + assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")"); + }), + ensureErrnoError: (function() { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = (function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }); + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + if (this.stack) { + Object.defineProperty(this, "stack", { + value: (new Error).stack, + writable: true + }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error; + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach((function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + })); + }), + staticInit: (function() { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS, + "NODEFS": NODEFS + }; + }), + init: (function(input, output, error) { + assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }), + quit: (function() { + FS.init.initialized = false; + var fflush = Module["_fflush"]; + if (fflush) fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }), + getMode: (function(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }), + joinPath: (function(parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == "/") path = path.substr(1); + return path; + }), + absolutePath: (function(relative, base) { + return PATH_FS.resolve(base, relative); + }), + standardizePath: (function(path) { + return PATH.normalize(path); + }), + findObject: (function(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + }), + analyzePath: (function(path, dontResolveLastLink) { + try { + var lookup = FS.lookupPath(path, { + follow: !dontResolveLastLink + }); + path = lookup.path; + } catch (e) {} + var ret = { + isRoot: false, + exists: false, + error: 0, + name: null, + path: null, + object: null, + parentExists: false, + parentPath: null, + parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { + parent: true + }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { + follow: !dontResolveLastLink + }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === "/"; + } catch (e) { + ret.error = e.errno; + } + return ret; + }), + createFolder: (function(parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + }), + createPath: (function(parent, path, canRead, canWrite) { + parent = typeof parent === "string" ? parent : FS.getPath(parent); + var parts = path.split("/").reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) {} + parent = current; + } + return current; + }), + createFile: (function(parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }), + createDataFile: (function(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + FS.chmod(node, mode | 146); + var stream = FS.open(node, "w"); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + }), + createDevice: (function(parent, name, input, output) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: (function(stream) { + stream.seekable = false; + }), + close: (function(stream) { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }), + read: (function(stream, buffer, offset, length, pos) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }), + write: (function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }) + }); + return FS.mkdev(path, mode, dev); + }), + createLink: (function(parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + }), + forceLoadFile: (function(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + if (!success) ___setErrNo(29); + return success; + }), + createLazyFile: (function(parent, name, url, canRead, canWrite) { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest; + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || "", true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter((function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + })); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + console.log("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array; + Object.defineProperties(lazyArray, { + length: { + get: (function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + }) + }, + chunkSize: { + get: (function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + }) + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: (function() { + return this.contents.length; + }) + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach((function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + return fn.apply(null, arguments); + }; + })); + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + }), + createPreloadedFile: (function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module["preloadPlugins"].forEach((function(plugin) { + if (handled) return; + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, (function() { + if (onerror) onerror(); + removeRunDependency(dep); + })); + handled = true; + } + })); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + Browser.asyncLoad(url, (function(byteArray) { + processData(byteArray); + }), onerror); + } else { + processData(url); + } + }), + indexedDB: (function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }), + DB_NAME: (function() { + return "EM_FS_" + window.location.pathname; + }), + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (function(paths, onload, onerror) { + onload = onload || (function() {}); + onerror = onerror || (function() {}); + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach((function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = function putRequest_onerror() { + fail++; + if (ok + fail == total) finish(); + }; + })); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }), + loadFilesFromDB: (function(paths, onload, onerror) { + onload = onload || (function() {}); + onerror = onerror || (function() {}); + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach((function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { + fail++; + if (ok + fail == total) finish(); + }; + })); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }) +}; +Module["FS"] = FS; +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + mappings: {}, + umask: 511, + calculateAt: (function(dirfd, path) { + if (path[0] !== "/") { + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + }), + doStat: (function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + GROWABLE_HEAP_STORE_I32(buf | 0, stat.dev); + GROWABLE_HEAP_STORE_I32(buf + 4 | 0, 0); + GROWABLE_HEAP_STORE_I32(buf + 8 | 0, stat.ino); + GROWABLE_HEAP_STORE_I32(buf + 12 | 0, stat.mode); + GROWABLE_HEAP_STORE_I32(buf + 16 | 0, stat.nlink); + GROWABLE_HEAP_STORE_I32(buf + 20 | 0, stat.uid); + GROWABLE_HEAP_STORE_I32(buf + 24 | 0, stat.gid); + GROWABLE_HEAP_STORE_I32(buf + 28 | 0, stat.rdev); + GROWABLE_HEAP_STORE_I32(buf + 32 | 0, 0); + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(buf + 40 | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(buf + 44 | 0, tempI64[1]); + GROWABLE_HEAP_STORE_I32(buf + 48 | 0, 4096); + GROWABLE_HEAP_STORE_I32(buf + 52 | 0, stat.blocks); + GROWABLE_HEAP_STORE_I32(buf + 56 | 0, stat.atime.getTime() / 1e3 | 0); + GROWABLE_HEAP_STORE_I32(buf + 60 | 0, 0); + GROWABLE_HEAP_STORE_I32(buf + 64 | 0, stat.mtime.getTime() / 1e3 | 0); + GROWABLE_HEAP_STORE_I32(buf + 68 | 0, 0); + GROWABLE_HEAP_STORE_I32(buf + 72 | 0, stat.ctime.getTime() / 1e3 | 0); + GROWABLE_HEAP_STORE_I32(buf + 76 | 0, 0); + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(buf + 80 | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(buf + 84 | 0, tempI64[1]); + return 0; + }), + doMsync: (function(addr, stream, len, flags) { + var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); + FS.msync(stream, buffer, 0, len, flags); + }), + doMkdir: (function(path, mode) { + path = PATH.normalize(path); + if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); + FS.mkdir(path, mode, 0); + return 0; + }), + doMknod: (function(path, mode, dev) { + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: + return -28; + } + FS.mknod(path, mode, dev); + return 0; + }), + doReadlink: (function(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = GROWABLE_HEAP_LOAD_I8(buf + len | 0); + stringToUTF8(ret, buf, bufsize + 1); + GROWABLE_HEAP_STORE_I8(buf + len | 0, endChar); + return len; + }), + doAccess: (function(path, amode) { + if (amode & ~7) { + return -28; + } + var node; + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + }), + doDup: (function(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + }), + doReadv: (function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = GROWABLE_HEAP_LOAD_I32(iov + i * 8 | 0); + var len = GROWABLE_HEAP_LOAD_I32(iov + (i * 8 + 4) | 0); + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; + } + return ret; + }), + doWritev: (function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = GROWABLE_HEAP_LOAD_I32(iov + i * 8 | 0); + var len = GROWABLE_HEAP_LOAD_I32(iov + (i * 8 + 4) | 0); + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + }), + varargs: 0, + get: (function(varargs) { + SYSCALLS.varargs += 4; + var ret = GROWABLE_HEAP_LOAD_I32(SYSCALLS.varargs - 4 | 0); + return ret; + }), + getStr: (function() { + var ret = UTF8ToString(SYSCALLS.get()); + return ret; + }), + getStreamFromFD: (function(fd) { + if (fd === undefined) fd = SYSCALLS.get(); + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + }), + get64: (function() { + var low = SYSCALLS.get(), high = SYSCALLS.get(); + if (low >= 0) assert(high === 0); else assert(high === -1); + return low; + }), + getZero: (function() { + assert(SYSCALLS.get() === 0); + }) +}; +Module["SYSCALLS"] = SYSCALLS; +function ___syscall10(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(2, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(); + FS.unlink(path); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall10"] = ___syscall10; +function ___syscall12(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(3, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(); + FS.chdir(path); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall12"] = ___syscall12; +function ___syscall183(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(4, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var buf = SYSCALLS.get(), size = SYSCALLS.get(); + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd); + if (size < cwdLengthInBytes + 1) return -68; + stringToUTF8(cwd, buf, size); + return buf; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall183"] = ___syscall183; +function _memset(ptr, value, num) { + ptr = ptr | 0; + value = value | 0; + num = num | 0; + var end = 0, aligned_end = 0, block_aligned_end = 0, value4 = 0; + end = ptr + num | 0; + value = value & 255; + if ((num | 0) >= 67) { + while ((ptr & 3) != 0) { + GROWABLE_HEAP_STORE_I8(ptr >> 0 | 0, value); + ptr = ptr + 1 | 0; + } + aligned_end = end & -4 | 0; + value4 = value | value << 8 | value << 16 | value << 24; + block_aligned_end = aligned_end - 64 | 0; + while ((ptr | 0) <= (block_aligned_end | 0)) { + GROWABLE_HEAP_STORE_I32(ptr | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 4 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 8 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 12 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 16 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 20 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 24 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 28 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 32 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 36 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 40 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 44 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 48 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 52 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 56 | 0, value4); + GROWABLE_HEAP_STORE_I32(ptr + 60 | 0, value4); + ptr = ptr + 64 | 0; + } + while ((ptr | 0) < (aligned_end | 0)) { + GROWABLE_HEAP_STORE_I32(ptr | 0, value4); + ptr = ptr + 4 | 0; + } + } + while ((ptr | 0) < (end | 0)) { + GROWABLE_HEAP_STORE_I8(ptr >> 0 | 0, value); + ptr = ptr + 1 | 0; + } + return end - num | 0; +} +Module["_memset"] = _memset; +function __emscripten_syscall_mmap2(addr, len, prot, flags, fd, off) { + off <<= 12; + var ptr; + var allocated = false; + if ((flags & 16) !== 0 && addr % PAGE_SIZE !== 0) { + return -28; + } + if ((flags & 32) !== 0) { + ptr = _memalign(PAGE_SIZE, len); + if (!ptr) return -48; + _memset(ptr, 0, len); + allocated = true; + } else { + var info = FS.getStream(fd); + if (!info) return -8; + var res = FS.mmap(info, HEAPU8, addr, len, off, prot, flags); + ptr = res.ptr; + allocated = res.allocated; + } + SYSCALLS.mappings[ptr] = { + malloc: ptr, + len: len, + allocated: allocated, + fd: fd, + flags: flags + }; + return ptr; +} +Module["__emscripten_syscall_mmap2"] = __emscripten_syscall_mmap2; +function ___syscall192(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(5, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var addr = SYSCALLS.get(), len = SYSCALLS.get(), prot = SYSCALLS.get(), flags = SYSCALLS.get(), fd = SYSCALLS.get(), off = SYSCALLS.get(); + return __emscripten_syscall_mmap2(addr, len, prot, flags, fd, off); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall192"] = ___syscall192; +function ___syscall195(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(6, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall195"] = ___syscall195; +function ___syscall196(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(7, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.lstat, path, buf); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall196"] = ___syscall196; +function ___syscall220(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(8, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), dirp = SYSCALLS.get(), count = SYSCALLS.get(); + if (!stream.getdents) { + stream.getdents = FS.readdir(stream.path); + } + var struct_size = 280; + var pos = 0; + var off = FS.llseek(stream, 0, 1); + var idx = Math.floor(off / struct_size); + while (idx < stream.getdents.length && pos + struct_size <= count) { + var id; + var type; + var name = stream.getdents[idx]; + if (name[0] === ".") { + id = 1; + type = 4; + } else { + var child = FS.lookupNode(stream.node, name); + id = child.id; + type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8; + } + tempI64 = [ id >>> 0, (tempDouble = id, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(dirp + pos | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(dirp + pos + 4 | 0, tempI64[1]); + tempI64 = [ (idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(dirp + pos + 8 | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(dirp + pos + 12 | 0, tempI64[1]); + GROWABLE_HEAP_STORE_I16(dirp + pos + 16 | 0, 280); + GROWABLE_HEAP_STORE_I8(dirp + pos + 18 >> 0 | 0, type); + stringToUTF8(name, dirp + pos + 19, 256); + pos += struct_size; + idx += 1; + } + FS.llseek(stream, idx * struct_size, 0); + return pos; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall220"] = ___syscall220; +function ___syscall221(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(9, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; + case 3: + return stream.flags; + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + { + var arg = SYSCALLS.get(); + var offset = 0; + GROWABLE_HEAP_STORE_I16(arg + offset | 0, 2); + return 0; + } + case 13: + case 14: + return 0; + case 16: + case 8: + return -28; + case 9: + ___setErrNo(28); + return -1; + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall221"] = ___syscall221; +function ___syscall3(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(10, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(), count = SYSCALLS.get(); + return FS.read(stream, HEAP8, buf, count); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall3"] = ___syscall3; +function ___syscall39(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(11, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(), mode = SYSCALLS.get(); + return SYSCALLS.doMkdir(path, mode); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall39"] = ___syscall39; +function ___syscall4(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(12, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(), count = SYSCALLS.get(); + return FS.write(stream, HEAP8, buf, count); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall4"] = ___syscall4; +function ___syscall40(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(13, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(); + FS.rmdir(path); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall40"] = ___syscall40; +function ___syscall5(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(14, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get(); + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall5"] = ___syscall5; +function ___syscall54(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(15, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + GROWABLE_HEAP_STORE_I32(argp | 0, 0); + return 0; + } + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + default: + abort("bad ioctl syscall " + op); + } + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall54"] = ___syscall54; +function ___syscall85(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(16, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var path = SYSCALLS.getStr(), buf = SYSCALLS.get(), bufsize = SYSCALLS.get(); + return SYSCALLS.doReadlink(path, buf, bufsize); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall85"] = ___syscall85; +function __emscripten_syscall_munmap(addr, len) { + if (addr === -1 || len === 0) { + return -28; + } + var info = SYSCALLS.mappings[addr]; + if (!info) return 0; + if (len === info.len) { + var stream = FS.getStream(info.fd); + SYSCALLS.doMsync(addr, stream, len, info.flags); + FS.munmap(stream); + SYSCALLS.mappings[addr] = null; + if (info.allocated) { + _free(info.malloc); + } + } + return 0; +} +Module["__emscripten_syscall_munmap"] = __emscripten_syscall_munmap; +function ___syscall91(which, varargs) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(17, 1, which, varargs); + SYSCALLS.varargs = varargs; + try { + var addr = SYSCALLS.get(), len = SYSCALLS.get(); + return __emscripten_syscall_munmap(addr, len); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } +} +Module["___syscall91"] = ___syscall91; +function ___unlock() {} +Module["___unlock"] = ___unlock; +function _abort() { + abort(); +} +Module["_abort"] = _abort; +function _emscripten_check_blocking_allowed() { + assert(ENVIRONMENT_IS_WEB); + warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread"); +} +Module["_emscripten_check_blocking_allowed"] = _emscripten_check_blocking_allowed; +function _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {} +Module["_emscripten_conditional_set_current_thread_status_js"] = _emscripten_conditional_set_current_thread_status_js; +function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) { + expectedStatus = expectedStatus | 0; + newStatus = newStatus | 0; +} +Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status; +function _emscripten_futex_wait(addr, val, timeout) { + if (addr <= 0 || addr > HEAP8.length || addr & 3 != 0) return -28; + if (ENVIRONMENT_IS_WORKER) { + var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout); + if (ret === "timed-out") return -73; + if (ret === "not-equal") return -6; + if (ret === "ok") return 0; + throw "Atomics.wait returned an unexpected value " + ret; + } else { + var loadedVal = Atomics.load(HEAP32, addr >> 2); + if (val != loadedVal) return -6; + var tNow = performance.now(); + var tEnd = tNow + timeout; + Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr); + var ourWaitAddress = addr; + while (addr == ourWaitAddress) { + tNow = performance.now(); + if (tNow > tEnd) { + return -73; + } + _emscripten_main_thread_process_queued_calls(); + addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); + } + return 0; + } +} +Module["_emscripten_futex_wait"] = _emscripten_futex_wait; +function _emscripten_get_heap_size() { + return HEAP8.length; +} +Module["_emscripten_get_heap_size"] = _emscripten_get_heap_size; +function _emscripten_get_sbrk_ptr() { + return 12594960; +} +Module["_emscripten_get_sbrk_ptr"] = _emscripten_get_sbrk_ptr; +function _emscripten_has_threading_support() { + return typeof SharedArrayBuffer !== "undefined"; +} +Module["_emscripten_has_threading_support"] = _emscripten_has_threading_support; +function _emscripten_is_main_browser_thread() { + return __pthread_is_main_browser_thread | 0; +} +Module["_emscripten_is_main_browser_thread"] = _emscripten_is_main_browser_thread; +function _emscripten_is_main_runtime_thread() { + return __pthread_is_main_runtime_thread | 0; +} +Module["_emscripten_is_main_runtime_thread"] = _emscripten_is_main_runtime_thread; +var setjmpId = 0; +Module["setjmpId"] = setjmpId; +function _saveSetjmp(env, label, table, size) { + env = env | 0; + label = label | 0; + table = table | 0; + size = size | 0; + var i = 0; + setjmpId = setjmpId + 1 | 0; + GROWABLE_HEAP_STORE_I32(env | 0, setjmpId); + while ((i | 0) < (size | 0)) { + if ((GROWABLE_HEAP_LOAD_I32(table + (i << 3) | 0) | 0) == 0) { + GROWABLE_HEAP_STORE_I32(table + (i << 3) | 0, setjmpId); + GROWABLE_HEAP_STORE_I32(table + ((i << 3) + 4) | 0, label); + GROWABLE_HEAP_STORE_I32(table + ((i << 3) + 8) | 0, 0); + setTempRet0(size | 0); + return table | 0; + } + i = i + 1 | 0; + } + size = size * 2 | 0; + table = _realloc(table | 0, 8 * (size + 1 | 0) | 0) | 0; + table = _saveSetjmp(env | 0, label | 0, table | 0, size | 0) | 0; + setTempRet0(size | 0); + return table | 0; +} +Module["_saveSetjmp"] = _saveSetjmp; +function _testSetjmp(id, table, size) { + id = id | 0; + table = table | 0; + size = size | 0; + var i = 0, curr = 0; + while ((i | 0) < (size | 0)) { + curr = GROWABLE_HEAP_LOAD_I32(table + (i << 3) | 0) | 0; + if ((curr | 0) == 0) break; + if ((curr | 0) == (id | 0)) { + return GROWABLE_HEAP_LOAD_I32(table + ((i << 3) + 4) | 0) | 0; + } + i = i + 1 | 0; + } + return 0; +} +Module["_testSetjmp"] = _testSetjmp; +function _longjmp(env, value) { + _setThrew(env, value || 1); + throw "longjmp"; +} +Module["_longjmp"] = _longjmp; +function _emscripten_longjmp(env, value) { + _longjmp(env, value); +} +Module["_emscripten_longjmp"] = _emscripten_longjmp; +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src + num), dest); +} +Module["_emscripten_memcpy_big"] = _emscripten_memcpy_big; +function _emscripten_proxy_to_main_thread_js(index, sync) { + var numCallArgs = arguments.length - 2; + if (numCallArgs > 20 - 1) throw "emscripten_proxy_to_main_thread_js: Too many arguments " + numCallArgs + " to proxied function idx=" + index + ", maximum supported is " + (20 - 1) + "!"; + var stack = stackSave(); + var args = stackAlloc(numCallArgs * 8); + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + GROWABLE_HEAP_STORE_F64((b + i) * 8 | 0, arguments[2 + i]); + } + var ret = _emscripten_run_in_main_runtime_thread_js(index, numCallArgs, args, sync); + stackRestore(stack); + return ret; +} +Module["_emscripten_proxy_to_main_thread_js"] = _emscripten_proxy_to_main_thread_js; +var _emscripten_receive_on_main_thread_js_callArgs = []; +Module["_emscripten_receive_on_main_thread_js_callArgs"] = _emscripten_receive_on_main_thread_js_callArgs; +function _emscripten_receive_on_main_thread_js(index, numCallArgs, args) { + _emscripten_receive_on_main_thread_js_callArgs.length = numCallArgs; + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + _emscripten_receive_on_main_thread_js_callArgs[i] = GROWABLE_HEAP_LOAD_F64((b + i) * 8 | 0); + } + var isEmAsmConst = index < 0; + var func = !isEmAsmConst ? proxiedFunctionTable[index] : ASM_CONSTS[-index - 1]; + if (isEmAsmConst) { + var sigPtr = _emscripten_receive_on_main_thread_js_callArgs[1]; + var varargPtr = _emscripten_receive_on_main_thread_js_callArgs[2]; + var constArgs = readAsmConstArgs(sigPtr, varargPtr); + return func.apply(null, constArgs); + } + assert(func.length == numCallArgs, "Call args mismatch in emscripten_receive_on_main_thread_js"); + return func.apply(null, _emscripten_receive_on_main_thread_js_callArgs); +} +Module["_emscripten_receive_on_main_thread_js"] = _emscripten_receive_on_main_thread_js; +function abortOnCannotGrowMemory(requestedSize) { + abort("Cannot enlarge memory arrays to size " + requestedSize + " bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + HEAP8.length + ", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "); +} +Module["abortOnCannotGrowMemory"] = abortOnCannotGrowMemory; +function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + console.error("emscripten_realloc_buffer: Attempted to grow heap from " + buffer.byteLength + " bytes to " + size + " bytes, but got error: " + e); + } +} +Module["emscripten_realloc_buffer"] = emscripten_realloc_buffer; +function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + if (requestedSize <= oldSize) { + return false; + } + var PAGE_MULTIPLE = 65536; + var LIMIT = 2147483648 - PAGE_MULTIPLE; + if (requestedSize > LIMIT) { + err("Cannot enlarge memory, asked to go up to " + requestedSize + " bytes, but the limit is " + LIMIT + " bytes!"); + return false; + } + var MIN_TOTAL_MEMORY = 16777216; + var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY); + while (newSize < requestedSize) { + if (newSize <= 536870912) { + newSize = alignUp(2 * newSize, PAGE_MULTIPLE); + } else { + newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT); + } + if (newSize === oldSize) { + warnOnce("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only " + HEAP8.length); + } + } + newSize = Math.min(newSize, 1073741824); + if (newSize == oldSize) { + err("Failed to grow the heap from " + oldSize + ", as we reached the WASM_MEM_MAX limit (" + 1073741824 + ") set during compilation"); + return false; + } + var replacement = emscripten_realloc_buffer(newSize); + if (!replacement) { + err("Failed to grow the heap from " + oldSize + " bytes to " + newSize + " bytes, not enough memory!"); + return false; + } + return true; +} +Module["_emscripten_resize_heap"] = _emscripten_resize_heap; +var JSEvents = { + keyEvent: 0, + mouseEvent: 0, + wheelEvent: 0, + uiEvent: 0, + focusEvent: 0, + deviceOrientationEvent: 0, + deviceMotionEvent: 0, + fullscreenChangeEvent: 0, + pointerlockChangeEvent: 0, + visibilityChangeEvent: 0, + touchEvent: 0, + previousFullscreenElement: null, + previousScreenX: null, + previousScreenY: null, + removeEventListenersRegistered: false, + removeAllEventListeners: (function() { + for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) { + JSEvents._removeHandler(i); + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = []; + }), + registerRemoveEventListeners: (function() { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true; + } + }), + deferredCalls: [], + deferCall: (function(targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) return false; + for (var i in arrA) { + if (arrA[i] != arrB[i]) return false; + } + return true; + } + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { + return; + } + } + JSEvents.deferredCalls.push({ + targetFunction: targetFunction, + precedence: precedence, + argsList: argsList + }); + JSEvents.deferredCalls.sort((function(x, y) { + return x.precedence < y.precedence; + })); + }), + removeDeferredCalls: (function(targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i; + } + } + }), + canPerformEventHandlerRequests: (function() { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; + }), + runDeferredCalls: (function() { + if (!JSEvents.canPerformEventHandlerRequests()) { + return; + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(this, call.argsList); + } + }), + inEventHandler: 0, + currentEventHandler: null, + eventHandlers: [], + isInternetExplorer: (function() { + return navigator.userAgent.indexOf("MSIE") !== -1 || navigator.appVersion.indexOf("Trident/") > 0; + }), + removeAllHandlersOnTarget: (function(target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { + JSEvents._removeHandler(i--); + } + } + }), + _removeHandler: (function(i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1); + }), + registerOrRemoveHandler: (function(eventHandler) { + var jsEventHandler = function jsEventHandler(event) { + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + JSEvents.runDeferredCalls(); + eventHandler.handlerFunc(event); + JSEvents.runDeferredCalls(); + --JSEvents.inEventHandler; + }; + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners(); + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { + JSEvents._removeHandler(i--); + } + } + } + }), + queueEventHandlerOnThread_iiii: (function(targetThread, eventHandlerFunc, eventTypeId, eventData, userData) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + GROWABLE_HEAP_STORE_I32(varargs | 0, eventTypeId); + GROWABLE_HEAP_STORE_I32(varargs + 4 | 0, eventData); + GROWABLE_HEAP_STORE_I32(varargs + 8 | 0, userData); + _emscripten_async_queue_on_thread_(targetThread, 637534208, eventHandlerFunc, eventData, varargs); + stackRestore(stackTop); + }), + getTargetThreadForEventCallback: (function(targetThread) { + switch (targetThread) { + case 1: + return 0; + case 2: + return PThread.currentProxiedOperationCallerThread; + default: + return targetThread; + } + }), + getBoundingClientRectOrZeros: (function(target) { + return target.getBoundingClientRect ? target.getBoundingClientRect() : { + left: 0, + top: 0 + }; + }), + getNodeNameForTarget: (function(target) { + if (!target) return ""; + if (target == window) return "#window"; + if (target == screen) return "#screen"; + return target && target.nodeName ? target.nodeName : ""; + }), + tick: (function() { + if (window["performance"] && window["performance"]["now"]) return window["performance"]["now"](); else return Date.now(); + }), + fullscreenEnabled: (function() { + return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled; + }) +}; +Module["JSEvents"] = JSEvents; +function stringToNewUTF8(jsString) { + var length = lengthBytesUTF8(jsString) + 1; + var cString = _malloc(length); + stringToUTF8(jsString, cString, length); + return cString; +} +Module["stringToNewUTF8"] = stringToNewUTF8; +function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + var targetCanvasPtr = 0; + if (targetCanvas) { + targetCanvasPtr = stringToNewUTF8(targetCanvas); + } + GROWABLE_HEAP_STORE_I32(varargs | 0, targetCanvasPtr); + GROWABLE_HEAP_STORE_I32(varargs + 4 | 0, width); + GROWABLE_HEAP_STORE_I32(varargs + 8 | 0, height); + _emscripten_async_queue_on_thread_(targetThread, 657457152, 0, targetCanvasPtr, varargs); + stackRestore(stackTop); +} +Module["_emscripten_set_offscreencanvas_size_on_target_thread_js"] = _emscripten_set_offscreencanvas_size_on_target_thread_js; +function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, targetCanvas, width, height) { + targetCanvas = targetCanvas ? UTF8ToString(targetCanvas) : ""; + _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height); +} +Module["_emscripten_set_offscreencanvas_size_on_target_thread"] = _emscripten_set_offscreencanvas_size_on_target_thread; +var __specialEventTargets = [ 0, typeof document !== "undefined" ? document : 0, typeof window !== "undefined" ? window : 0 ]; +Module["__specialEventTargets"] = __specialEventTargets; +function __findEventTarget(target) { + warnOnce("Rules for selecting event targets in HTML5 API are changing: instead of using document.getElementById() that only can refer to elements by their DOM ID, new event target selection mechanism uses the more flexible function document.querySelector() that can look up element names, classes, and complex CSS selectors. Build with -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 to change to the new lookup rules. See https://github.com/emscripten-core/emscripten/pull/7977 for more details."); + try { + if (!target) return window; + if (typeof target === "number") target = __specialEventTargets[target] || UTF8ToString(target); + if (target === "#window") return window; else if (target === "#document") return document; else if (target === "#screen") return screen; else if (target === "#canvas") return Module["canvas"]; + return typeof target === "string" ? document.getElementById(target) : target; + } catch (e) { + return null; + } +} +Module["__findEventTarget"] = __findEventTarget; +function __findCanvasEventTarget(target) { + if (typeof target === "number") target = UTF8ToString(target); + if (!target || target === "#canvas") { + if (typeof GL !== "undefined" && GL.offscreenCanvases["canvas"]) return GL.offscreenCanvases["canvas"]; + return Module["canvas"]; + } + if (typeof GL !== "undefined" && GL.offscreenCanvases[target]) return GL.offscreenCanvases[target]; + return __findEventTarget(target); +} +Module["__findCanvasEventTarget"] = __findCanvasEventTarget; +function _emscripten_set_canvas_element_size_calling_thread(target, width, height) { + var canvas = __findCanvasEventTarget(target); + if (!canvas) return -4; + if (canvas.canvasSharedPtr) { + GROWABLE_HEAP_STORE_I32(canvas.canvasSharedPtr | 0, width); + GROWABLE_HEAP_STORE_I32(canvas.canvasSharedPtr + 4 | 0, height); + } + if (canvas.offscreenCanvas || !canvas.controlTransferredOffscreen) { + if (canvas.offscreenCanvas) canvas = canvas.offscreenCanvas; + var autoResizeViewport = false; + if (canvas.GLctxObject && canvas.GLctxObject.GLctx) { + var prevViewport = canvas.GLctxObject.GLctx.getParameter(canvas.GLctxObject.GLctx.VIEWPORT); + autoResizeViewport = prevViewport[0] === 0 && prevViewport[1] === 0 && prevViewport[2] === canvas.width && prevViewport[3] === canvas.height; + } + canvas.width = width; + canvas.height = height; + if (autoResizeViewport) { + canvas.GLctxObject.GLctx.viewport(0, 0, width, height); + } + } else if (canvas.canvasSharedPtr) { + var targetThread = GROWABLE_HEAP_LOAD_I32(canvas.canvasSharedPtr + 8 | 0); + _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, target, width, height); + return 1; + } else { + return -4; + } + return 0; +} +Module["_emscripten_set_canvas_element_size_calling_thread"] = _emscripten_set_canvas_element_size_calling_thread; +function _emscripten_set_canvas_element_size_main_thread(target, width, height) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(18, 1, target, width, height); + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); +} +Module["_emscripten_set_canvas_element_size_main_thread"] = _emscripten_set_canvas_element_size_main_thread; +function _emscripten_set_canvas_element_size(target, width, height) { + var canvas = __findCanvasEventTarget(target); + if (canvas) { + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); + } else { + return _emscripten_set_canvas_element_size_main_thread(target, width, height); + } +} +Module["_emscripten_set_canvas_element_size"] = _emscripten_set_canvas_element_size; +function _emscripten_set_current_thread_status_js(newStatus) {} +Module["_emscripten_set_current_thread_status_js"] = _emscripten_set_current_thread_status_js; +function _emscripten_set_current_thread_status(newStatus) { + newStatus = newStatus | 0; +} +Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status; +function _emscripten_set_thread_name_js(threadId, name) {} +Module["_emscripten_set_thread_name_js"] = _emscripten_set_thread_name_js; +function _emscripten_set_thread_name(threadId, name) { + threadId = threadId | 0; + name = name | 0; +} +Module["_emscripten_set_thread_name"] = _emscripten_set_thread_name; +function _emscripten_syscall(which, varargs) { + switch (which) { + case 10: + return ___syscall10(which, varargs); + case 12: + return ___syscall12(which, varargs); + case 183: + return ___syscall183(which, varargs); + case 192: + return ___syscall192(which, varargs); + case 195: + return ___syscall195(which, varargs); + case 196: + return ___syscall196(which, varargs); + case 220: + return ___syscall220(which, varargs); + case 221: + return ___syscall221(which, varargs); + case 3: + return ___syscall3(which, varargs); + case 39: + return ___syscall39(which, varargs); + case 4: + return ___syscall4(which, varargs); + case 40: + return ___syscall40(which, varargs); + case 5: + return ___syscall5(which, varargs); + case 54: + return ___syscall54(which, varargs); + case 85: + return ___syscall85(which, varargs); + case 91: + return ___syscall91(which, varargs); + default: + throw "surprising proxied syscall: " + which; + } +} +Module["_emscripten_syscall"] = _emscripten_syscall; +var __emscripten_webgl_power_preferences = [ "default", "low-power", "high-performance" ]; +Module["__emscripten_webgl_power_preferences"] = __emscripten_webgl_power_preferences; +var GL = { + counter: 1, + lastError: 0, + buffers: [], + mappedBuffers: {}, + programs: [], + framebuffers: [], + renderbuffers: [], + textures: [], + uniforms: [], + shaders: [], + vaos: [], + contexts: {}, + currentContext: null, + offscreenCanvases: {}, + timerQueriesEXT: [], + programInfos: {}, + stringCache: {}, + unpackAlignment: 4, + init: (function() { + GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE); + for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) { + GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i + 1); + } + }), + recordError: function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode; + } + }, + getNewId: (function(table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null; + } + return ret; + }), + MINI_TEMP_BUFFER_SIZE: 256, + miniTempBuffer: null, + miniTempBufferViews: [ 0 ], + getSource: (function(shader, count, string, length) { + var source = ""; + for (var i = 0; i < count; ++i) { + var len = length ? GROWABLE_HEAP_LOAD_I32(length + i * 4 | 0) : -1; + source += UTF8ToString(GROWABLE_HEAP_LOAD_I32(string + i * 4 | 0), len < 0 ? undefined : len); + } + return source; + }), + createContext: (function(canvas, webGLContextAttributes) { + var ctx = canvas.getContext("webgl", webGLContextAttributes) || canvas.getContext("experimental-webgl", webGLContextAttributes); + if (!ctx) return 0; + var handle = GL.registerContext(ctx, webGLContextAttributes); + return handle; + }), + registerContext: (function(ctx, webGLContextAttributes) { + var handle = _malloc(8); + GROWABLE_HEAP_STORE_I32(handle + 4 | 0, _pthread_self()); + var context = { + handle: handle, + attributes: webGLContextAttributes, + version: webGLContextAttributes.majorVersion, + GLctx: ctx + }; + if (ctx.canvas) ctx.canvas.GLctxObject = context; + GL.contexts[handle] = context; + if (typeof webGLContextAttributes.enableExtensionsByDefault === "undefined" || webGLContextAttributes.enableExtensionsByDefault) { + GL.initExtensions(context); + } + return handle; + }), + makeContextCurrent: (function(contextHandle) { + GL.currentContext = GL.contexts[contextHandle]; + Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; + return !(contextHandle && !GLctx); + }), + getContext: (function(contextHandle) { + return GL.contexts[contextHandle]; + }), + deleteContext: (function(contextHandle) { + if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null; + if (typeof JSEvents === "object") JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); + if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; + _free(GL.contexts[contextHandle]); + GL.contexts[contextHandle] = null; + }), + acquireInstancedArraysExtension: (function(ctx) { + var ext = ctx.getExtension("ANGLE_instanced_arrays"); + if (ext) { + ctx["vertexAttribDivisor"] = (function(index, divisor) { + ext["vertexAttribDivisorANGLE"](index, divisor); + }); + ctx["drawArraysInstanced"] = (function(mode, first, count, primcount) { + ext["drawArraysInstancedANGLE"](mode, first, count, primcount); + }); + ctx["drawElementsInstanced"] = (function(mode, count, type, indices, primcount) { + ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount); + }); + } + }), + acquireVertexArrayObjectExtension: (function(ctx) { + var ext = ctx.getExtension("OES_vertex_array_object"); + if (ext) { + ctx["createVertexArray"] = (function() { + return ext["createVertexArrayOES"](); + }); + ctx["deleteVertexArray"] = (function(vao) { + ext["deleteVertexArrayOES"](vao); + }); + ctx["bindVertexArray"] = (function(vao) { + ext["bindVertexArrayOES"](vao); + }); + ctx["isVertexArray"] = (function(vao) { + return ext["isVertexArrayOES"](vao); + }); + } + }), + acquireDrawBuffersExtension: (function(ctx) { + var ext = ctx.getExtension("WEBGL_draw_buffers"); + if (ext) { + ctx["drawBuffers"] = (function(n, bufs) { + ext["drawBuffersWEBGL"](n, bufs); + }); + } + }), + initExtensions: (function(context) { + if (!context) context = GL.currentContext; + if (context.initExtensionsDone) return; + context.initExtensionsDone = true; + var GLctx = context.GLctx; + if (context.version < 2) { + GL.acquireInstancedArraysExtension(GLctx); + GL.acquireVertexArrayObjectExtension(GLctx); + GL.acquireDrawBuffersExtension(GLctx); + } + GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query"); + var automaticallyEnabledExtensions = [ "OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", "WEBKIT_WEBGL_compressed_texture_pvrtc" ]; + function shouldEnableAutomatically(extension) { + var ret = false; + automaticallyEnabledExtensions.forEach((function(include) { + if (extension.indexOf(include) != -1) { + ret = true; + } + })); + return ret; + } + var exts = GLctx.getSupportedExtensions() || []; + exts.forEach((function(ext) { + if (automaticallyEnabledExtensions.indexOf(ext) != -1) { + GLctx.getExtension(ext); + } + })); + }), + populateUniformTable: (function(program) { + var p = GL.programs[program]; + var ptable = GL.programInfos[program] = { + uniforms: {}, + maxUniformLength: 0, + maxAttributeLength: -1, + maxUniformBlockNameLength: -1 + }; + var utable = ptable.uniforms; + var numUniforms = GLctx.getProgramParameter(p, 35718); + for (var i = 0; i < numUniforms; ++i) { + var u = GLctx.getActiveUniform(p, i); + var name = u.name; + ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1); + if (name.slice(-1) == "]") { + name = name.slice(0, name.lastIndexOf("[")); + } + var loc = GLctx.getUniformLocation(p, name); + if (loc) { + var id = GL.getNewId(GL.uniforms); + utable[name] = [ u.size, id ]; + GL.uniforms[id] = loc; + for (var j = 1; j < u.size; ++j) { + var n = name + "[" + j + "]"; + loc = GLctx.getUniformLocation(p, n); + id = GL.getNewId(GL.uniforms); + GL.uniforms[id] = loc; + } + } + } + }) +}; +Module["GL"] = GL; +function _emscripten_webgl_do_create_context(target, attributes) { + assert(attributes); + var contextAttributes = {}; + var a = attributes >> 2; + contextAttributes["alpha"] = !!GROWABLE_HEAP_LOAD_I32((a + (0 >> 2)) * 4 | 0); + contextAttributes["depth"] = !!GROWABLE_HEAP_LOAD_I32((a + (4 >> 2)) * 4 | 0); + contextAttributes["stencil"] = !!GROWABLE_HEAP_LOAD_I32((a + (8 >> 2)) * 4 | 0); + contextAttributes["antialias"] = !!GROWABLE_HEAP_LOAD_I32((a + (12 >> 2)) * 4 | 0); + contextAttributes["premultipliedAlpha"] = !!GROWABLE_HEAP_LOAD_I32((a + (16 >> 2)) * 4 | 0); + contextAttributes["preserveDrawingBuffer"] = !!GROWABLE_HEAP_LOAD_I32((a + (20 >> 2)) * 4 | 0); + var powerPreference = GROWABLE_HEAP_LOAD_I32((a + (24 >> 2)) * 4 | 0); + contextAttributes["powerPreference"] = __emscripten_webgl_power_preferences[powerPreference]; + contextAttributes["failIfMajorPerformanceCaveat"] = !!GROWABLE_HEAP_LOAD_I32((a + (28 >> 2)) * 4 | 0); + contextAttributes.majorVersion = GROWABLE_HEAP_LOAD_I32((a + (32 >> 2)) * 4 | 0); + contextAttributes.minorVersion = GROWABLE_HEAP_LOAD_I32((a + (36 >> 2)) * 4 | 0); + contextAttributes.enableExtensionsByDefault = GROWABLE_HEAP_LOAD_I32((a + (40 >> 2)) * 4 | 0); + contextAttributes.explicitSwapControl = GROWABLE_HEAP_LOAD_I32((a + (44 >> 2)) * 4 | 0); + contextAttributes.proxyContextToMainThread = GROWABLE_HEAP_LOAD_I32((a + (48 >> 2)) * 4 | 0); + contextAttributes.renderViaOffscreenBackBuffer = GROWABLE_HEAP_LOAD_I32((a + (52 >> 2)) * 4 | 0); + var canvas = __findCanvasEventTarget(target); + if (!canvas) { + return 0; + } + if (contextAttributes.explicitSwapControl) { + return 0; + } + var contextHandle = GL.createContext(canvas, contextAttributes); + return contextHandle; +} +Module["_emscripten_webgl_do_create_context"] = _emscripten_webgl_do_create_context; +function _emscripten_webgl_create_context(a0, a1) { + return _emscripten_webgl_do_create_context(a0, a1); +} +Module["_emscripten_webgl_create_context"] = _emscripten_webgl_create_context; +var ENV = {}; +Module["ENV"] = ENV; +function _emscripten_get_environ() { + if (!_emscripten_get_environ.strings) { + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + "_": thisProgram + }; + for (var x in ENV) { + env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + _emscripten_get_environ.strings = strings; + } + return _emscripten_get_environ.strings; +} +Module["_emscripten_get_environ"] = _emscripten_get_environ; +function _environ_get(__environ, environ_buf) { + var strings = _emscripten_get_environ(); + var bufSize = 0; + strings.forEach((function(string, i) { + var ptr = environ_buf + bufSize; + GROWABLE_HEAP_STORE_I32(__environ + i * 4 | 0, ptr); + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + })); + return 0; +} +Module["_environ_get"] = _environ_get; +function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = _emscripten_get_environ(); + GROWABLE_HEAP_STORE_I32(penviron_count | 0, strings.length); + var bufSize = 0; + strings.forEach((function(string) { + bufSize += string.length + 1; + })); + GROWABLE_HEAP_STORE_I32(penviron_buf_size | 0, bufSize); + return 0; +} +Module["_environ_sizes_get"] = _environ_sizes_get; +function _exit(status) { + exit(status); +} +Module["_exit"] = _exit; +function _fd_close(fd) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(19, 1, fd); + try { + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } +} +Module["_fd_close"] = _fd_close; +function _fd_read(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(20, 1, fd, iov, iovcnt, pnum); + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doReadv(stream, iov, iovcnt); + GROWABLE_HEAP_STORE_I32(pnum | 0, num); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } +} +Module["_fd_read"] = _fd_read; +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(21, 1, fd, offset_low, offset_high, whence, newOffset); + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 4294967296; + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + var DOUBLE_LIMIT = 9007199254740992; + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], GROWABLE_HEAP_STORE_I32(newOffset | 0, tempI64[0]), GROWABLE_HEAP_STORE_I32(newOffset + 4 | 0, tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } +} +Module["_fd_seek"] = _fd_seek; +function _fd_write(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(22, 1, fd, iov, iovcnt, pnum); + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + GROWABLE_HEAP_STORE_I32(pnum | 0, num); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } +} +Module["_fd_write"] = _fd_write; +function _getTempRet0() { + return getTempRet0() | 0; +} +Module["_getTempRet0"] = _getTempRet0; +function _gettimeofday(ptr) { + var now = Date.now(); + GROWABLE_HEAP_STORE_I32(ptr | 0, now / 1e3 | 0); + GROWABLE_HEAP_STORE_I32(ptr + 4 | 0, now % 1e3 * 1e3 | 0); + return 0; +} +Module["_gettimeofday"] = _gettimeofday; +var ___tm_current = 12594976; +Module["___tm_current"] = ___tm_current; +var ___tm_timezone = (stringToUTF8("GMT", 12595024, 4), 12595024); +Module["___tm_timezone"] = ___tm_timezone; +function _gmtime_r(time, tmPtr) { + var date = new Date(GROWABLE_HEAP_LOAD_I32(time | 0) * 1e3); + GROWABLE_HEAP_STORE_I32(tmPtr | 0, date.getUTCSeconds()); + GROWABLE_HEAP_STORE_I32(tmPtr + 4 | 0, date.getUTCMinutes()); + GROWABLE_HEAP_STORE_I32(tmPtr + 8 | 0, date.getUTCHours()); + GROWABLE_HEAP_STORE_I32(tmPtr + 12 | 0, date.getUTCDate()); + GROWABLE_HEAP_STORE_I32(tmPtr + 16 | 0, date.getUTCMonth()); + GROWABLE_HEAP_STORE_I32(tmPtr + 20 | 0, date.getUTCFullYear() - 1900); + GROWABLE_HEAP_STORE_I32(tmPtr + 24 | 0, date.getUTCDay()); + GROWABLE_HEAP_STORE_I32(tmPtr + 36 | 0, 0); + GROWABLE_HEAP_STORE_I32(tmPtr + 32 | 0, 0); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + GROWABLE_HEAP_STORE_I32(tmPtr + 28 | 0, yday); + GROWABLE_HEAP_STORE_I32(tmPtr + 40 | 0, ___tm_timezone); + return tmPtr; +} +Module["_gmtime_r"] = _gmtime_r; +function _gmtime(time) { + return _gmtime_r(time, ___tm_current); +} +Module["_gmtime"] = _gmtime; +function _memcpy(dest, src, num) { + dest = dest | 0; + src = src | 0; + num = num | 0; + var ret = 0; + var aligned_dest_end = 0; + var block_aligned_dest_end = 0; + var dest_end = 0; + if ((num | 0) >= 8192) { + _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0; + return dest | 0; + } + ret = dest | 0; + dest_end = dest + num | 0; + if ((dest & 3) == (src & 3)) { + while (dest & 3) { + if ((num | 0) == 0) return ret | 0; + GROWABLE_HEAP_STORE_I8(dest >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src >> 0 | 0) | 0); + dest = dest + 1 | 0; + src = src + 1 | 0; + num = num - 1 | 0; + } + aligned_dest_end = dest_end & -4 | 0; + block_aligned_dest_end = aligned_dest_end - 64 | 0; + while ((dest | 0) <= (block_aligned_dest_end | 0)) { + GROWABLE_HEAP_STORE_I32(dest | 0, GROWABLE_HEAP_LOAD_I32(src | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 4 | 0, GROWABLE_HEAP_LOAD_I32(src + 4 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 8 | 0, GROWABLE_HEAP_LOAD_I32(src + 8 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 12 | 0, GROWABLE_HEAP_LOAD_I32(src + 12 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 16 | 0, GROWABLE_HEAP_LOAD_I32(src + 16 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 20 | 0, GROWABLE_HEAP_LOAD_I32(src + 20 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 24 | 0, GROWABLE_HEAP_LOAD_I32(src + 24 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 28 | 0, GROWABLE_HEAP_LOAD_I32(src + 28 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 32 | 0, GROWABLE_HEAP_LOAD_I32(src + 32 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 36 | 0, GROWABLE_HEAP_LOAD_I32(src + 36 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 40 | 0, GROWABLE_HEAP_LOAD_I32(src + 40 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 44 | 0, GROWABLE_HEAP_LOAD_I32(src + 44 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 48 | 0, GROWABLE_HEAP_LOAD_I32(src + 48 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 52 | 0, GROWABLE_HEAP_LOAD_I32(src + 52 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 56 | 0, GROWABLE_HEAP_LOAD_I32(src + 56 | 0) | 0); + GROWABLE_HEAP_STORE_I32(dest + 60 | 0, GROWABLE_HEAP_LOAD_I32(src + 60 | 0) | 0); + dest = dest + 64 | 0; + src = src + 64 | 0; + } + while ((dest | 0) < (aligned_dest_end | 0)) { + GROWABLE_HEAP_STORE_I32(dest | 0, GROWABLE_HEAP_LOAD_I32(src | 0) | 0); + dest = dest + 4 | 0; + src = src + 4 | 0; + } + } else { + aligned_dest_end = dest_end - 4 | 0; + while ((dest | 0) < (aligned_dest_end | 0)) { + GROWABLE_HEAP_STORE_I8(dest >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src >> 0 | 0) | 0); + GROWABLE_HEAP_STORE_I8(dest + 1 >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src + 1 >> 0 | 0) | 0); + GROWABLE_HEAP_STORE_I8(dest + 2 >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src + 2 >> 0 | 0) | 0); + GROWABLE_HEAP_STORE_I8(dest + 3 >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src + 3 >> 0 | 0) | 0); + dest = dest + 4 | 0; + src = src + 4 | 0; + } + } + while ((dest | 0) < (dest_end | 0)) { + GROWABLE_HEAP_STORE_I8(dest >> 0 | 0, GROWABLE_HEAP_LOAD_I8(src >> 0 | 0) | 0); + dest = dest + 1 | 0; + src = src + 1 | 0; + } + return ret | 0; +} +Module["_memcpy"] = _memcpy; +function _tzset() { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(23, 1); + if (_tzset.called) return; + _tzset.called = true; + GROWABLE_HEAP_STORE_I32(__get_timezone() | 0, (new Date).getTimezoneOffset() * 60); + var currentYear = (new Date).getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + GROWABLE_HEAP_STORE_I32(__get_daylight() | 0, Number(winter.getTimezoneOffset() != summer.getTimezoneOffset())); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocate(intArrayFromString(winterName), "i8", ALLOC_NORMAL); + var summerNamePtr = allocate(intArrayFromString(summerName), "i8", ALLOC_NORMAL); + if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) { + GROWABLE_HEAP_STORE_I32(__get_tzname() | 0, winterNamePtr); + GROWABLE_HEAP_STORE_I32(__get_tzname() + 4 | 0, summerNamePtr); + } else { + GROWABLE_HEAP_STORE_I32(__get_tzname() | 0, summerNamePtr); + GROWABLE_HEAP_STORE_I32(__get_tzname() + 4 | 0, winterNamePtr); + } +} +Module["_tzset"] = _tzset; +function _mktime(tmPtr) { + _tzset(); + var date = new Date(GROWABLE_HEAP_LOAD_I32(tmPtr + 20 | 0) + 1900, GROWABLE_HEAP_LOAD_I32(tmPtr + 16 | 0), GROWABLE_HEAP_LOAD_I32(tmPtr + 12 | 0), GROWABLE_HEAP_LOAD_I32(tmPtr + 8 | 0), GROWABLE_HEAP_LOAD_I32(tmPtr + 4 | 0), GROWABLE_HEAP_LOAD_I32(tmPtr | 0), 0); + var dst = GROWABLE_HEAP_LOAD_I32(tmPtr + 32 | 0); + var guessedOffset = date.getTimezoneOffset(); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = (new Date(date.getFullYear(), 6, 1)).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dstOffset = Math.min(winterOffset, summerOffset); + if (dst < 0) { + GROWABLE_HEAP_STORE_I32(tmPtr + 32 | 0, Number(summerOffset != winterOffset && dstOffset == guessedOffset)); + } else if (dst > 0 != (dstOffset == guessedOffset)) { + var nonDstOffset = Math.max(winterOffset, summerOffset); + var trueOffset = dst > 0 ? dstOffset : nonDstOffset; + date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4); + } + GROWABLE_HEAP_STORE_I32(tmPtr + 24 | 0, date.getDay()); + var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0; + GROWABLE_HEAP_STORE_I32(tmPtr + 28 | 0, yday); + return date.getTime() / 1e3 | 0; +} +Module["_mktime"] = _mktime; +function _pthread_cleanup_pop(execute) { + var routine = PThread.exitHandlers.pop(); + if (execute) routine(); +} +Module["_pthread_cleanup_pop"] = _pthread_cleanup_pop; +function _pthread_cleanup_push(routine, arg) { + if (PThread.exitHandlers === null) { + PThread.exitHandlers = []; + if (!ENVIRONMENT_IS_PTHREAD) { + __ATEXIT__.push((function() { + PThread.runExitHandlers(); + })); + } + } + PThread.exitHandlers.push((function() { + dynCall_vi(routine, arg); + })); +} +Module["_pthread_cleanup_push"] = _pthread_cleanup_push; +function __spawn_thread(threadParams) { + if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _spawn_thread() can only ever be called from main application thread!"; + var worker = PThread.getNewWorker(); + if (worker.pthread !== undefined) throw "Internal error!"; + if (!threadParams.pthread_ptr) throw "Internal error, no pthread ptr!"; + PThread.runningWorkers.push(worker); + var tlsMemory = _malloc(128 * 4); + for (var i = 0; i < 128; ++i) { + GROWABLE_HEAP_STORE_I32(tlsMemory + i * 4 | 0, 0); + } + var stackHigh = threadParams.stackBase + threadParams.stackSize; + var pthread = PThread.pthreads[threadParams.pthread_ptr] = { + worker: worker, + stackBase: threadParams.stackBase, + stackSize: threadParams.stackSize, + allocatedOwnStack: threadParams.allocatedOwnStack, + thread: threadParams.pthread_ptr, + threadInfoStruct: threadParams.pthread_ptr + }; + Atomics.store(HEAPU32, pthread.threadInfoStruct + 0 >> 2, 0); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 4 >> 2, 0); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 20 >> 2, 0); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 80 >> 2, threadParams.detached); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 116 >> 2, tlsMemory); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 60 >> 2, 0); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 52 >> 2, pthread.threadInfoStruct); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 56 >> 2, PROCINFO.pid); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 >> 2, threadParams.stackSize); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 96 >> 2, threadParams.stackSize); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 92 >> 2, stackHigh); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 8 >> 2, stackHigh); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 12 >> 2, threadParams.detached); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 20 >> 2, threadParams.schedPolicy); + Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 24 >> 2, threadParams.schedPrio); + var global_libc = _emscripten_get_global_libc(); + var global_locale = global_libc + 40; + Atomics.store(HEAPU32, pthread.threadInfoStruct + 188 >> 2, global_locale); + worker.pthread = pthread; + var msg = { + "cmd": "run", + "start_routine": threadParams.startRoutine, + "arg": threadParams.arg, + "threadInfoStruct": threadParams.pthread_ptr, + "selfThreadId": threadParams.pthread_ptr, + "parentThreadId": threadParams.parent_pthread_ptr, + "stackBase": threadParams.stackBase, + "stackSize": threadParams.stackSize + }; + worker.runPthread = (function() { + msg.time = performance.now(); + worker.postMessage(msg, threadParams.transferList); + }); + if (worker.loaded) { + worker.runPthread(); + delete worker.runPthread; + } +} +Module["__spawn_thread"] = __spawn_thread; +function _pthread_getschedparam(thread, policy, schedparam) { + if (!policy && !schedparam) return ERRNO_CODES.EINVAL; + if (!thread) { + err("pthread_getschedparam called with a null thread pointer!"); + return ERRNO_CODES.ESRCH; + } + var self = GROWABLE_HEAP_LOAD_I32(thread + 24 | 0); + if (self !== thread) { + err("pthread_getschedparam attempted on thread " + thread + ", which does not point to a valid thread, or does not exist anymore!"); + return ERRNO_CODES.ESRCH; + } + var schedPolicy = Atomics.load(HEAPU32, thread + 120 + 20 >> 2); + var schedPrio = Atomics.load(HEAPU32, thread + 120 + 24 >> 2); + if (policy) GROWABLE_HEAP_STORE_I32(policy | 0, schedPolicy); + if (schedparam) GROWABLE_HEAP_STORE_I32(schedparam | 0, schedPrio); + return 0; +} +Module["_pthread_getschedparam"] = _pthread_getschedparam; +function _pthread_self() { + return __pthread_ptr | 0; +} +Module["_pthread_self"] = _pthread_self; +function _pthread_create(pthread_ptr, attr, start_routine, arg) { + if (typeof SharedArrayBuffer === "undefined") { + err("Current environment does not support SharedArrayBuffer, pthreads are not available!"); + return 6; + } + if (!pthread_ptr) { + err("pthread_create called with a null thread pointer!"); + return 28; + } + var transferList = []; + var error = 0; + if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { + return _emscripten_sync_run_in_main_thread_4(687865856, pthread_ptr, attr, start_routine, arg); + } + if (error) return error; + var stackSize = 0; + var stackBase = 0; + var detached = 0; + var schedPolicy = 0; + var schedPrio = 0; + if (attr) { + stackSize = GROWABLE_HEAP_LOAD_I32(attr | 0); + stackSize += 81920; + stackBase = GROWABLE_HEAP_LOAD_I32(attr + 8 | 0); + detached = GROWABLE_HEAP_LOAD_I32(attr + 12 | 0) !== 0; + var inheritSched = GROWABLE_HEAP_LOAD_I32(attr + 16 | 0) === 0; + if (inheritSched) { + var prevSchedPolicy = GROWABLE_HEAP_LOAD_I32(attr + 20 | 0); + var prevSchedPrio = GROWABLE_HEAP_LOAD_I32(attr + 24 | 0); + var parentThreadPtr = PThread.currentProxiedOperationCallerThread ? PThread.currentProxiedOperationCallerThread : _pthread_self(); + _pthread_getschedparam(parentThreadPtr, attr + 20, attr + 24); + schedPolicy = GROWABLE_HEAP_LOAD_I32(attr + 20 | 0); + schedPrio = GROWABLE_HEAP_LOAD_I32(attr + 24 | 0); + GROWABLE_HEAP_STORE_I32(attr + 20 | 0, prevSchedPolicy); + GROWABLE_HEAP_STORE_I32(attr + 24 | 0, prevSchedPrio); + } else { + schedPolicy = GROWABLE_HEAP_LOAD_I32(attr + 20 | 0); + schedPrio = GROWABLE_HEAP_LOAD_I32(attr + 24 | 0); + } + } else { + stackSize = 2097152; + } + var allocatedOwnStack = stackBase == 0; + if (allocatedOwnStack) { + stackBase = _memalign(16, stackSize); + } else { + stackBase -= stackSize; + assert(stackBase > 0); + } + var threadInfoStruct = _malloc(244); + for (var i = 0; i < 244 >> 2; ++i) GROWABLE_HEAP_STORE_I32(((threadInfoStruct >> 2) + i) * 4 | 0, 0); + GROWABLE_HEAP_STORE_I32(pthread_ptr | 0, threadInfoStruct); + GROWABLE_HEAP_STORE_I32(threadInfoStruct + 24 | 0, threadInfoStruct); + var headPtr = threadInfoStruct + 168; + GROWABLE_HEAP_STORE_I32(headPtr | 0, headPtr); + var threadParams = { + stackBase: stackBase, + stackSize: stackSize, + allocatedOwnStack: allocatedOwnStack, + schedPolicy: schedPolicy, + schedPrio: schedPrio, + detached: detached, + startRoutine: start_routine, + pthread_ptr: threadInfoStruct, + parent_pthread_ptr: _pthread_self(), + arg: arg, + transferList: transferList + }; + if (ENVIRONMENT_IS_PTHREAD) { + threadParams.cmd = "spawnThread"; + postMessage(threadParams, transferList); + } else { + __spawn_thread(threadParams); + } + return 0; +} +Module["_pthread_create"] = _pthread_create; +function _setTempRet0($i) { + setTempRet0($i | 0); +} +Module["_setTempRet0"] = _setTempRet0; +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} +Module["__isLeapYear"] = __isLeapYear; +function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) ; + return sum; +} +Module["__arraySum"] = __arraySum; +var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; +Module["__MONTH_DAYS_LEAP"] = __MONTH_DAYS_LEAP; +var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; +Module["__MONTH_DAYS_REGULAR"] = __MONTH_DAYS_REGULAR; +function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + if (days > daysInCurrentMonth - newDate.getDate()) { + days -= daysInCurrentMonth - newDate.getDate() + 1; + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth + 1); + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear() + 1); + } + } else { + newDate.setDate(newDate.getDate() + days); + return newDate; + } + } + return newDate; +} +Module["__addDays"] = __addDays; +function _strftime(s, maxsize, format, tm) { + var tm_zone = GROWABLE_HEAP_LOAD_I32(tm + 40 | 0); + var date = { + tm_sec: GROWABLE_HEAP_LOAD_I32(tm | 0), + tm_min: GROWABLE_HEAP_LOAD_I32(tm + 4 | 0), + tm_hour: GROWABLE_HEAP_LOAD_I32(tm + 8 | 0), + tm_mday: GROWABLE_HEAP_LOAD_I32(tm + 12 | 0), + tm_mon: GROWABLE_HEAP_LOAD_I32(tm + 16 | 0), + tm_year: GROWABLE_HEAP_LOAD_I32(tm + 20 | 0), + tm_wday: GROWABLE_HEAP_LOAD_I32(tm + 24 | 0), + tm_yday: GROWABLE_HEAP_LOAD_I32(tm + 28 | 0), + tm_isdst: GROWABLE_HEAP_LOAD_I32(tm + 32 | 0), + tm_gmtoff: GROWABLE_HEAP_LOAD_I32(tm + 36 | 0), + tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" + }; + var pattern = UTF8ToString(format); + var EXPANSION_RULES_1 = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); + } + var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; + function leadingSomething(value, digits, character) { + var str = typeof value === "number" ? value.toString() : value || ""; + while (str.length < digits) { + str = character[0] + str; + } + return str; + } + function leadingNulls(value, digits) { + return leadingSomething(value, digits, "0"); + } + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : value > 0 ? 1 : 0; + } + var compare; + if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { + compare = sgn(date1.getDate() - date2.getDate()); + } + } + return compare; + } + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: + return new Date(janFourth.getFullYear() - 1, 11, 29); + case 1: + return janFourth; + case 2: + return new Date(janFourth.getFullYear(), 0, 3); + case 3: + return new Date(janFourth.getFullYear(), 0, 2); + case 4: + return new Date(janFourth.getFullYear(), 0, 1); + case 5: + return new Date(janFourth.getFullYear() - 1, 11, 31); + case 6: + return new Date(janFourth.getFullYear() - 1, 11, 30); + } + } + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear() + 1; + } else { + return thisDate.getFullYear(); + } + } else { + return thisDate.getFullYear() - 1; + } + } + var EXPANSION_RULES_2 = { + "%a": (function(date) { + return WEEKDAYS[date.tm_wday].substring(0, 3); + }), + "%A": (function(date) { + return WEEKDAYS[date.tm_wday]; + }), + "%b": (function(date) { + return MONTHS[date.tm_mon].substring(0, 3); + }), + "%B": (function(date) { + return MONTHS[date.tm_mon]; + }), + "%C": (function(date) { + var year = date.tm_year + 1900; + return leadingNulls(year / 100 | 0, 2); + }), + "%d": (function(date) { + return leadingNulls(date.tm_mday, 2); + }), + "%e": (function(date) { + return leadingSomething(date.tm_mday, 2, " "); + }), + "%g": (function(date) { + return getWeekBasedYear(date).toString().substring(2); + }), + "%G": (function(date) { + return getWeekBasedYear(date); + }), + "%H": (function(date) { + return leadingNulls(date.tm_hour, 2); + }), + "%I": (function(date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }), + "%j": (function(date) { + return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); + }), + "%m": (function(date) { + return leadingNulls(date.tm_mon + 1, 2); + }), + "%M": (function(date) { + return leadingNulls(date.tm_min, 2); + }), + "%n": (function() { + return "\n"; + }), + "%p": (function(date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return "AM"; + } else { + return "PM"; + } + }), + "%S": (function(date) { + return leadingNulls(date.tm_sec, 2); + }), + "%t": (function() { + return "\t"; + }), + "%u": (function(date) { + return date.tm_wday || 7; + }), + "%U": (function(date) { + var janFirst = new Date(date.tm_year + 1900, 0, 1); + var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay()); + var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); + if (compareByDay(firstSunday, endDate) < 0) { + var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; + var firstSundayUntilEndJanuary = 31 - firstSunday.getDate(); + var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); + return leadingNulls(Math.ceil(days / 7), 2); + } + return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00"; + }), + "%V": (function(date) { + var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4); + var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + if (compareByDay(endDate, firstWeekStartThisYear) < 0) { + return "53"; + } + if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { + return "01"; + } + var daysDifference; + if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) { + daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate(); + } else { + daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate(); + } + return leadingNulls(Math.ceil(daysDifference / 7), 2); + }), + "%w": (function(date) { + return date.tm_wday; + }), + "%W": (function(date) { + var janFirst = new Date(date.tm_year, 0, 1); + var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1); + var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); + if (compareByDay(firstMonday, endDate) < 0) { + var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; + var firstMondayUntilEndJanuary = 31 - firstMonday.getDate(); + var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); + return leadingNulls(Math.ceil(days / 7), 2); + } + return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00"; + }), + "%y": (function(date) { + return (date.tm_year + 1900).toString().substring(2); + }), + "%Y": (function(date) { + return date.tm_year + 1900; + }), + "%z": (function(date) { + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + off = off / 60 * 100 + off % 60; + return (ahead ? "+" : "-") + String("0000" + off).slice(-4); + }), + "%Z": (function(date) { + return date.tm_zone; + }), + "%%": (function() { + return "%"; + }) + }; + for (var rule in EXPANSION_RULES_2) { + if (pattern.indexOf(rule) >= 0) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); + } + } + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + writeArrayToMemory(bytes, s); + return bytes.length - 1; +} +Module["_strftime"] = _strftime; +function _strftime_l(s, maxsize, format, tm) { + return _strftime(s, maxsize, format, tm); +} +Module["_strftime_l"] = _strftime_l; +function _sysconf(name) { + if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(24, 1, name); + switch (name) { + case 30: + return PAGE_SIZE; + case 85: + var maxHeapSize = 2 * 1024 * 1024 * 1024 - 65536; + maxHeapSize = 1073741824; + return maxHeapSize / PAGE_SIZE; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 79: + return 0; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: + { + if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1; + return 1; + } + } + ___setErrNo(28); + return -1; +} +Module["_sysconf"] = _sysconf; +function _system(command) { + ___setErrNo(6); + return -1; +} +Module["_system"] = _system; +function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + GROWABLE_HEAP_STORE_I32(ptr | 0, ret); + } + return ret; +} +Module["_time"] = _time; +function _times(buffer) { + if (buffer !== 0) { + _memset(buffer, 0, 16); + } + return 0; +} +Module["_times"] = _times; +if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock(); else PThread.initWorker(); +if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = function _emscripten_get_now_actual() { + var t = process["hrtime"](); + return t[0] * 1e3 + t[1] / 1e6; + }; +} else if (ENVIRONMENT_IS_PTHREAD) { + _emscripten_get_now = (function() { + return performance["now"]() - __performance_now_clock_drift; + }); +} else if (typeof dateNow !== "undefined") { + _emscripten_get_now = dateNow; +} else if (typeof performance === "object" && performance && typeof performance["now"] === "function") { + _emscripten_get_now = (function() { + return performance["now"](); + }); +} else { + _emscripten_get_now = Date.now; +} +FS.staticInit(); +if (ENVIRONMENT_HAS_NODE) { + var fs = require("fs"); + var NODEJS_PATH = require("path"); + NODEFS.staticInit(); +} +var GLctx; +GL.init(); +var proxiedFunctionTable = [ null, _atexit, ___syscall10, ___syscall12, ___syscall183, ___syscall192, ___syscall195, ___syscall196, ___syscall220, ___syscall221, ___syscall3, ___syscall39, ___syscall4, ___syscall40, ___syscall5, ___syscall54, ___syscall85, ___syscall91, _emscripten_set_canvas_element_size_main_thread, _fd_close, _fd_read, _fd_seek, _fd_write, _tzset, _sysconf ]; +var ASSERTIONS = true; +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 255) { + if (ASSERTIONS) { + assert(false, "Character code " + chr + " (" + String.fromCharCode(chr) + ") at offset " + i + " not in 0x00-0xFF."); + } + chr &= 255; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(""); } - - -// ASM_LIBRARY EXTERN PRIMITIVES: Int8Array,Int32Array - var asmGlobalArg = {}; -var asmLibraryArg = { "_ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, "_ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, "_ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, "_ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, "_ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, "_ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb": __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb, "_ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb": __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb, "_ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb": __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb, "_ZN12CPdfRendererD1Ev": __ZN12CPdfRendererD1Ev, "_ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv": __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv, "_ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_": __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_, "_ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE": __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE, "_ZN14NSDoctRenderer13CDoctrendererD1Ev": __ZN14NSDoctRenderer13CDoctrendererD1Ev, "_ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_": __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_, "_ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb": __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb, "_ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev": __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev, "_ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev": __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev, "_ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb": __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb, "_ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE": __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE, "_ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE": __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE, "_ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_": __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_, "_ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_": __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_, "_ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_": __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_, "_ZN9CHtmlFileC1Ev": __ZN9CHtmlFileC1Ev, "_ZN9CHtmlFileD1Ev": __ZN9CHtmlFileD1Ev, "_ZN9PdfReader10CPdfReader8GetErrorEv": __ZN9PdfReader10CPdfReader8GetErrorEv, "_ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE": __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE, "__assert_fail": ___assert_fail, "__call_main": ___call_main, "__clock_gettime": ___clock_gettime, "__cxa_allocate_exception": ___cxa_allocate_exception, "__cxa_atexit": ___cxa_atexit, "__cxa_rethrow": ___cxa_rethrow, "__cxa_throw": ___cxa_throw, "__lock": ___lock, "__map_file": ___map_file, "__syscall10": ___syscall10, "__syscall12": ___syscall12, "__syscall183": ___syscall183, "__syscall192": ___syscall192, "__syscall195": ___syscall195, "__syscall196": ___syscall196, "__syscall220": ___syscall220, "__syscall221": ___syscall221, "__syscall3": ___syscall3, "__syscall39": ___syscall39, "__syscall4": ___syscall4, "__syscall40": ___syscall40, "__syscall5": ___syscall5, "__syscall54": ___syscall54, "__syscall85": ___syscall85, "__syscall91": ___syscall91, "__unlock": ___unlock, "abort": _abort, "atexit": _atexit, "emscripten_asm_const_iii": _emscripten_asm_const_iii, "emscripten_check_blocking_allowed": _emscripten_check_blocking_allowed, "emscripten_conditional_set_current_thread_status": _emscripten_conditional_set_current_thread_status, "emscripten_futex_wait": _emscripten_futex_wait, "emscripten_futex_wake": _emscripten_futex_wake, "emscripten_get_now": _emscripten_get_now, "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, "emscripten_has_threading_support": _emscripten_has_threading_support, "emscripten_is_main_browser_thread": _emscripten_is_main_browser_thread, "emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "emscripten_longjmp": _emscripten_longjmp, "emscripten_memcpy_big": _emscripten_memcpy_big, "emscripten_receive_on_main_thread_js": _emscripten_receive_on_main_thread_js, "emscripten_resize_heap": _emscripten_resize_heap, "emscripten_set_canvas_element_size": _emscripten_set_canvas_element_size, "emscripten_set_current_thread_status": _emscripten_set_current_thread_status, "emscripten_set_thread_name": _emscripten_set_thread_name, "emscripten_syscall": _emscripten_syscall, "emscripten_webgl_create_context": _emscripten_webgl_create_context, "environ_get": _environ_get, "environ_sizes_get": _environ_sizes_get, "exit": _exit, "fd_close": _fd_close, "fd_read": _fd_read, "fd_seek": _fd_seek, "fd_write": _fd_write, "getTempRet0": _getTempRet0, "gettimeofday": _gettimeofday, "gmtime": _gmtime, "initPthreadsJS": initPthreadsJS, "invoke_ii": invoke_ii, "invoke_iii": invoke_iii, "invoke_iiii": invoke_iiii, "invoke_iiiii": invoke_iiiii, "invoke_iiiiii": invoke_iiiiii, "invoke_v": invoke_v, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_viii": invoke_viii, "invoke_viiii": invoke_viiii, "invoke_viiiii": invoke_viiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "memory": wasmMemory, "mktime": _mktime, "pthread_cleanup_pop": _pthread_cleanup_pop, "pthread_cleanup_push": _pthread_cleanup_push, "pthread_create": _pthread_create, "pthread_self": _pthread_self, "saveSetjmp": _saveSetjmp, "setTempRet0": _setTempRet0, "strftime_l": _strftime_l, "sysconf": _sysconf, "system": _system, "table": wasmTable, "testSetjmp": _testSetjmp, "time": _time, "times": _times }; +var asmLibraryArg = { + "_ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer10SaveToFileERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, + "_ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer11SetPasswordERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, + "_ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer13SetDocumentIDERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, + "_ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer13SetTempFolderERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, + "_ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE": __ZN12CPdfRenderer14SetThemesPlaceERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEE, + "_ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb": __ZN12CPdfRenderer15OnlineWordToPdfERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb, + "_ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb": __ZN12CPdfRenderer25OnlineWordToPdfFromBinaryERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_RKb, + "_ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb": __ZN12CPdfRendererC1EPN7NSFonts17IApplicationFontsEb, + "_ZN12CPdfRendererD1Ev": __ZN12CPdfRendererD1Ev, + "_ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv": __ZN14NSDoctRenderer13CDoctrenderer18GetImagesInChangesEv, + "_ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_": __ZN14NSDoctRenderer13CDoctrenderer7ExecuteERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERS7_, + "_ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE": __ZN14NSDoctRenderer13CDoctrendererC1ERKNSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEE, + "_ZN14NSDoctRenderer13CDoctrendererD1Ev": __ZN14NSDoctRenderer13CDoctrendererD1Ev, + "_ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_": __ZN14NSHtmlRenderer17CASCHTMLRenderer316CreateOfficeFileENSt3__212basic_stringIwNS1_11char_traitsIwEENS1_9allocatorIwEEEERKS7_, + "_ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb": __ZN14NSHtmlRenderer17CASCHTMLRenderer39CloseFileEb, + "_ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev": __ZN14NSHtmlRenderer17CASCHTMLRenderer3C1Ev, + "_ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev": __ZN14NSHtmlRenderer17CASCHTMLRenderer3D1Ev, + "_ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb": __ZN23CFileDownloader_privateC1ENSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEEb, + "_ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE": __ZN8CXpsFileC1EPN7NSFonts17IApplicationFontsE, + "_ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE": __ZN9CDjVuFileC1EPN7NSFonts17IApplicationFontsE, + "_ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_": __ZN9CHtmlFile10ConvertMhtERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEES8_S8_, + "_ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_": __ZN9CHtmlFile11ConvertEpubERKNSt3__212basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEERS6_S8_S8_, + "_ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_": __ZN9CHtmlFile7ConvertERKNSt3__26vectorINS0_12basic_stringIwNS0_11char_traitsIwEENS0_9allocatorIwEEEENS5_IS7_EEEERKS7_SD_, + "_ZN9CHtmlFileC1Ev": __ZN9CHtmlFileC1Ev, + "_ZN9CHtmlFileD1Ev": __ZN9CHtmlFileD1Ev, + "_ZN9PdfReader10CPdfReader8GetErrorEv": __ZN9PdfReader10CPdfReader8GetErrorEv, + "_ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE": __ZN9PdfReader10CPdfReaderC1EPN7NSFonts17IApplicationFontsE, + "__assert_fail": ___assert_fail, + "__call_main": ___call_main, + "__clock_gettime": ___clock_gettime, + "__cxa_allocate_exception": ___cxa_allocate_exception, + "__cxa_atexit": ___cxa_atexit, + "__cxa_rethrow": ___cxa_rethrow, + "__cxa_throw": ___cxa_throw, + "__lock": ___lock, + "__map_file": ___map_file, + "__syscall10": ___syscall10, + "__syscall12": ___syscall12, + "__syscall183": ___syscall183, + "__syscall192": ___syscall192, + "__syscall195": ___syscall195, + "__syscall196": ___syscall196, + "__syscall220": ___syscall220, + "__syscall221": ___syscall221, + "__syscall3": ___syscall3, + "__syscall39": ___syscall39, + "__syscall4": ___syscall4, + "__syscall40": ___syscall40, + "__syscall5": ___syscall5, + "__syscall54": ___syscall54, + "__syscall85": ___syscall85, + "__syscall91": ___syscall91, + "__unlock": ___unlock, + "abort": _abort, + "atexit": _atexit, + "emscripten_asm_const_iii": _emscripten_asm_const_iii, + "emscripten_check_blocking_allowed": _emscripten_check_blocking_allowed, + "emscripten_conditional_set_current_thread_status": _emscripten_conditional_set_current_thread_status, + "emscripten_futex_wait": _emscripten_futex_wait, + "emscripten_futex_wake": _emscripten_futex_wake, + "emscripten_get_now": _emscripten_get_now, + "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, + "emscripten_has_threading_support": _emscripten_has_threading_support, + "emscripten_is_main_browser_thread": _emscripten_is_main_browser_thread, + "emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, + "emscripten_longjmp": _emscripten_longjmp, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_receive_on_main_thread_js": _emscripten_receive_on_main_thread_js, + "emscripten_resize_heap": _emscripten_resize_heap, + "emscripten_set_canvas_element_size": _emscripten_set_canvas_element_size, + "emscripten_set_current_thread_status": _emscripten_set_current_thread_status, + "emscripten_set_thread_name": _emscripten_set_thread_name, + "emscripten_syscall": _emscripten_syscall, + "emscripten_webgl_create_context": _emscripten_webgl_create_context, + "environ_get": _environ_get, + "environ_sizes_get": _environ_sizes_get, + "exit": _exit, + "fd_close": _fd_close, + "fd_read": _fd_read, + "fd_seek": _fd_seek, + "fd_write": _fd_write, + "getTempRet0": _getTempRet0, + "gettimeofday": _gettimeofday, + "gmtime": _gmtime, + "initPthreadsJS": initPthreadsJS, + "invoke_ii": invoke_ii, + "invoke_iii": invoke_iii, + "invoke_iiii": invoke_iiii, + "invoke_iiiii": invoke_iiiii, + "invoke_iiiiii": invoke_iiiiii, + "invoke_v": invoke_v, + "invoke_vi": invoke_vi, + "invoke_vii": invoke_vii, + "invoke_viii": invoke_viii, + "invoke_viiii": invoke_viiii, + "invoke_viiiii": invoke_viiiii, + "invoke_viiiiii": invoke_viiiiii, + "invoke_viiiiiiiii": invoke_viiiiiiiii, + "memory": wasmMemory, + "mktime": _mktime, + "pthread_cleanup_pop": _pthread_cleanup_pop, + "pthread_cleanup_push": _pthread_cleanup_push, + "pthread_create": _pthread_create, + "pthread_self": _pthread_self, + "saveSetjmp": _saveSetjmp, + "setTempRet0": _setTempRet0, + "strftime_l": _strftime_l, + "sysconf": _sysconf, + "system": _system, + "table": wasmTable, + "testSetjmp": _testSetjmp, + "time": _time, + "times": _times +}; var asm = createWasm(); var real____wasm_call_ctors = asm["__wasm_call_ctors"]; -asm["__wasm_call_ctors"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real____wasm_call_ctors.apply(null, arguments); -}; - +asm["__wasm_call_ctors"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____wasm_call_ctors.apply(null, arguments); +}); var real__runX2T = asm["runX2T"]; -asm["runX2T"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__runX2T.apply(null, arguments); -}; - +asm["runX2T"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__runX2T.apply(null, arguments); +}); var real__malloc = asm["malloc"]; -asm["malloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__malloc.apply(null, arguments); -}; - +asm["malloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__malloc.apply(null, arguments); +}); var real__free = asm["free"]; -asm["free"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__free.apply(null, arguments); -}; - +asm["free"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__free.apply(null, arguments); +}); var real__main = asm["main"]; -asm["main"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__main.apply(null, arguments); -}; - +asm["main"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__main.apply(null, arguments); +}); var real__fflush = asm["fflush"]; -asm["fflush"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__fflush.apply(null, arguments); -}; - +asm["fflush"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__fflush.apply(null, arguments); +}); var real__realloc = asm["realloc"]; -asm["realloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__realloc.apply(null, arguments); -}; - +asm["realloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__realloc.apply(null, arguments); +}); var real___ZSt18uncaught_exceptionv = asm["_ZSt18uncaught_exceptionv"]; -asm["_ZSt18uncaught_exceptionv"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real___ZSt18uncaught_exceptionv.apply(null, arguments); -}; - +asm["_ZSt18uncaught_exceptionv"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___ZSt18uncaught_exceptionv.apply(null, arguments); +}); var real____errno_location = asm["__errno_location"]; -asm["__errno_location"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real____errno_location.apply(null, arguments); -}; - +asm["__errno_location"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____errno_location.apply(null, arguments); +}); var real__ntohs = asm["ntohs"]; -asm["ntohs"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__ntohs.apply(null, arguments); -}; - +asm["ntohs"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__ntohs.apply(null, arguments); +}); var real__htonl = asm["htonl"]; -asm["htonl"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__htonl.apply(null, arguments); -}; - +asm["htonl"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__htonl.apply(null, arguments); +}); var real__htons = asm["htons"]; -asm["htons"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__htons.apply(null, arguments); -}; - -var real____em_js__initPthreadsJS = asm["__em_js__initPthreadsJS"]; -asm["__em_js__initPthreadsJS"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real____em_js__initPthreadsJS.apply(null, arguments); -}; - -var real____emscripten_pthread_data_constructor = asm["__emscripten_pthread_data_constructor"]; -asm["__emscripten_pthread_data_constructor"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real____emscripten_pthread_data_constructor.apply(null, arguments); -}; - +asm["htons"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__htons.apply(null, arguments); +}); var real__emscripten_get_global_libc = asm["emscripten_get_global_libc"]; -asm["emscripten_get_global_libc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_get_global_libc.apply(null, arguments); -}; - +asm["emscripten_get_global_libc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_get_global_libc.apply(null, arguments); +}); +var real____em_js__initPthreadsJS = asm["__em_js__initPthreadsJS"]; +asm["__em_js__initPthreadsJS"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____em_js__initPthreadsJS.apply(null, arguments); +}); +var real____emscripten_pthread_data_constructor = asm["__emscripten_pthread_data_constructor"]; +asm["__emscripten_pthread_data_constructor"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____emscripten_pthread_data_constructor.apply(null, arguments); +}); var real___get_tzname = asm["_get_tzname"]; -asm["_get_tzname"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real___get_tzname.apply(null, arguments); -}; - +asm["_get_tzname"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_tzname.apply(null, arguments); +}); var real___get_daylight = asm["_get_daylight"]; -asm["_get_daylight"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real___get_daylight.apply(null, arguments); -}; - +asm["_get_daylight"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_daylight.apply(null, arguments); +}); var real___get_timezone = asm["_get_timezone"]; -asm["_get_timezone"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real___get_timezone.apply(null, arguments); -}; - +asm["_get_timezone"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_timezone.apply(null, arguments); +}); var real__setThrew = asm["setThrew"]; -asm["setThrew"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__setThrew.apply(null, arguments); -}; - +asm["setThrew"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__setThrew.apply(null, arguments); +}); var real__memalign = asm["memalign"]; -asm["memalign"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__memalign.apply(null, arguments); -}; - +asm["memalign"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__memalign.apply(null, arguments); +}); var real__emscripten_builtin_free = asm["emscripten_builtin_free"]; -asm["emscripten_builtin_free"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_builtin_free.apply(null, arguments); -}; - +asm["emscripten_builtin_free"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_builtin_free.apply(null, arguments); +}); var real__emscripten_builtin_memalign = asm["emscripten_builtin_memalign"]; -asm["emscripten_builtin_memalign"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_builtin_memalign.apply(null, arguments); -}; - +asm["emscripten_builtin_memalign"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_builtin_memalign.apply(null, arguments); +}); var real__emscripten_main_browser_thread_id = asm["emscripten_main_browser_thread_id"]; -asm["emscripten_main_browser_thread_id"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_main_browser_thread_id.apply(null, arguments); -}; - +asm["emscripten_main_browser_thread_id"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_main_browser_thread_id.apply(null, arguments); +}); var real____pthread_tsd_run_dtors = asm["__pthread_tsd_run_dtors"]; -asm["__pthread_tsd_run_dtors"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real____pthread_tsd_run_dtors.apply(null, arguments); -}; - +asm["__pthread_tsd_run_dtors"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____pthread_tsd_run_dtors.apply(null, arguments); +}); var real__emscripten_main_thread_process_queued_calls = asm["emscripten_main_thread_process_queued_calls"]; -asm["emscripten_main_thread_process_queued_calls"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_main_thread_process_queued_calls.apply(null, arguments); -}; - +asm["emscripten_main_thread_process_queued_calls"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_main_thread_process_queued_calls.apply(null, arguments); +}); var real__emscripten_current_thread_process_queued_calls = asm["emscripten_current_thread_process_queued_calls"]; -asm["emscripten_current_thread_process_queued_calls"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_current_thread_process_queued_calls.apply(null, arguments); -}; - +asm["emscripten_current_thread_process_queued_calls"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_current_thread_process_queued_calls.apply(null, arguments); +}); var real__usleep = asm["usleep"]; -asm["usleep"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__usleep.apply(null, arguments); -}; - +asm["usleep"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__usleep.apply(null, arguments); +}); var real__emscripten_register_main_browser_thread_id = asm["emscripten_register_main_browser_thread_id"]; -asm["emscripten_register_main_browser_thread_id"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_register_main_browser_thread_id.apply(null, arguments); -}; - +asm["emscripten_register_main_browser_thread_id"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_register_main_browser_thread_id.apply(null, arguments); +}); var real__emscripten_async_run_in_main_thread = asm["emscripten_async_run_in_main_thread"]; -asm["emscripten_async_run_in_main_thread"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_async_run_in_main_thread.apply(null, arguments); -}; - +asm["emscripten_async_run_in_main_thread"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_async_run_in_main_thread.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread = asm["emscripten_sync_run_in_main_thread"]; -asm["emscripten_sync_run_in_main_thread"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_0 = asm["emscripten_sync_run_in_main_thread_0"]; -asm["emscripten_sync_run_in_main_thread_0"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_0"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_1 = asm["emscripten_sync_run_in_main_thread_1"]; -asm["emscripten_sync_run_in_main_thread_1"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_1"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_2 = asm["emscripten_sync_run_in_main_thread_2"]; -asm["emscripten_sync_run_in_main_thread_2"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_2"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["emscripten_sync_run_in_main_thread_xprintf_varargs"]; -asm["emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_xprintf_varargs"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_3 = asm["emscripten_sync_run_in_main_thread_3"]; -asm["emscripten_sync_run_in_main_thread_3"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_3"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_4 = asm["emscripten_sync_run_in_main_thread_4"]; -asm["emscripten_sync_run_in_main_thread_4"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_4"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_5 = asm["emscripten_sync_run_in_main_thread_5"]; -asm["emscripten_sync_run_in_main_thread_5"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_5"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_6 = asm["emscripten_sync_run_in_main_thread_6"]; -asm["emscripten_sync_run_in_main_thread_6"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_6"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments); +}); var real__emscripten_sync_run_in_main_thread_7 = asm["emscripten_sync_run_in_main_thread_7"]; -asm["emscripten_sync_run_in_main_thread_7"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments); -}; - +asm["emscripten_sync_run_in_main_thread_7"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments); +}); var real__emscripten_run_in_main_runtime_thread_js = asm["emscripten_run_in_main_runtime_thread_js"]; -asm["emscripten_run_in_main_runtime_thread_js"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_run_in_main_runtime_thread_js.apply(null, arguments); -}; - +asm["emscripten_run_in_main_runtime_thread_js"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_run_in_main_runtime_thread_js.apply(null, arguments); +}); var real__emscripten_async_queue_on_thread_ = asm["emscripten_async_queue_on_thread_"]; -asm["emscripten_async_queue_on_thread_"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_async_queue_on_thread_.apply(null, arguments); -}; - +asm["emscripten_async_queue_on_thread_"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_async_queue_on_thread_.apply(null, arguments); +}); var real__proxy_main = asm["proxy_main"]; -asm["proxy_main"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__proxy_main.apply(null, arguments); -}; - +asm["proxy_main"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__proxy_main.apply(null, arguments); +}); var real__emscripten_tls_init = asm["emscripten_tls_init"]; -asm["emscripten_tls_init"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real__emscripten_tls_init.apply(null, arguments); -}; - +asm["emscripten_tls_init"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__emscripten_tls_init.apply(null, arguments); +}); var real_dynCall_ii = asm["dynCall_ii"]; -asm["dynCall_ii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_ii.apply(null, arguments); -}; - +asm["dynCall_ii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_ii.apply(null, arguments); +}); var real_dynCall_iii = asm["dynCall_iii"]; -asm["dynCall_iii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iii.apply(null, arguments); -}; - +asm["dynCall_iii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iii.apply(null, arguments); +}); var real_dynCall_iiii = asm["dynCall_iiii"]; -asm["dynCall_iiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiii.apply(null, arguments); -}; - +asm["dynCall_iiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiii.apply(null, arguments); +}); var real_dynCall_iiiii = asm["dynCall_iiiii"]; -asm["dynCall_iiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiii.apply(null, arguments); -}; - +asm["dynCall_iiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiii.apply(null, arguments); +}); var real_dynCall_iiiiii = asm["dynCall_iiiiii"]; -asm["dynCall_iiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiii.apply(null, arguments); -}; - +asm["dynCall_iiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiii.apply(null, arguments); +}); var real_dynCall_v = asm["dynCall_v"]; -asm["dynCall_v"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_v.apply(null, arguments); -}; - +asm["dynCall_v"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_v.apply(null, arguments); +}); var real_dynCall_vi = asm["dynCall_vi"]; -asm["dynCall_vi"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vi.apply(null, arguments); -}; - +asm["dynCall_vi"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vi.apply(null, arguments); +}); var real_dynCall_vii = asm["dynCall_vii"]; -asm["dynCall_vii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vii.apply(null, arguments); -}; - +asm["dynCall_vii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vii.apply(null, arguments); +}); var real_dynCall_viii = asm["dynCall_viii"]; -asm["dynCall_viii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viii.apply(null, arguments); -}; - +asm["dynCall_viii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viii.apply(null, arguments); +}); var real_dynCall_viiii = asm["dynCall_viiii"]; -asm["dynCall_viiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiii.apply(null, arguments); -}; - +asm["dynCall_viiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiii.apply(null, arguments); +}); var real_dynCall_viiiii = asm["dynCall_viiiii"]; -asm["dynCall_viiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiii.apply(null, arguments); -}; - +asm["dynCall_viiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiii.apply(null, arguments); +}); var real_dynCall_viiiiii = asm["dynCall_viiiiii"]; -asm["dynCall_viiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiii.apply(null, arguments); -}; - +asm["dynCall_viiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiii.apply(null, arguments); +}); var real_dynCall_viiiiiiiii = asm["dynCall_viiiiiiiii"]; -asm["dynCall_viiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiiiiii.apply(null, arguments); -}; - +asm["dynCall_viiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiii.apply(null, arguments); +}); var real_stackSave = asm["stackSave"]; -asm["stackSave"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_stackSave.apply(null, arguments); -}; - +asm["stackSave"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackSave.apply(null, arguments); +}); var real_stackAlloc = asm["stackAlloc"]; -asm["stackAlloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_stackAlloc.apply(null, arguments); -}; - +asm["stackAlloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackAlloc.apply(null, arguments); +}); var real_stackRestore = asm["stackRestore"]; -asm["stackRestore"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_stackRestore.apply(null, arguments); -}; - +asm["stackRestore"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackRestore.apply(null, arguments); +}); var real___growWasmMemory = asm["__growWasmMemory"]; -asm["__growWasmMemory"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real___growWasmMemory.apply(null, arguments); -}; - +asm["__growWasmMemory"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___growWasmMemory.apply(null, arguments); +}); var real_dynCall_viijii = asm["dynCall_viijii"]; -asm["dynCall_viijii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viijii.apply(null, arguments); -}; - +asm["dynCall_viijii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viijii.apply(null, arguments); +}); var real_dynCall_dii = asm["dynCall_dii"]; -asm["dynCall_dii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_dii.apply(null, arguments); -}; - +asm["dynCall_dii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_dii.apply(null, arguments); +}); var real_dynCall_did = asm["dynCall_did"]; -asm["dynCall_did"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_did.apply(null, arguments); -}; - +asm["dynCall_did"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_did.apply(null, arguments); +}); var real_dynCall_di = asm["dynCall_di"]; -asm["dynCall_di"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_di.apply(null, arguments); -}; - +asm["dynCall_di"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_di.apply(null, arguments); +}); var real_dynCall_ji = asm["dynCall_ji"]; -asm["dynCall_ji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_ji.apply(null, arguments); -}; - +asm["dynCall_ji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_ji.apply(null, arguments); +}); var real_dynCall_vij = asm["dynCall_vij"]; -asm["dynCall_vij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vij.apply(null, arguments); -}; - +asm["dynCall_vij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vij.apply(null, arguments); +}); var real_dynCall_jii = asm["dynCall_jii"]; -asm["dynCall_jii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_jii.apply(null, arguments); -}; - +asm["dynCall_jii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jii.apply(null, arguments); +}); var real_dynCall_iiiiiii = asm["dynCall_iiiiiii"]; -asm["dynCall_iiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiii.apply(null, arguments); -}; - +asm["dynCall_iiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiii.apply(null, arguments); +}); var real_dynCall_iiiiiiii = asm["dynCall_iiiiiiii"]; -asm["dynCall_iiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiiii.apply(null, arguments); -}; - +asm["dynCall_iiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiii.apply(null, arguments); +}); var real_dynCall_iiiiiiiii = asm["dynCall_iiiiiiiii"]; -asm["dynCall_iiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiiiii.apply(null, arguments); -}; - +asm["dynCall_iiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiiii.apply(null, arguments); +}); var real_dynCall_iidddddi = asm["dynCall_iidddddi"]; -asm["dynCall_iidddddi"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iidddddi.apply(null, arguments); -}; - +asm["dynCall_iidddddi"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iidddddi.apply(null, arguments); +}); var real_dynCall_viiiddii = asm["dynCall_viiiddii"]; -asm["dynCall_viiiddii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiddii.apply(null, arguments); -}; - +asm["dynCall_viiiddii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiddii.apply(null, arguments); +}); var real_dynCall_viij = asm["dynCall_viij"]; -asm["dynCall_viij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viij.apply(null, arguments); -}; - +asm["dynCall_viij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viij.apply(null, arguments); +}); var real_dynCall_viji = asm["dynCall_viji"]; -asm["dynCall_viji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viji.apply(null, arguments); -}; - +asm["dynCall_viji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viji.apply(null, arguments); +}); var real_dynCall_jij = asm["dynCall_jij"]; -asm["dynCall_jij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_jij.apply(null, arguments); -}; - +asm["dynCall_jij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jij.apply(null, arguments); +}); var real_dynCall_iiiijii = asm["dynCall_iiiijii"]; -asm["dynCall_iiiijii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiijii.apply(null, arguments); -}; - +asm["dynCall_iiiijii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiijii.apply(null, arguments); +}); var real_dynCall_viiij = asm["dynCall_viiij"]; -asm["dynCall_viiij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiij.apply(null, arguments); -}; - +asm["dynCall_viiij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiij.apply(null, arguments); +}); var real_dynCall_viiiiiiiiii = asm["dynCall_viiiiiiiiii"]; -asm["dynCall_viiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiiiiiii.apply(null, arguments); -}; - +asm["dynCall_viiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiii.apply(null, arguments); +}); var real_dynCall_iiiji = asm["dynCall_iiiji"]; -asm["dynCall_iiiji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiji.apply(null, arguments); -}; - +asm["dynCall_iiiji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiji.apply(null, arguments); +}); var real_dynCall_i = asm["dynCall_i"]; -asm["dynCall_i"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_i.apply(null, arguments); -}; - +asm["dynCall_i"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_i.apply(null, arguments); +}); var real_dynCall_viiiiiii = asm["dynCall_viiiiiii"]; -asm["dynCall_viiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiiii.apply(null, arguments); -}; - +asm["dynCall_viiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiii.apply(null, arguments); +}); var real_dynCall_viiiiiiiiiiii = asm["dynCall_viiiiiiiiiiii"]; -asm["dynCall_viiiiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiiiiiiiii.apply(null, arguments); -}; - +asm["dynCall_viiiiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiiiii.apply(null, arguments); +}); var real_dynCall_iidd = asm["dynCall_iidd"]; -asm["dynCall_iidd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iidd.apply(null, arguments); -}; - +asm["dynCall_iidd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iidd.apply(null, arguments); +}); var real_dynCall_iidddddd = asm["dynCall_iidddddd"]; -asm["dynCall_iidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iidddddd.apply(null, arguments); -}; - +asm["dynCall_iidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iidddddd.apply(null, arguments); +}); var real_dynCall_vidd = asm["dynCall_vidd"]; -asm["dynCall_vidd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vidd.apply(null, arguments); -}; - +asm["dynCall_vidd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vidd.apply(null, arguments); +}); var real_dynCall_vidddd = asm["dynCall_vidddd"]; -asm["dynCall_vidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vidddd.apply(null, arguments); -}; - +asm["dynCall_vidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vidddd.apply(null, arguments); +}); var real_dynCall_viidddd = asm["dynCall_viidddd"]; -asm["dynCall_viidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viidddd.apply(null, arguments); -}; - +asm["dynCall_viidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viidddd.apply(null, arguments); +}); var real_dynCall_viidddddd = asm["dynCall_viidddddd"]; -asm["dynCall_viidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viidddddd.apply(null, arguments); -}; - +asm["dynCall_viidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viidddddd.apply(null, arguments); +}); var real_dynCall_iiiiiddd = asm["dynCall_iiiiiddd"]; -asm["dynCall_iiiiiddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiddd.apply(null, arguments); -}; - +asm["dynCall_iiiiiddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiddd.apply(null, arguments); +}); var real_dynCall_viiiiddd = asm["dynCall_viiiiddd"]; -asm["dynCall_viiiiddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viiiiddd.apply(null, arguments); -}; - +asm["dynCall_viiiiddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiddd.apply(null, arguments); +}); var real_dynCall_diiii = asm["dynCall_diiii"]; -asm["dynCall_diiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_diiii.apply(null, arguments); -}; - +asm["dynCall_diiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_diiii.apply(null, arguments); +}); var real_dynCall_iiidddd = asm["dynCall_iiidddd"]; -asm["dynCall_iiidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiidddd.apply(null, arguments); -}; - +asm["dynCall_iiidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiidddd.apply(null, arguments); +}); var real_dynCall_viddddiii = asm["dynCall_viddddiii"]; -asm["dynCall_viddddiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_viddddiii.apply(null, arguments); -}; - +asm["dynCall_viddddiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viddddiii.apply(null, arguments); +}); var real_dynCall_vidddddd = asm["dynCall_vidddddd"]; -asm["dynCall_vidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_vidddddd.apply(null, arguments); -}; - +asm["dynCall_vidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vidddddd.apply(null, arguments); +}); var real_dynCall_iiiiiiiiii = asm["dynCall_iiiiiiiiii"]; -asm["dynCall_iiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiiiiii.apply(null, arguments); -}; - +asm["dynCall_iiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiiiii.apply(null, arguments); +}); var real_dynCall_jiji = asm["dynCall_jiji"]; -asm["dynCall_jiji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_jiji.apply(null, arguments); -}; - +asm["dynCall_jiji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jiji.apply(null, arguments); +}); var real_dynCall_iidiiii = asm["dynCall_iidiiii"]; -asm["dynCall_iidiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iidiiii.apply(null, arguments); -}; - +asm["dynCall_iidiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iidiiii.apply(null, arguments); +}); var real_dynCall_iiiiij = asm["dynCall_iiiiij"]; -asm["dynCall_iiiiij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiij.apply(null, arguments); -}; - +asm["dynCall_iiiiij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiij.apply(null, arguments); +}); var real_dynCall_iiiiid = asm["dynCall_iiiiid"]; -asm["dynCall_iiiiid"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiid.apply(null, arguments); -}; - +asm["dynCall_iiiiid"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiid.apply(null, arguments); +}); var real_dynCall_iiiiijj = asm["dynCall_iiiiijj"]; -asm["dynCall_iiiiijj"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiijj.apply(null, arguments); -}; - +asm["dynCall_iiiiijj"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiijj.apply(null, arguments); +}); var real_dynCall_iiiiiijj = asm["dynCall_iiiiiijj"]; -asm["dynCall_iiiiiijj"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return real_dynCall_iiiiiijj.apply(null, arguments); -}; - +asm["dynCall_iiiiiijj"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiijj.apply(null, arguments); +}); Module["asm"] = asm; -var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__wasm_call_ctors"].apply(null, arguments) -}; - -var _runX2T = Module["_runX2T"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["runX2T"].apply(null, arguments) -}; - -var _malloc = Module["_malloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["malloc"].apply(null, arguments) -}; - -var _free = Module["_free"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["free"].apply(null, arguments) -}; - -var _main = Module["_main"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["main"].apply(null, arguments) -}; - -var _fflush = Module["_fflush"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["fflush"].apply(null, arguments) -}; - -var _realloc = Module["_realloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["realloc"].apply(null, arguments) -}; - -var __ZSt18uncaught_exceptionv = Module["__ZSt18uncaught_exceptionv"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["_ZSt18uncaught_exceptionv"].apply(null, arguments) -}; - -var ___errno_location = Module["___errno_location"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__errno_location"].apply(null, arguments) -}; - -var _ntohs = Module["_ntohs"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["ntohs"].apply(null, arguments) -}; - -var _htonl = Module["_htonl"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["htonl"].apply(null, arguments) -}; - -var _htons = Module["_htons"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["htons"].apply(null, arguments) -}; - -var ___em_js__initPthreadsJS = Module["___em_js__initPthreadsJS"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__em_js__initPthreadsJS"].apply(null, arguments) -}; - -var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__emscripten_pthread_data_constructor"].apply(null, arguments) -}; - -var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_get_global_libc"].apply(null, arguments) -}; - -var __get_tzname = Module["__get_tzname"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["_get_tzname"].apply(null, arguments) -}; - -var __get_daylight = Module["__get_daylight"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["_get_daylight"].apply(null, arguments) -}; - -var __get_timezone = Module["__get_timezone"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["_get_timezone"].apply(null, arguments) -}; - -var _setThrew = Module["_setThrew"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["setThrew"].apply(null, arguments) -}; - -var _memalign = Module["_memalign"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["memalign"].apply(null, arguments) -}; - -var _emscripten_builtin_free = Module["_emscripten_builtin_free"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_builtin_free"].apply(null, arguments) -}; - -var _emscripten_builtin_memalign = Module["_emscripten_builtin_memalign"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_builtin_memalign"].apply(null, arguments) -}; - -var _emscripten_main_browser_thread_id = Module["_emscripten_main_browser_thread_id"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_main_browser_thread_id"].apply(null, arguments) -}; - -var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__pthread_tsd_run_dtors"].apply(null, arguments) -}; - -var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_main_thread_process_queued_calls"].apply(null, arguments) -}; - -var _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_current_thread_process_queued_calls"].apply(null, arguments) -}; - -var _usleep = Module["_usleep"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["usleep"].apply(null, arguments) -}; - -var _emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_register_main_browser_thread_id"].apply(null, arguments) -}; - -var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_async_run_in_main_thread"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_0"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_1"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_2"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_xprintf_varargs"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_3"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_4"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_5"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_6"].apply(null, arguments) -}; - -var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_sync_run_in_main_thread_7"].apply(null, arguments) -}; - -var _emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_run_in_main_runtime_thread_js"].apply(null, arguments) -}; - -var _emscripten_async_queue_on_thread_ = Module["_emscripten_async_queue_on_thread_"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_async_queue_on_thread_"].apply(null, arguments) -}; - -var _proxy_main = Module["_proxy_main"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["proxy_main"].apply(null, arguments) -}; - -var _emscripten_tls_init = Module["_emscripten_tls_init"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["emscripten_tls_init"].apply(null, arguments) -}; - -var dynCall_ii = Module["dynCall_ii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_ii"].apply(null, arguments) -}; - -var dynCall_iii = Module["dynCall_iii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iii"].apply(null, arguments) -}; - -var dynCall_iiii = Module["dynCall_iiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiii"].apply(null, arguments) -}; - -var dynCall_iiiii = Module["dynCall_iiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiii"].apply(null, arguments) -}; - -var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiii"].apply(null, arguments) -}; - -var dynCall_v = Module["dynCall_v"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_v"].apply(null, arguments) -}; - -var dynCall_vi = Module["dynCall_vi"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vi"].apply(null, arguments) -}; - -var dynCall_vii = Module["dynCall_vii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vii"].apply(null, arguments) -}; - -var dynCall_viii = Module["dynCall_viii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viii"].apply(null, arguments) -}; - -var dynCall_viiii = Module["dynCall_viiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiii"].apply(null, arguments) -}; - -var dynCall_viiiii = Module["dynCall_viiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiii"].apply(null, arguments) -}; - -var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiii"].apply(null, arguments) -}; - -var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiiiiii"].apply(null, arguments) -}; - -var stackSave = Module["stackSave"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["stackSave"].apply(null, arguments) -}; - -var stackAlloc = Module["stackAlloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["stackAlloc"].apply(null, arguments) -}; - -var stackRestore = Module["stackRestore"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["stackRestore"].apply(null, arguments) -}; - -var __growWasmMemory = Module["__growWasmMemory"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["__growWasmMemory"].apply(null, arguments) -}; - -var dynCall_viijii = Module["dynCall_viijii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viijii"].apply(null, arguments) -}; - -var dynCall_dii = Module["dynCall_dii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_dii"].apply(null, arguments) -}; - -var dynCall_did = Module["dynCall_did"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_did"].apply(null, arguments) -}; - -var dynCall_di = Module["dynCall_di"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_di"].apply(null, arguments) -}; - -var dynCall_ji = Module["dynCall_ji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_ji"].apply(null, arguments) -}; - -var dynCall_vij = Module["dynCall_vij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vij"].apply(null, arguments) -}; - -var dynCall_jii = Module["dynCall_jii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_jii"].apply(null, arguments) -}; - -var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments) -}; - -var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments) -}; - -var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiiiii"].apply(null, arguments) -}; - -var dynCall_iidddddi = Module["dynCall_iidddddi"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iidddddi"].apply(null, arguments) -}; - -var dynCall_viiiddii = Module["dynCall_viiiddii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiddii"].apply(null, arguments) -}; - -var dynCall_viij = Module["dynCall_viij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viij"].apply(null, arguments) -}; - -var dynCall_viji = Module["dynCall_viji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viji"].apply(null, arguments) -}; - -var dynCall_jij = Module["dynCall_jij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_jij"].apply(null, arguments) -}; - -var dynCall_iiiijii = Module["dynCall_iiiijii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiijii"].apply(null, arguments) -}; - -var dynCall_viiij = Module["dynCall_viiij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiij"].apply(null, arguments) -}; - -var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiiiiiii"].apply(null, arguments) -}; - -var dynCall_iiiji = Module["dynCall_iiiji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiji"].apply(null, arguments) -}; - -var dynCall_i = Module["dynCall_i"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_i"].apply(null, arguments) -}; - -var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiiii"].apply(null, arguments) -}; - -var dynCall_viiiiiiiiiiii = Module["dynCall_viiiiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiiiiiiiii"].apply(null, arguments) -}; - -var dynCall_iidd = Module["dynCall_iidd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iidd"].apply(null, arguments) -}; - -var dynCall_iidddddd = Module["dynCall_iidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iidddddd"].apply(null, arguments) -}; - -var dynCall_vidd = Module["dynCall_vidd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vidd"].apply(null, arguments) -}; - -var dynCall_vidddd = Module["dynCall_vidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vidddd"].apply(null, arguments) -}; - -var dynCall_viidddd = Module["dynCall_viidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viidddd"].apply(null, arguments) -}; - -var dynCall_viidddddd = Module["dynCall_viidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viidddddd"].apply(null, arguments) -}; - -var dynCall_iiiiiddd = Module["dynCall_iiiiiddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiddd"].apply(null, arguments) -}; - -var dynCall_viiiiddd = Module["dynCall_viiiiddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viiiiddd"].apply(null, arguments) -}; - -var dynCall_diiii = Module["dynCall_diiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_diiii"].apply(null, arguments) -}; - -var dynCall_iiidddd = Module["dynCall_iiidddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiidddd"].apply(null, arguments) -}; - -var dynCall_viddddiii = Module["dynCall_viddddiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_viddddiii"].apply(null, arguments) -}; - -var dynCall_vidddddd = Module["dynCall_vidddddd"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_vidddddd"].apply(null, arguments) -}; - -var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiiiiii"].apply(null, arguments) -}; - -var dynCall_jiji = Module["dynCall_jiji"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_jiji"].apply(null, arguments) -}; - -var dynCall_iidiiii = Module["dynCall_iidiiii"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iidiiii"].apply(null, arguments) -}; - -var dynCall_iiiiij = Module["dynCall_iiiiij"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiij"].apply(null, arguments) -}; - -var dynCall_iiiiid = Module["dynCall_iiiiid"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiid"].apply(null, arguments) -}; - -var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiijj"].apply(null, arguments) -}; - -var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); - return Module["asm"]["dynCall_iiiiiijj"].apply(null, arguments) -}; - - -function invoke_viiii(index,a1,a2,a3,a4) { - var sp = stackSave(); - try { - dynCall_viiii(index,a1,a2,a3,a4); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +var ___wasm_call_ctors = Module["___wasm_call_ctors"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__wasm_call_ctors"].apply(null, arguments); +}); +var _runX2T = Module["_runX2T"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["runX2T"].apply(null, arguments); +}); +var _malloc = Module["_malloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["malloc"].apply(null, arguments); +}); +var _free = Module["_free"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["free"].apply(null, arguments); +}); +var _main = Module["_main"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["main"].apply(null, arguments); +}); +var _fflush = Module["_fflush"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["fflush"].apply(null, arguments); +}); +var _realloc = Module["_realloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["realloc"].apply(null, arguments); +}); +var __ZSt18uncaught_exceptionv = Module["__ZSt18uncaught_exceptionv"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_ZSt18uncaught_exceptionv"].apply(null, arguments); +}); +var ___errno_location = Module["___errno_location"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__errno_location"].apply(null, arguments); +}); +var _ntohs = Module["_ntohs"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["ntohs"].apply(null, arguments); +}); +var _htonl = Module["_htonl"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["htonl"].apply(null, arguments); +}); +var _htons = Module["_htons"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["htons"].apply(null, arguments); +}); +var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_get_global_libc"].apply(null, arguments); +}); +var ___em_js__initPthreadsJS = Module["___em_js__initPthreadsJS"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__em_js__initPthreadsJS"].apply(null, arguments); +}); +var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__emscripten_pthread_data_constructor"].apply(null, arguments); +}); +var __get_tzname = Module["__get_tzname"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_tzname"].apply(null, arguments); +}); +var __get_daylight = Module["__get_daylight"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_daylight"].apply(null, arguments); +}); +var __get_timezone = Module["__get_timezone"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_timezone"].apply(null, arguments); +}); +var _setThrew = Module["_setThrew"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["setThrew"].apply(null, arguments); +}); +var _memalign = Module["_memalign"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["memalign"].apply(null, arguments); +}); +var _emscripten_builtin_free = Module["_emscripten_builtin_free"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_builtin_free"].apply(null, arguments); +}); +var _emscripten_builtin_memalign = Module["_emscripten_builtin_memalign"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_builtin_memalign"].apply(null, arguments); +}); +var _emscripten_main_browser_thread_id = Module["_emscripten_main_browser_thread_id"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_main_browser_thread_id"].apply(null, arguments); +}); +var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__pthread_tsd_run_dtors"].apply(null, arguments); +}); +var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_main_thread_process_queued_calls"].apply(null, arguments); +}); +var _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_current_thread_process_queued_calls"].apply(null, arguments); +}); +var _usleep = Module["_usleep"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["usleep"].apply(null, arguments); +}); +var _emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_register_main_browser_thread_id"].apply(null, arguments); +}); +var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_async_run_in_main_thread"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_0"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_1"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_2"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_xprintf_varargs"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_3"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_4"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_5"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_6"].apply(null, arguments); +}); +var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_sync_run_in_main_thread_7"].apply(null, arguments); +}); +var _emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_run_in_main_runtime_thread_js"].apply(null, arguments); +}); +var _emscripten_async_queue_on_thread_ = Module["_emscripten_async_queue_on_thread_"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_async_queue_on_thread_"].apply(null, arguments); +}); +var _proxy_main = Module["_proxy_main"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["proxy_main"].apply(null, arguments); +}); +var _emscripten_tls_init = Module["_emscripten_tls_init"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["emscripten_tls_init"].apply(null, arguments); +}); +var dynCall_ii = Module["dynCall_ii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_ii"].apply(null, arguments); +}); +var dynCall_iii = Module["dynCall_iii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iii"].apply(null, arguments); +}); +var dynCall_iiii = Module["dynCall_iiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiii"].apply(null, arguments); +}); +var dynCall_iiiii = Module["dynCall_iiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiii"].apply(null, arguments); +}); +var dynCall_iiiiii = Module["dynCall_iiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiii"].apply(null, arguments); +}); +var dynCall_v = Module["dynCall_v"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_v"].apply(null, arguments); +}); +var dynCall_vi = Module["dynCall_vi"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vi"].apply(null, arguments); +}); +var dynCall_vii = Module["dynCall_vii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vii"].apply(null, arguments); +}); +var dynCall_viii = Module["dynCall_viii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viii"].apply(null, arguments); +}); +var dynCall_viiii = Module["dynCall_viiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiii"].apply(null, arguments); +}); +var dynCall_viiiii = Module["dynCall_viiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiii"].apply(null, arguments); +}); +var dynCall_viiiiii = Module["dynCall_viiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiii"].apply(null, arguments); +}); +var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiii"].apply(null, arguments); +}); +var stackSave = Module["stackSave"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackSave"].apply(null, arguments); +}); +var stackAlloc = Module["stackAlloc"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackAlloc"].apply(null, arguments); +}); +var stackRestore = Module["stackRestore"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackRestore"].apply(null, arguments); +}); +var __growWasmMemory = Module["__growWasmMemory"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__growWasmMemory"].apply(null, arguments); +}); +var dynCall_viijii = Module["dynCall_viijii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viijii"].apply(null, arguments); +}); +var dynCall_dii = Module["dynCall_dii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_dii"].apply(null, arguments); +}); +var dynCall_did = Module["dynCall_did"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_did"].apply(null, arguments); +}); +var dynCall_di = Module["dynCall_di"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_di"].apply(null, arguments); +}); +var dynCall_ji = Module["dynCall_ji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_ji"].apply(null, arguments); +}); +var dynCall_vij = Module["dynCall_vij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vij"].apply(null, arguments); +}); +var dynCall_jii = Module["dynCall_jii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jii"].apply(null, arguments); +}); +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments); +}); +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments); +}); +var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiiii"].apply(null, arguments); +}); +var dynCall_iidddddi = Module["dynCall_iidddddi"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iidddddi"].apply(null, arguments); +}); +var dynCall_viiiddii = Module["dynCall_viiiddii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiddii"].apply(null, arguments); +}); +var dynCall_viij = Module["dynCall_viij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viij"].apply(null, arguments); +}); +var dynCall_viji = Module["dynCall_viji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viji"].apply(null, arguments); +}); +var dynCall_jij = Module["dynCall_jij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jij"].apply(null, arguments); +}); +var dynCall_iiiijii = Module["dynCall_iiiijii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiijii"].apply(null, arguments); +}); +var dynCall_viiij = Module["dynCall_viiij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiij"].apply(null, arguments); +}); +var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiii"].apply(null, arguments); +}); +var dynCall_iiiji = Module["dynCall_iiiji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiji"].apply(null, arguments); +}); +var dynCall_i = Module["dynCall_i"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_i"].apply(null, arguments); +}); +var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiii"].apply(null, arguments); +}); +var dynCall_viiiiiiiiiiii = Module["dynCall_viiiiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiiiii"].apply(null, arguments); +}); +var dynCall_iidd = Module["dynCall_iidd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iidd"].apply(null, arguments); +}); +var dynCall_iidddddd = Module["dynCall_iidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iidddddd"].apply(null, arguments); +}); +var dynCall_vidd = Module["dynCall_vidd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vidd"].apply(null, arguments); +}); +var dynCall_vidddd = Module["dynCall_vidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vidddd"].apply(null, arguments); +}); +var dynCall_viidddd = Module["dynCall_viidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viidddd"].apply(null, arguments); +}); +var dynCall_viidddddd = Module["dynCall_viidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viidddddd"].apply(null, arguments); +}); +var dynCall_iiiiiddd = Module["dynCall_iiiiiddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiddd"].apply(null, arguments); +}); +var dynCall_viiiiddd = Module["dynCall_viiiiddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiddd"].apply(null, arguments); +}); +var dynCall_diiii = Module["dynCall_diiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_diiii"].apply(null, arguments); +}); +var dynCall_iiidddd = Module["dynCall_iiidddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiidddd"].apply(null, arguments); +}); +var dynCall_viddddiii = Module["dynCall_viddddiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viddddiii"].apply(null, arguments); +}); +var dynCall_vidddddd = Module["dynCall_vidddddd"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vidddddd"].apply(null, arguments); +}); +var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiiiii"].apply(null, arguments); +}); +var dynCall_jiji = Module["dynCall_jiji"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jiji"].apply(null, arguments); +}); +var dynCall_iidiiii = Module["dynCall_iidiiii"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iidiiii"].apply(null, arguments); +}); +var dynCall_iiiiij = Module["dynCall_iiiiij"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiij"].apply(null, arguments); +}); +var dynCall_iiiiid = Module["dynCall_iiiiid"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiid"].apply(null, arguments); +}); +var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiijj"].apply(null, arguments); +}); +var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = (function() { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiijj"].apply(null, arguments); +}); +function invoke_viiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + dynCall_viiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_iii(index,a1,a2) { - var sp = stackSave(); - try { - return dynCall_iii(index,a1,a2); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_iii(index, a1, a2) { + var sp = stackSave(); + try { + return dynCall_iii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_iiiii(index,a1,a2,a3,a4) { - var sp = stackSave(); - try { - return dynCall_iiiii(index,a1,a2,a3,a4); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_iiii(index,a1,a2,a3) { - var sp = stackSave(); - try { - return dynCall_iiii(index,a1,a2,a3); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_vi(index,a1) { - var sp = stackSave(); - try { - dynCall_vi(index,a1); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_vii(index,a1,a2) { - var sp = stackSave(); - try { - dynCall_vii(index,a1,a2); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_ii(index,a1) { - var sp = stackSave(); - try { - return dynCall_ii(index,a1); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_ii(index, a1) { + var sp = stackSave(); + try { + return dynCall_ii(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_viii(index,a1,a2,a3) { - var sp = stackSave(); - try { - dynCall_viii(index,a1,a2,a3); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_viii(index, a1, a2, a3) { + var sp = stackSave(); + try { + dynCall_viii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - function invoke_v(index) { - var sp = stackSave(); - try { - dynCall_v(index); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } + var sp = stackSave(); + try { + dynCall_v(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_iiiiii(index,a1,a2,a3,a4,a5) { - var sp = stackSave(); - try { - return dynCall_iiiiii(index,a1,a2,a3,a4,a5); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_iiiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + return dynCall_iiiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_viiiii(index,a1,a2,a3,a4,a5) { - var sp = stackSave(); - try { - dynCall_viiiii(index,a1,a2,a3,a4,a5); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_viiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + dynCall_viiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) { - var sp = stackSave(); - try { - dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - -function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { - var sp = stackSave(); - try { - dynCall_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9); - } catch(e) { - stackRestore(sp); - if (e !== e+0 && e !== 'longjmp') throw e; - _setThrew(1, 0); - } +function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + var sp = stackSave(); + try { + dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } } - - - -// === Auto-generated postamble setup entry stuff === - -Module['asm'] = asm; - -if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +Module["asm"] = asm; +if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = (function() { + abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = (function() { + abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); Module["ccall"] = ccall; -if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; -if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = (function() { + abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = (function() { + abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = (function() { + abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = (function() { + abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = (function() { + abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = (function() { + abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = (function() { + abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = (function() { + abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = (function() { + abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = (function() { + abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = (function() { + abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = (function() { + abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = (function() { + abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = (function() { + abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = (function() { + abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = (function() { + abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = (function() { + abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = (function() { + abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = (function() { + abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = (function() { + abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = (function() { + abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = (function() { + abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = (function() { + abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = (function() { + abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = (function() { + abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = (function() { + abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = (function() { + abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = (function() { + abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = (function() { + abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = (function() { + abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = (function() { + abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = (function() { + abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = (function() { + abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = (function() { + abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = (function() { + abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = (function() { + abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = (function() { + abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = (function() { + abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = (function() { + abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = (function() { + abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = (function() { + abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = (function() { + abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = (function() { + abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = (function() { + abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = (function() { + abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = (function() { + abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = (function() { + abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = (function() { + abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = (function() { + abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = (function() { + abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = (function() { + abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = (function() { + abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = (function() { + abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = (function() { + abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = (function() { + abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = (function() { + abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = (function() { + abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = (function() { + abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); Module["establishStackSpace"] = establishStackSpace; -if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = function() { abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = (function() { + abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = (function() { + abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = (function() { + abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = (function() { + abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = (function() { + abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = (function() { + abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = (function() { + abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); +if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = (function() { + abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); +}); Module["writeStackCookie"] = writeStackCookie; Module["checkStackCookie"] = checkStackCookie; Module["abortStackOverflow"] = abortStackOverflow; @@ -9226,230 +8762,168 @@ Module["wasmMemory"] = wasmMemory; Module["_pthread_self"] = _pthread_self; Module["ExitStatus"] = ExitStatus; Module["tempDoublePtr"] = tempDoublePtr; -Module["dynCall_ii"] = dynCall_ii;if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { configurable: true, get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { configurable: true, get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { configurable: true, get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { configurable: true, get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", { configurable: true, get: function() { abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") } }); - - - +Module["dynCall_ii"] = dynCall_ii; +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { + configurable: true, + get: (function() { + abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { + configurable: true, + get: (function() { + abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { + configurable: true, + get: (function() { + abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { + configurable: true, + get: (function() { + abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }) +}); +if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", { + configurable: true, + get: (function() { + abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }) +}); var calledRun; - - -/** - * @constructor - * @this {ExitStatus} - */ function ExitStatus(status) { - this.name = "ExitStatus"; - this.message = "Program terminated with exit(" + status + ")"; - this.status = status; + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; } - var calledMain = false; - - dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; }; - function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - var entryFunction = Module['_main']; - - - args = args || []; - - var argc = args.length+1; - var argv = stackAlloc((argc + 1) * 4); - HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram); - for (var i = 1; i < argc; i++) { - HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]); - } - HEAP32[(argv >> 2) + argc] = 0; - - - try { - - - var ret = entryFunction(argc, argv); - - - // if we're not running an evented main loop, it's time to exit - exit(ret, /* implicit = */ true); - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - noExitRuntime = true; - return; - } else { - var toLog = e; - if (e && typeof e === 'object' && e.stack) { - toLog = [e, e.stack]; - } - err('exception thrown: ' + toLog); - quit_(1, e); - } - } finally { - calledMain = true; - } -} - - - - -/** @type {function(Array=)} */ -function run(args) { - args = args || arguments_; - - if (runDependencies > 0) { - return; - } - - writeStackCookie(); - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - - if (ABORT) return; - - initRuntime(); - - preMain(); - - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - if (shouldRunNow) callMain(args); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} -Module['run'] = run; - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var print = out; - var printErr = err; - var has = false; - out = err = function(x) { - has = true; - } - try { // it doesn't matter if it fails - var flush = Module['_fflush']; - if (flush) flush(0); - // also flush in the JS FS layer - ['stdout', 'stderr'].forEach(function(name) { - var info = FS.analyzePath('/dev/' + name); - if (!info) return; - var stream = info.object; - var rdev = stream.rdev; - var tty = TTY.ttys[rdev]; - if (tty && tty.output && tty.output.length) { - has = true; - } - }); - } catch(e) {} - out = print; - err = printErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); - } -} - -function exit(status, implicit) { - checkUnflushedContent(); - - // if this is just main exit-ing implicitly, and the status is 0, then we - // don't need to do anything here and can just leave. if the status is - // non-zero, though, then we need to report it. - // (we may have warned about this earlier, if a situation justifies doing so) - if (implicit && noExitRuntime && status === 0) { - return; - } - - if (noExitRuntime) { - // if exit() was called, we may warn the user if the runtime isn't actually being shut down - if (!implicit) { - err('program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'); - } + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); + assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); + var entryFunction = Module["_main"]; + args = args || []; + var argc = args.length + 1; + var argv = stackAlloc((argc + 1) * 4); + GROWABLE_HEAP_STORE_I32(argv | 0, allocateUTF8OnStack(thisProgram)); + for (var i = 1; i < argc; i++) { + GROWABLE_HEAP_STORE_I32(((argv >> 2) + i) * 4 | 0, allocateUTF8OnStack(args[i - 1])); + } + GROWABLE_HEAP_STORE_I32(((argv >> 2) + argc) * 4 | 0, 0); + try { + var ret = entryFunction(argc, argv); + exit(ret, true); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } else if (e == "SimulateInfiniteLoop") { + noExitRuntime = true; + return; } else { - PThread.terminateAllThreads(); - - ABORT = true; - EXITSTATUS = status; - - exitRuntime(); - - if (Module['onExit']) Module['onExit'](status); + var toLog = e; + if (e && typeof e === "object" && e.stack) { + toLog = [ e, e.stack ]; + } + err("exception thrown: " + toLog); + quit_(1, e); } - - quit_(status, new ExitStatus(status)); + } finally { + calledMain = true; + } } - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); +function run(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + writeStackCookie(); + preRun(); + if (runDependencies > 0) return; + function doRun() { + if (calledRun) return; + calledRun = true; + if (ABORT) return; + initRuntime(); + preMain(); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout((function() { + setTimeout((function() { + Module["setStatus"](""); + }), 1); + doRun(); + }), 1); + } else { + doRun(); + } + checkStackCookie(); +} +Module["run"] = run; +function checkUnflushedContent() { + var print = out; + var printErr = err; + var has = false; + out = err = (function(x) { + has = true; + }); + try { + var flush = Module["_fflush"]; + if (flush) flush(0); + [ "stdout", "stderr" ].forEach((function(name) { + var info = FS.analyzePath("/dev/" + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + })); + } catch (e) {} + out = print; + err = printErr; + if (has) { + warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."); + } +} +function exit(status, implicit) { + checkUnflushedContent(); + if (implicit && noExitRuntime && status === 0) { + return; + } + if (noExitRuntime) { + if (!implicit) { + err("program exited (with status: " + status + "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"); } + } else { + PThread.terminateAllThreads(); + ABORT = true; + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) Module["onExit"](status); + } + quit_(status, new ExitStatus(status)); +} +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } } - -// shouldRunNow refers to calling main(), not run(). var shouldRunNow = true; - -if (Module['noInitialRun']) shouldRunNow = false; - - -if (!ENVIRONMENT_IS_PTHREAD) // EXIT_RUNTIME=0 only applies to default behavior of the main browser thread - noExitRuntime = true; - +if (Module["noInitialRun"]) shouldRunNow = false; +if (!ENVIRONMENT_IS_PTHREAD) noExitRuntime = true; if (!ENVIRONMENT_IS_PTHREAD) run(); - - -// {{MODULE_ADDITIONS}} - - - diff --git a/www/common/onlyoffice/x2t/x2t.wasm b/www/common/onlyoffice/x2t/x2t.wasm index 0f5879bef0fed418932d3a97f925bf91d2f1c747..3a35af86abb2b1c284f14b58d5d7253fdaa8549f 100644 GIT binary patch delta 1586759 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

    `HEcGWS4*<2o-hZY5wM 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
    !dXWkHJ)`&AVLDo5|-Hp ztii`^bLOj=$^?HYbn+)+27QDEecODQ(SY0LUPbR4eB3s#?il#O;N!Nrm;bB5FQG-u zSB7gp=NgW*X)7AE;kHIY0-g3M>Td8esPp-b;S_^kNaMZy2Mqomdfv;QZ}4l=b}#=$ zgWr=pH5~o#8GO9Y?&W`O@K@4AFaKW#zm%4E`R70H23(hRdil`?zYo>8z_B~f;Nwke zFMq1RFQUm_{t|<~pO$&~uNi#&#Dtf>$>1ka%?QWtcLskZbz{D|5q(_ve5f{gLC3=M z<)EDftA{}kG3bc~{eaM%amQ#K^y@=zt|3F9ox^COL4Rq`M+~}NuIoc5gYIk4qYZj0 zXlL<#EEg-cQ^_$J$e>pn^m_*Vg+cE#=>HgWwHIAubq%_im&VH7*;~PT2L|2Wphp<= zB!ix2&~prWp+PS-=pvzc2C`@4o3%8kW{jtqTKF~^a@!618-xCrL7z0}T1(tOn;7&} z2Hne`Z!zexON?2#-)NX?&}7gn4Eh~|-f7U^8T1K*u1>C_xEmp}k6CEzt>En^gYIY0 zBMkZ;gPv{BOALC2LBC_re=+D1rtQA^1pN=A;gmuDX{qCBp4Hl*;|#i|K@T(Ny9|1k zK`%6Dn~cgzgWhP+pBeOCgFa-?KO1z-mt3bC8+1FNIR~4}&9_=b-(RlL#g?}n- zFa&sci38S!0Dt0vZP6Zu(hh~&#~JOz(H;$c3`(rDKWMaPYC~3gv~`g7r@Za>O@dqz z=!nKnBCuQp*r~5Tv(a~fc(q+QT5}nmvfx+E4ui)Z4+<|QjO!uesjVGt0XgQg?6siz zbB1hBL-tP?&5@|i&&HstZd zgyq$l`ofo8J=Gtht!QYZUJs2n8ah3Om#8sf-BEbM)&s~Jww^MIH;F78z0>FySxO!M zgxw*&EiwS8J@4|TQQqHu!mf<@%9APJJHPf<`k4NC5!H}eXOy)A?`!gBczyaO-Y98Q zi!1#2i+@j@8qtQ@c+I5d*^Ks+<|AkDI!1puIsm0T=z+i_ar}Fzc5LEZZYa?{MqNBg zy{p1ja95G}%9U%tcjVLR(;w=<74_7s_T##u<|Z9dY4X%Ho;u)nQnc1A@SQ*~mtOuC z20ush>+w)Ft?SBfd_3R6<3bp0(2d*fK$~OZ5ZXA(+Yr?-iSl;faEbB($U0s(%+e#P z9DUU=fR|37T;JqBVJJ_}%C|;9(MS}Y`-3Pv_oGC4y?X9+=0cVoNkQ9a6dvv|z_B7b z1hS4JTTDmZLW46h*fy{uDoRiNQQn7~&7aW9$3xj2qC5>aL6lzxSx0%|6ZAIEjheJn zG#rCx{F(NIkyx|P;8@Ljg8qFmdMLA>7-n~f*-0>SmzbRlyj#phHE_+I5+!PISD+ye zo%w?oY@uA|(D@Br{*VQRJEPIyxHHpiNNw&mB-N)4d;na|YPT)WLvjy%nIgX33(OGT zUO`7^NO0#8{d6K80pEEo0Cz5#uSV*Rm$_-5^rVp}?a<)3mP6g^#dxl`H0No&Ck{ii zP##8k1Z6e~fBrv~vCkD3pCWp$8l_GPAw>Pd<8@yhr3RAEAz4r9^G%`_U)UZvxvA6&14 zL9<6$)bvXB!#C9aEd9~-Cm1yQlTIVAit*fpA7lvy_ExhWb;|WS%(U%YNFBo*bn`X& zRw>TP-^$)5bahCpKU^e*Q?dNxJHV1kqtBLuI`RuwN$*D zZymvm{YPePW60{Vx(Cw$A82Vc^?_C)+LaYF8;Swu7OFr;MH9DLX1t zR>?YkfXKHFL6*n-I}Sv>rymyn2#1b|Qz7SZ{)OB~IX2Y4n=UV6&gN5*I-5g)_0{>v zRLseQuhsO%bIfW%Mtkl1_>~Pz?QxW!QBI)n5tLXfMa@Ep>F7!s;{hn44t;q~9~#tq z`jjT_svl z&N}l$ft<`sJEd5O7^Sjl%zxPpq2Y7VvNJqoHF?T-{W*gX=K7Ve=d%ODDSB{>r#J4u zg#vr1E0KsR-E&fyY4@Du80JBW+=*|GW6B!HkrukToRflSfKM?+adMzlgmy&&Wwi4_ zRJ&`6wemB4-~>Y3fpm8I@|3YNJY@}K$|_m6eeDordCb4#aptak>k@e1NFoSJo%bZc zFvv-_|2my?zM#6#RGAK(bUm+4v6^6%f=JtbE9InPXL!mQ%ar+E$2lo51%dTHWbe+m zn!x)@QJSJOlSmGQiEmexVX(henB0y%@v^Iv8|nD{FH&+sTrhB@bs+>&B@?*O7w1vJ)w$1o?|q`ml` zlo)|nl(5w8AR6R#BJDQ4PE;1{$_la^&sp_bQ>;ih9VA+>|NbiFDPm`M%G%46`Bq2% z`_>`I@_hX5DaCJ+!TXLVolq{9NW#IltIDw0wJVI66K&(|?%EJsTJA~tqLh;^YhS+A z8PjxyOqJht=lt)t0zVw!b>i4~y-wH;5lrMM>yw&d#bT5ypz$s6iiHA};VEM~JY`*E z#B?3U-%gh~_~~xQcSX4hB@Tr@f$;5MDe_Z~+J6KTfn%5xEoXwePE?Mz zeeF z)3W|MhI!7|8J@FiWzIrc=ll=0fhPaRx8mXabrL{%b#?reC%_{T!ghW9n+7=PN}kq9 z7YgJ&%X%usT7Qsp4*P$%QU$aPFZjdW@SJs%ISW_a4wk{Jf96})!}$aWpptdl*A79J zNB*(LYNcB&D_sasEpCgjBf==1LEF6QmDLbpKIa@eWAmKdAallyFxTyX44(Q|zSSMh z_mBX5uVeiWOo9LXIp>P)T%B~qAwad#J&#Ab7^QR3>iKV01w!ZQ>?@y>j-BBV@2RH@ z&wtNkgt?C6-&Y4F9l<}Pg!jE9=>n?5z7>!HANzCCCBCF{j!`}TGZ|+K_*&vh$S($a7|8fOF z+-{fWVd78u)=h9AQ6dOI-42-nPP)t$I_b`hxc;x4;P2%)(c%m7)a;nf1HWiHkj`iI z<)mY0c*^?AlvPx>D-sBCyZt+l*Z++FNCEE$N(7;;WBm`N0nVl7uj*W>6!QMRQi3AK zNmu=q6l*v}DHyaJs3J}}*1=PjBva-?U7vq_=)m>@F?d#gIseC=%(rfa_k$#Yu+^RO ze;@`q>1G$}r1KT+%5>mFoBdjfwe1(3bU~zTzm)PMvNJqogJsJ6t7HBHQ{aF9A*b@K zAw2)LNCb)z=DIyZ3~~}J-KLW$5ae8`yA}I?L{|w~@Be-1aE4OO12)7#43$yzt&aKk ztwY7~QK$2*Tj5NyI8<((*Pn6)0&M4L{rpost!1IQ{wu5D?2bH_W45PQrN8QV4H9ja zsg&oH4e>DECc_w-x(^2MW2ukwcY*^${oUW`pW(KQ{8CLQX&%UJo&qZsagNgii52%u zMp)~`e8>HR&viluf}D>DJ5#LL2*xMc_O%1#`NM{I7{}{j^t)~cs=(>Lw0ePc2b@V0 zhbmdOeeF;wd0s9q`chA8`H1;1Pk`q#^9y`G4$*~#<{h_VfajGB@i0!1VGMQMuE;<} zjRI>ToVimR3UVFa0`$QE&+9#3>v;_Xc`Emm-~mVtThFVmgofs6jg=rL$tZg3-W~V3 z1kUadr24K43#_}Ki@tv%#uHy{7wrZ1@Due}Bz}*376~QI_%F^9OYl$@jWZgp%ecc3fOwEkp!QqvRlpLyKcP z7gpOrdw~snMf)sm)-%w`3Dt1wXzv^9A*A_|5dXKYUV*g;hMz@QjPe{xc=$L$hsrRI zV){&X6w9O&DLWh!Ozl$3cSTAG7^HB1U(A$>qVOdP? z0(pyy0%ST*!mM6e- zIqb-2Yc`?_3C&lYjsc!mHpIjDnv6=Q>z7qzU@5K2;}fQzXfJJ6V68?lucH*Byn(_a zS$xc0@DR%rOTi( zRw|qg7Oj3Xh!t}5A4~M1uE)14us(sUttj->D>0t9YVouk*rSrDSFiX~cl8Pe%@dy% zU0{6%=${ajHL)QGT7XrPsJIR&zub6xuFF5f399;$i$k zhB4Un%Y9Y2g%-TV`4t%Iyn8s!&AU+2JdmwA7FeYi#BcRL+GjJuT*qo@dc+C(+?_f> zgMplzb0>_kc6HEs`a9Y_S3`h&9%?qqL%mOOwye5ckw7Th_jfL!BWw7d7T|Ips4n{h zK%LD8XSvxNE}Dlsu}cA7j>B00OU4_FFxPP>=v)qPW=A}#Gdmc_nceh}G1jRobY?5s zHY*{bd8pYa2YOgW+Ns-TGs0Z2>3T#X*T;BnuZDk390a^oee0vcTsN`9Me}Gki7%j~ z8~8A7LQ8->0z`e7?s~$FCR{W}v*-E(+VOsj=Vtt)obABD0pdV4H+k7^G~uE-nv5O= z6u&vf)4y5~5#Al{^+ne>z!O}J=|CZ`uN?Gw(l99jbG5g_VJi(KqR6E2#gDehZ9 z8~?)5;65-=-3JZ;bu^2gccTdx&C%>iETGaI91Wg?1J#r808mGh@q!yoxM+@MQc?kR z`J9iNNz@rQFhJDDO;WBKO}J=|CTnm3)&7#_1`hy%>Oo)tD0B0Y8%;)-XpW}Utp#-G zE1nztPi5f108!7)(mXesaM2u1&tV0Ww3p|mCk+7h2oUw$WUq9i2{T<&-C^a>(rHyG z2NWFCfu+3a1{N-wW64gzw%|LSrfk{{>=7X9Xx6{(MiVZYqd74eS5^mNJoT!bpu@lh z{-O;{RtEl&@_i^%QSL|Kz5l^A?%m7~(sj--#-TN&y$5-Ef`fXRR@NEoeQXdenqyf! z9+!+WF`~0jgc0UCE*UH90AE7ZsXtadVh9@AP{{c-OA;`f(ZRkkTpox5 z9cP}{M-u{!yDN88_yzW3uin-M+M+H|+hIYrxMr3z^KcOF&J37&V3gcEUr zB%&X6J5U7y_Q&xbU<85n=lM4sn09Z0^(2NfTZS~$b=wyMyv~2tNoRgA5J!YN`_i9!d!0x6!KrxlAHh6}vKZw#3GCodH?R=W7pswT3~*o( z)9KS+V?5nGK_Yp0Z}%K=`9N2KV5xYB6*+5z&sG>jQJ)=HnD7wAA}JCM$0_2p?~ z$9Pm%$+VVJ*IUhU1XNyxu3g)&(Bm$%@RmKIDUyhSR(CEn15wC{Hzidkp08+^)qxYN zV9Z!+|4f}=A*A(Bw>SoPve_sP^=mTJp{-;7eKipO2)>{I=Ux{F1FCcW1*G7t{+tV) z({wIW2Gviulqbl!Fn#=3>(IkG7lKUd`7cW;=K>q$p)Qu84t^c$e;@{WK3ZVC0q53; zgFe^oKoykJpL5~hojMoJh4#4`%Hne_w3#^8IyPJ9LJ(*@{}n0XTwtR-)NjgA2d9qX zFIWn5<`!6M;oMu|V5RE3{`=G+$ny5NJm%zyPuIy4Le%qr;I6S&EQXI0EW9*sHI-+W z6OY?@l-9|-2DQ%Xe^3=xLf?_c3aqyg%z6~IZ<&lR*OmP<9N@%D&(Mh%4CI_Doif&1 zil~22WB$u-2%OI&$+~%{-;vz;UEQuoAjIwViN_19cj4Uz@i5GFe4V=-2RIjcPSd#% z4CMKbpE}kmgiTFj{@qIGXwC(;!y~;>Mq1T*{Xc^d=DKZqWGyJL-h%`0i-%#T+m$xR zxsaBrb0HYW^WS|s=D+9(oebTlhll1|V4FPBA2`>4UWN>Pxa#%?=P($NU0`iO+lSH~ zqPp#u0nUXjGj%QmhWL&jE8t|9J!7o3_DP)!;iA>~myPmJZPIR-eeQaXGI2NodOr8x!GrwC>T%4aA$C9s*Vx`Bm|)>j9P0S+vC z5x(;ZCw8HPzK-2#C=K#5)@Zw4#>zzgv5ztveB|>%mc12IhSBqdwtem3k33H!_v2~( zLZ(&f_SuXu*RTDZN0oLUk5)D1=Q6=T{ha3L4)-}txM-f8O)ug-^vn2R(=7X9 zXqtcSMiVZYquIX{@1eKiXz&eRp!$Yy0H~umWkeG$nxmj?&t`s!xapg zgJFFfeKkaHS!2&;1iy|SdhN(3pukX{fKFVP>ixb@C}|!V>y-lQ4;Z9KHBfvJdnO~S zb@el2<05q)1%jMPZ`4e+)~?iPRcYGxwFBh&!-jYm|EP!2?|R=r6*&E8Q*@VDPw#4h zVGs3U)J?VAd<-Sc1G(k30;?eg@e(H=&tjY{5YoEJ#~+*Nd<+CRAFDS_wPqqZpJ?0H z4v^;$8{%PXB>CuX-40ZN(?9q10;@5cX(A3)vTpm@p;GdEy861Mp4RdaHx1y)-) z6NS`$mh{oOM8283iyfk+II`AD=_k1P_9Jjio!t*ndSx&LRzQ7sSO3zRWKZfay7~| zDEtXMAE^*3!#s*JGu=@vljc+?v%yC`kJdIC(2MW&1cv%v&%lS=YwJ+b?04-=1=fw2 z@m?ss+glXdHx~aE2d@GE)hhwMpnaA$s}HpDRBV~$PDKdm8XS?8NGtmBZI0lezTI)? zD|br5MRP3sKgQFn{_->nsGer|fY*=X;h$7vocHEouxa)(l_n>#Z~me7G5!MA$6(WH zBtrx~AIeme`^AwE^KB~_26&1R zBgc6+&y}Zb{hj5CI;bhySzt}Ws5~Gevnd#LzUZlpLeApmu{tUJK^~!!=yBF;IBnAU z+rVWsm_n7Id4yOwkI-}(p-R*T_}ZaddA#Ux8!v|bpI&-{t>l9|%R)#sv8h%?~6=Ed+EbB#h z>ezCWWsq0coez&!`-DJ{(_-|j@z#z~z0&@Uw$Ihz2cJig4e=j?w)Kr+`=4mKt9>~~(1=gDw#I-1I;hHh+&REaY)naKFu(zM6kG4k7xlx3Z z9=>=y-beYnPDE6~LaU+tC%!3yVSK+mJv}+r(+#6HAIPKV59(2Dwag75Tr>w0aTqU> z-oq~|MjWP3LEuMO0wMG}iicLXIT1>lBRF-Wz}kiB_yT1&XLbf>_9+?$?CmG&IT`Y* z8$~E-jw0b`f%P{;P>O<&eKsSkb@jePoz?n$5eV}6;-aGQ)`|bd-D3sTJ~;Co%6^pZ#jy(bwyzz6ERTIed7kpT)+`?Hy(SGh&Hsnp zQOffgOQ)yvX*V#`r`;y&+`~GQH2a-*vcNiuDgP1W7#63jhj?+yqZz>7exhES9vN|m zcas}tT5obW2XcqsVKqmH;idoN8s;%BqFS?fGy_9Ds?#2H0}3-;Q;j4CglnML98h4W z1FHL!8&H^OH=r#vc`gSO80vtE3*CUiOuGT?qUrNFpukWERC}cxP?%{qpi=7g1P2rt z>VO));RY0D+70Ls^~>gf0z(~8`q%DK8%mmw{f4!cTb(;t))grD*k?0BTIbsYea=r) zw+S@jy{R)9<=6Q~Uj=4e?T zN8dxDKWDv9MFN#@zukG7#1<$b9#W(FMHBUh|EOzaR5+qcH#jbtM%nY$%v1|YS zkO+@qv1=R0Vpt7}U2Jy}v|T?JkN};A{i-o6c5UC6%m5=kGho|?wK}MV#jahMlSC*C zi(Nkc&wX|Zp<%JBj{hoL1MIWT$DxmygLMPO@uxQe;WjLG`S|CLf4i5!``Y0)+_2el zt4YV@R?&6KtxebAa<^g67BtRe*IE8HHO8m9rlRN4A>6eP@id7 z?Be_KZZd>uj>|MGb}|3R!YVKhQ+RT{};B1&kWdB!ylHRKGU$+#r`Ygb6lojvFq&rexI2^NUrh>%MoE$m0_`K z8^>aJB0e)*mckUAxN%DguUFN!AS84Y1d*4-={gXT3`15ti4C<8d{y(S+ebi_Bll^?f#2?;{Khg+48G^C} zhPg2BQPk(4R6@?KtYC=bc>N7dB>p*Q2R?-U85X;C0CN|RVXWA{13u$?5~4%pbLncaQ?5v zNkT=;-#S=xG)+Cj3m%Q*Kln<0(8>4zgBOhthQ+R3rP0UX`R}=+kJM-8GoIO22k-31 zHOG+2T+C+(mG5f@(m4oydH$UT5S8~j2!_S3%}+n8!m!xY`!DkWMDXXhywSq*ALoUD z@ER7oeEnA?hQ+QO+{3B7p)PZzZSP~(z>Z^|4U1jmU)2~EyI6nxT)F&>_{@Oqs$6`q z2G~`(_~2}U`LDXg2S)@S|NJ&mRjmPbRT&n$_8Ct?(~u z5&M5Xk|t=;Tca`mmB`W{8a&IM?fW4URA=lejeZ#B-^T@`+~}PP8S|Nfv$UHxx?MS3 z|2t2>$`=fg9H0NI#IV@4*?8GQ6QYRE4A_1C>&{7747<;NtH!Wgb@TOa<+C;TBjbJk zTSZA|S84Vi!~3UInf+F}^Zd7}lF+Uy!(#W$=fB}k!khH--#`rWl?;Dk=|8#cJQvq9 zpMd_a?SJF)znpNNvHtIP2>5uo$Xs7|-DyaB55;;KU&IemuKqR6N~*7aL8~X#{1^BW zn12)a4Zq4`aV!0f<<|Y!g-t{G_%h2nh_V&s0n}M`7Gz6q(mHY>8{HWH3^F1e0dR#ux}?MTu+ z64RDjkHW$n6w|}GV)ZA;Iv!4=ZigMKN$0uzJetUS6@3o)j@2E|{Ur2ci|#`b{Zpd* zG-MsmPeGQWUx>D+Q8@Y>;4>oIt-7l>iVl1I*i*yRF@zfZ+wt$R3tahP>IME)w{Yx# zx^RM(9H)Q8YG1?zD|do^D7XuBA!z=T0@;@W*j_Ha6axP&zO;l6C&n(clXdrH-ADi6 z>e~-GYNFPc0%U!!q5o>p_d2jx^filg^%c{gBaXiLe{}U_f-V$&rJ`>=`oAOk-UV(D zeQ!e6@XxDnbuCw49_Xk$#XlhX_YwMU5q%#6KM{R@gRG+u{{6@CFTJ*_F9md==qnX{ zJJJ7h(YFiuh3F&5I{GkvUVZ&9cJ;-Bj+!L?0olKA(0{M!`x~%S^gRSwM<4t<>iG9) zU02^U(1oI}RP-H0|9^e z-H>(k!9TCQ*A0CygN{lU|A6e@mFVA9^j!sv6Mg#(eHg#vj(=@hy8hJ%T`2lWMPCB? z-yr(B1AB{K=v;Y{rii)0lr+1vczs(}Uo7aTDdHcH{YypvaiVWL@D9;;1hS64 zEXbyTKLLf$N6tB8q9fbRUGLY5-a9*5H19;L=OT4JY#;4v+fOUNZ>-LGQ61bfR_%MW zM^m8nUKBneGJyAqmGO{uJnBiFUt&EimG0C|6RfO<^_g=Tb@lS68vK$G5q> zdK%JhFaMCiPo$dvb?olC+Lg!IAAG&%Sbxm~EBkxB$HCd3`ReSy7kp>jcHFnzdIsaU z2<2In#VEY@c@D^{Sjn}nj#H5340#@HFQD*z2B{ zmO}m|lw~L{qp-a^Als{boojC%4LIe*axM6d?qZtGd=<-lL%tNc*}qlL^(qScR|I@b zbQc;rBJW>rtp@*flwy=OP}q+(K=$LGhTb?j?e(K(H`k9;ivAUTs2B%;?~HXebh95D zq3b;q_Tzov2cr9KL&qk17&>&`z5%|IKPPC7m;aH$kEI{H{FT?cd6+^?Pdj=t6I?wx zG|0Q%Jf;HSOVroD_?-9%SB_r+ljyR^T{-tpoB zu$9$}fv(l+55D+8dog+}$>qnrc-+y_WRT0AMA6k8zBSn8FQt)Qe$o(^zl#EW?HCFt(@((TBD){5&Vhj>@HqZm zKGcmKN#Ny2-sKHz0g0*Y9 z)?q!YbzFr$aiZgD;5DLSI%FLkNCmHs`IB88DWcSqc5O)YRDPf*{3m8LD{OKHozWAvxOMiUv`fS5P@TJyU5k#^P9rJEO zeV7s4@8$5Qr*eY+$vN+_?}szD!;#@A&Q}YVH^K&EBua&XA(Fe2*QdBC6D%J7%FsMn z@w6x%6%CEl1}pQAZbPT} z+L5QAY@sNB8ki%>Gv>Rp!$tNPv@H_ZXMu}Fw(jSyEUrjuI|I_o;Nyyf`O1$64SuQU zehIpkiSCzyd7?Xgx2rqyaqV+H+6qK=Ij~S&LGKKOsxU_#Sk< zFSxqdWxLi_v$+IEZVm%tK{z1EQJL$xk;{Fq|!Gw2%TD?joK{!-EXEp+V@ z-QNNCi|)@2*=-{GJ=zY4?B9V0MYj6auFogvU9TTk8T?lCgV&EVgP*iO$M_%UIx4z< z1RfLJpBb{5BKs5Cj*INiz!M_t`K#+kAx*C9jK}2$e-}N^d^H~948HZG_M_V6_hxU|rEY-H_cQvh~nbUt}8q8;b1fhHOMOeF}q()B$ts8`oeLI?0Zx0co|@<)>up z0l5syT8Q$Nz*eF>)sW2++16-lBeHFQQ6l@CA-k4l)OQACyTQk;IOZ!qJb!cjsQr}o z<8tWgEV{1%b`jlO4cT~+y%KF*MfNISoXDmdvT4+zf#b*8QrBJ%4P(CY<41$PQFPw` zUEM`@4`5Hx-TGTs$03ou5pBIhwl}bk$c`{%@yO8Y$3laTM}`d@KQ&Ub9ygh&J)>uLl!#_wx@O=`wV{dXJ{)L^bVxn_pXDTp3#mx1!W6G`P0B0 zQQpsx9WJuZply-JJ_}qdvNH@>>_8ej6SL0XV+X=~H8DpGeyQkw3A&bv?w5giqC570 z>vQBH?Q=fb3Pg4}uux>j8?xAec>Q?J;A02U#PQ=3gP$$BUxTjIqWg7VvFQHAkX1~!KkPu5ul%^#;4c;3-$K_u(fu88zvzC%kliM--=pn- z$o@a}&Ii7$@%{g2YxxYT)*nf&S{cHu=?~MUwhCd@`Xf;?3enV5h|lW1GK8rlgwDJ&I8OK(0}fA9B41!CgPd_-0FaqBTxM@Ty=5X`AS@L`y#5_&6atYB-CJ4&$s z!iNhsS7E6@qCFieRh$aM#GMMHO2vzWyFOeEgu5ZWk#M))?rYv8*yG4G7VPo(CW5_A zVZ$G{*V3U|fjp)XR3Ju(Ga(3e+gtUUJwUD2Pj}h{EJA5Izf<1}c$$~uv-$t;V z6_yI5l{X<7DozDr;*O3y6_3nwb({%TJK=7R?;zZ(6*ft*9m$;~*t78og59sMR3NQA z9kDz8u~31SxTE7L6)zF)6u7zycQ<@@;hv$e6@opF-1&mN0N+EfZz?PmNKi+Wic^7{ z=;>%*>Fdj!<<3VRxcUlrKYV}TzD{BD1bYd&0fN00KTxnwD=Za=>CahEx2iZ5NKi+M zUA~U!*{+VO;JRA4hvJ6`_W*@W73?+St`+Qc_~C-RQ(>tX@M7R3ImLIu@#Uw(ZWxM7Smi z_Z|2g;XZDUucJ_~capnHuy^Ap3pPz*sX$DBP6d*y;$ivrY7%Y*@}^3}=et54fNZ*u zKZu_ph@-zDnU<2iN<;y&k_oxJN2%)Dy1e56FEe z*pKiV1)Hz1R3N8%I@YT=6^MyDI>Pq(I`W14bGW_`?l19Mg*!=MO9lHCxvvHL4St(o zGZmH!B&g#F6{i9T>iAT})8@Hj+y&Qe;ogJaE8NHa>}$>v><{FA6zos*Izrl0fnZJrf)B$?1+qn9V+C8A+);x47d~9D^?&g-Q-PfB z>FBEBR3IkqR3QIW@gm`_4_5=>ZisIr+{FsJNwCL}Yb@B~@l6D~Q(?oOve(j~TY;SX zt1plW#0YUFI5bmoLHc7A@$(<$Gv+)UneN17gK+f=VtWj|)5EFNF z>{sy;;ZA|8t8jP2cNgvs`~9(02=+X3=L_}%d=J51tFTlcK^=2doC+k))3Hv)Gv~YW z(Fd-+!rc$wU${dK_&V|gdkMJ#g1r_J~M6-Zl8#~>A_0x@ytxZJ1WWx{n7Qx<%A1By73QGkN)N!IUBKT7uDv)?j#{d=2e#V`TiEvF4?mO@~!aZ4G z3k7>8xw`~=H-55UUsG5r5YwMifoxatuxIVnB-{$*q!3?V{Ijl*2Oyg+GQ7 zJ6Ny}k$YIMkKktt_CAH3Y4k^e*a3HesV(-*iCvJ$d4h5Rl2+d|$n z%om+2*j41-5$wD8)q=f9VOd$*dlNEV#aUTR+|lu(ibpPVb!>p^1L6J<|B-NSSJ))M zZY1}yU_ZfsD%j?=ea)<_9XuVqRh*U8#2peM!4Tr*b2dJBloRf zzr%ko*dG;^l{Kj2jH7>gIb99m7;S^Er1u_QLgpaQ}$^Nw^!^s^j*kka= z3U;o-va+7#>3CnoSy@foIW9+q`})d+yAfQ+33p@s@xt9jVXFk&gxm>&ZHjLu*ij10 z${N%$Tg6#f&-QezSMluU-T8=t>m=bm8Gnj!*FD2doR|@xC z3LEvJt2v$ARf4@5KUA7w!zWZWQj3_))^0rm&@g z%_Mh|U`OM}2=*R@<&i6>W2uVs$Q9JFTgB5}a>tkj*LdNcfDZ`wsgb_sEWu`zn<&^x z_&WqUOkpVulDzrIQ*jCd6L;q0T@|-pc6H>!b-!>=!A}+LpA|M%u+zvrAlT{n2L*e2 zeP1($!MUD}Au3K`VB$_;@PLXJ33nb`vxIv#-WKjR6?T(g^U2K->|Fd4g59UE;Y;kb zbm$fau?>8I6b43!GaL`Y5scI#X1thtc4 zz_%3g422ym*l2RC1lt;aqF`TESYG;e^A60nD$Yw^6L${GX(#vs%Y{4E@CtVvzO8VN zP}qoNuI6}hX9~6*zP(^yP*^IEppIWvoC>77r=wd_U&l1zPJ-)P;qHv@BHYszwpg&q z$GX$GPu8&~* z;`<4nT#t#*2 z=jMKYR3PVjI;N^P6^MyDIyR|zzHn#2b)#^P#E%m0HZ6SaQo&}DyGgL4@nZx#Mq#Ny zf;vi6oC+kUBci3xo%Xsr#w@tT3-<(kK)5ec*etCd@fPKovPQGo&VcJi;U0+}CEP9Ie9fhT%_Mh|U`OM}2)4JvQh@|@+@<1FAVD1~RXnZK z9b*<;VB_2RnyEngdh?O4;#43e?#xG?id*lwI&$H< zU%02>rwaFb3L7ifY2+Rd>~#Etf<36PR3QC49c|-%eN-SO?o=SdRJ=&I^Wd5#+_Ukv za6hcDn*^IrZjNB*;-3)gy9yh=#$HQ@ZUyqIN>G6qAYs_q<>i;a?E!JcXqK>F-U*Mir+5F>yyny>`Bi$hEGHVz`zH_cHu);qI!i zNrEjQ_qt$L;NKAJM1`dSxx~}4SjDM8Ox)4&wThPrcPU)&3HKWOTH!vSy|1}Kuw~@d z3HE*bdcmeDEEPyl#~mt81v0?X@q&tHmbvq>39ik;y#@c7aDT6`d4eq`_qkxdz<(*& zm=3;XDiG73v!D)8aVn6YjyqL6dY!AI0*(vF0x@ytxb#r*GU2X*Yrk+Gz#kOu+Z47+u-4gBAed8u;A>%~0(n+psX&4{ zK2>olkb$0#h_ifs+3&ma5dl{n;jW9XC)}MCwotH<TF;1V8KR{YbDs$_!9-2ps-XRmw5-~Mir+5 zF>&X>%vSMo;f^)D!X1ZiE8JxY8?nLF98c~{!M4M<7i>s^ubB!YsH2^VQ-NIW=@_Qs z(}X(-u5*REGro&(Kcuk5f=wouBG|6@Zi0PRVW~h&f6fK7U&X0Ff;!rr275ZzsW=sgiMu)yeI5D2odMU4!aWi{O1M)M zwp6g0`q7_WDA6RA^tfb->%WD#KavPH>h}taF@dMo^Y?huNCe&3R@xAGIHw#`#yfXVAm@w6-ZD=c#5x&3gjwJ zM<*4}{M4O~O>k`%?k)Jwg!@K?%@b@nxz7dr1^!FH7Ahx1A?j87@!aYP`Qw3W|ZkJ$pC=>1~ zxb_S80sKMXPEyz^!J0q%5P~@s2)-6(Dv+@XO9c|tQKaHjAVWPJl`5XS*`1FFxatUZ zU3@*^j_>YkE);Aex%z@_fNv<+u?kBCV)}C`kk?c^Y>T~`gj<1BsYLu1S4b3O&4s)L zzNL^SoaYM}EZAsrtpwW|f1+T=C@dAoFz>+3S8*y36L${G=PF(<+_8pNxa06`g}d?j zzK)2`T+Q+1&J=7re0#z6R#+;KppMBZP6cv}r(=bRPZRDWxXu;s&iF3E{jyxjV*GxOxhAFMMy|Ua7Ddf=wgWN3ebI z{RI27!cu`;>*+YNhp&$c#KfKBGEBuQg?lhuR|xkI{FTD}kitfN?rKgaca>nT#t#*2 zslrl$T<7Vib)m0=3dF=69SJI)FWeb$-6-56@uP(MdW9_&Y$myz1Uni(MzC`gmI@@O z<3kmv0txDhI{j|TE(eA zOx&4|gDP%)>FUUZ>we*$f}bkf@fZ7=V+A{n+yjE0j(zKTg(7f*nDzx1Unc1gkUdL*zm3PS~`>pL?x&|j1Xr+o>%eo zt?q;rLbgE27vi52@^XdE6>Jf?=LNe6|AJs!^z=njf!yFt$N&|m0x@w%$8;5s{L0l) z4A)ZOUWQ*T-0KxKNw6j4UKi{N{2PKjs+X^W3S@+*BT>bvKup}xF5 zeywmntFRSFBBAnP0o}u?eot!o3CmnQ-5& zuz7+lC-=EvzrcSf*yRdK1!DSh7Sz2eP6ZOw5u4`gi~h#dQ32O>;ogDYDcsj6Y^q=@ z$?X#CZu}m>&Q(|{kQ+T6AFDVOh>1JLC8Ce7qfEG~;My7)@Hg`TE;Ho3sb@BCtJF2g*xlpi?k5g2thtc4z_%3g(0;ys6cz#KfHg^SFwa3wNyH74A5ETjBmdVI#hCHOG@XQ?Tvu?FIX<{=Q}^ zkf4rEDozEG>FLN&@oB=H1lPI3-5K9SxMwSDv0#(Qr3khwzMEh_R9Gqy)1Py})V;*l zM+Fkpk*wm$-@9W>g{!A<_rmuU?y(A+A=or>eFWPV-%qg5Dl8SqO`eX;DozDr;?8lY zH^A3dDcpnMx0& zodMU4!aWi{O1L90^);6YHj~^8+{#lf-NWaxnRG*e<|4e6_yIb z^ye(7D^;8dB&g#j6_4KS>ZpKgyKwKo?-cH{M*2EZ1zSmOmtc3}_XzeTg{1-+=jnJ> z#i>9{+&M0rRlH2NtKix%+z0Rng*$bWucJz^RwpVD%&9=|wJ=kG+^MisAVD2VRh$as zHc!Vs70=$|&PN1Xb%eVvzMgQOo$2c+6l^59`hsnMZz$Ls6qX9a^ygF{PpWv>UVAkO zw*uLy67hRoAyJSu7xEVPmO|d>CSS;4!A6s7CD_*Z69qd+VW~iF4;~m5rvfo?=fLb$ z@p9pgHN3(dhi@y~oksgQB7Sf+$CEo#u!W+s;aPjPD}cy%n}tu*u|71ltwgO|bVWEES09&$(dMsyG#huVbvQBl$;njHz(-6z*R5 z-okx>!e$6Ija(nW_Qm%T>>UbA1(N0ISgGPvASUh{mpV85Ix2;GFkDv%_YnM*!rez< zqkeKVr<1!%uvg=U3U-RZQh|&Q>QHei5EFNF)V;;mkuTgCaNQ`}Bk`kz`vQe66>KKC zn*=)=KSr?kDJ&I8P{#@trvmYH-0JH{+vkok3$F3PJpmsO?j8!8CD?3o69qd7e}`c2 zR9GsI3Eq5^s5ljfi97RArQ+7lu8v%|?icPU_^HBu#yDSdtYD{+dqA+$@ec}in8H$l z1UwycRGbRL#GMM{D-|yi?mW0=3HNNgE!?Ny=Ihub*nDzx1Unc1gkY~$*zjNMwRGrK zAdjj96^IeyOvnZmPyfZ8kV4272>C+%b3$JCc3()YV2j8-FW5!+7X;f=VW~i}y$PAB z;#43e?&v60@yK6Y9mQ}h74BvD<-#5EZ(m1}U`xooF4z_LHw2rYuv8!uJssI9P6cA( zj*gd9yhON5;d)QF*WlL*_jZM?5NsK_b%K2#zh1DXWciw@K!Q4ksyG$MBu~d270;}4 z=VKFGn}vG|{xjj;sIYm0EhqQ6V86hBDcHK>eH~OFraxyvy-3BWK!Q3Zs(AE%S4Rb0 z+l6}vey4E1s<5eott7Wgu)Fbl1iMRNsX*@VbhMe^>!SiOap$;PrQ&76T?N;E;XZ&r zDBLp@wo0&8A{7YcR3P|Tn5jVCS6C{LppH5LUk4RPj;EuCif12i=OY5HI>KESUr)Fv zDQux&BgxelYy*5l!7fu+DiG73Q-S=d;$a8v)g;^sq(inZF#ez`Bnq|nu0lWQf|*7y?zTcog5Aa{BP<~tRq0x@ytz{E`Sb(9Nttl<^zIDA{-9;&br)_mvN zKH|xpDcE-S_JW9ps-XRra$L`S*_w!AVD3++~Mm;4spkr3Rh3z?uG9y+}#y6L$GP&`Uti!zMo+4 zQdlaGyFDExDozDr;?8mTMa3(HdoWyA2=@^DmBQU2$JZPc>S|6Wca>nT#t#+jc!i|` zne6FUtm0H4Chq9iq2l?%odMU4!aWi{O1MwE)7Mcd*i3Ra33fDoj9{-)SSpa9jz?6S z3M8mwjf$t$a>tkj*LdNcfDZ`wv3L18vILt=ZlYi(;qMS^SB0elxyPH2EET5$F>z-; z-c)fb%+-+#*Zsmh1wU1|L+$8?S*zkj z!kq`#Ea9Gww}rdWWM9W7!RC{jBiOn4Cj@)3!iLwj*V3U|flN^eDi9;Yoe&jIukB7q zA!G}Ld?EfhA+L9jFC>~UNg6*cTR3P_x6LOo1Q-PScqhq0pM;_(sD28jP za4*9z7w&BenFBBAR3Ikq=(tD4ON6@=uJ?p{4Sua~ zzp1blf-NJrPO$Ie*9-R8`+OZ#AVD3yRh$aseow~~70>*aJ0F|i+AQ2#@Sh3ydkUK; z*m8283-$~Amx2w?^>t8znEspvHCe@}K!Q2~Djpr~>ZpKgyKwKo?-cH(3Y#j}N^-jd zyBohpu-5&)4l0l-o{n=>oC?Imo#QfA#mj`d3aiSS;8!E zZBm4zE54g>tXCZ25%yY0+!ZzRL7$uzmALy2eNU@+dW1X3RLFV?c`tl#A^%We`Ld|# z-hrt-!yjacaP+6mCBiWPf2nY^1nUj5La+nLT_)Je@q+|guCS~^^ygmv$3NtAunIls zo$VK?cxD}UEW_ZsM!2uVUnks?6gE$=!^vGQ*cPKHj+gK+3&%pR zo{l8JE+O}dU|+?*CfI>_K9&;T5pS+@Rh$yQ#GUzgL&ZykdnH_N3in(1w}pGR!tS*f z!Qsy7NwfU1L^p89Qc9cmgkueUt#EV$>y4$q-C(B2u~l(o3&#f9d>|Yj;y)6O(Ahr6 zVtcgVaOQL+aqj{t7miJ|*(@Ae@Sh3C7m6dIp{u!^+~f_3rCgW;F;=C@3^eW_qq87N8;`^u#dRM%`-<3-*AqP=b6LAow1jx zcv>TOJXQ3)U$h*+9~3RM=K362g0;@2WWbz~0bdIK~Jl)r+IL{m=?&x?- z#jWF99T9NV5$?M9dcys#!o~_Vl3abkHo!L&Y?Z?Djhv5r=S}Pr{ygOhM-$qdARJBc z&4l9uu->^xnGT1$5Qok4;}!NZhTB=7&m!&}18yKed_RTf29gJlb1gM`(&x!+?2bLw z=nyS&__m^@hr;qTlW@4_a29c|&obfYK%0)jaTfk;;doqeR0%eL+&O~ngijP~`cuBP z1bYYlo$ieB5#p&=x!)Mc+C0lUj?qv1_-V(xW9bH0ci}z{f4*?{Q`lm`UO=vgU@yd9 zB-k8<HT(JEW zmg{l0r{gXa=iX!D&UyW!idPEvP`HK(_ci!yh5Ji|jXJ^Ad>y&rg1sJpgJ4@1_?mgg zVS73*QE}dJn7H#SJz2%`g?kKKV}<)>{4K)$s=}5E_EvJ^1bZ9)cERpeSgWbMoDN$% zC-uqC_$Op+Q+F@{8f6Q~MEoQnIS;INf$?G>-y2N$vwoZx119barn`z43HN<)`y9Cyt9XfUzXn&aa4*F#6Ykp;wnDJW z$(0E9b^Hp!E>Kuj)S!-X6=y|#!qaiwbH2XJ=I(r~hO1P#-@~sF?w$&pC)l;*$^^R( z|Gr?e6_%3R^yjQXFQ_;rc~Hl9Djwa!)$ys}67J3TEyCTh$k&`I*w4t73-)vT7lOT1 zVRw zah;0u$nhjPoJHYr70+(z&d0BCRSEZg`~l&9S7E8v;BfDB2Z?)kx^m&D)tNuZj+rW? zHvTBgR3R-F`D2NQcKiDmxp2WAjXy@PQL|^?Lj$3ctj@C5TUb z$;Y#17`$^%j3Vy!8`;{OoA%5_2br6W__Jhgl3w<)NrF9_T!LWF!FLku7=>lcnD6OZ zpyI3J z%NVZ5-yma1f7R#C66^?a8G^kLKT@zW6_$$o8E;(gsW=t4i93(u2UI-#B>Qa=?iY}^ zea#on&CWD%F5ZiYdnZi#Nv`k!oo9=fiTFt(W|PA5&gNO~;%!vybC(Fm-L#o39QWYw z6^^sOdi_-h_C9jCg1sLhcP z6YiT7HczmRlgktAEc|T2KB2JOAWVPGBJ#e9bAt%RLzemaQthvaw>&5H6j#sFaL$)L z3h>WJAJ<76v%q=V<_`jMBUs?|H(T)*+BXn)Ps%dl-bu;38H0CDhVK-ZId{Ze74*}WDb&^gH(m-qsUh2w47 ztP+lQ@b3yoJFwmf!ZQIJ?qsi2ah?fG+&SpAUib0Ir@CWV57!3a{s8}>aG$HN8G`+Y z+(yBEjQ>Qiw<;_v#&e#IMJmpUVd9RC3Kg#u?l0lmD%@Y;zZUM3SNNKvPIEPXLvEX3 zzr}wi*lQJ*XM!S6$0cw09Qk%9;w?j5-|Rwj5`8Fny=_jYQt59G{ClOpAMig)f5)%% zdAXwn`x~I*tb8W!jC-nzr=9MO{6B2P!u zTfRQ-*e32g#$2xAMZ(<@u4v(Ig>Nm~4=d~@!JbGiMzAO0PZsP)3LAcgy_OE$$C$=% z`$AaRjSy!-E>!XKGu#Pj3t7C7pNVfLj9@vD3t zlq4qZ=;*8Bk#Vk$E^s9acM86%a8Fm*B*Atg*IlsZ;m;TB8wyKFvY7skHYeF`6JOq! z{ZG&23oPQkcE89%`(^7!waAvzqZSRzABO;%CI_DeDzSbp#hXgM?*;t6Tpe9{d~FPuOWA>Q<~uEUxS z9PSSOfIo29NBH{!0*8N!e^)@@A2`OpCxGk!h|WOZ5T4}^9&m5O<|<0N#=VL**z>Gf zdk-EoS5bBOz#jn)b3R}l<_`XVpX>jK3ZVZZDj;A^mLoU=T>nQ@06&S-0-_OPKGW>F zyQz*srr8t3?-2igad%$+ZypZ8JOriupo!(O zeLr@HFo8ow^gr^@|6v;0pA%%p{|`-dwSodiboBhj+Yuf8-h+X|a#mM6)z!{);1FGA z=9wk)Sl-ZcX`0K`eEv+#oPU1`c$jd3|4H?s6T|rb%5)vNj-}uJhhh4A*gFoM5!xl> z|8Jk@ycl}4QHB+Dg8MS)AKnfesg9*z9t{8Li2KC*FM$5`w)bM_ZxhLTo4?8v_^S>6 zSG;*LeYB1L{%7n&rz8(p`UOxmfWw?;X*!|;%&p-_3UD3_kDvhe!SKil2>kb3$ba-C z47iuUUpfc&wD2#Z!b$)6WNR+7zmgC9U4p;aK4AS#g1_0G>+gsPFxUT)6yRL{M^J!! z{r}SfqM3E`skqZ#UN0`RX-I_~7a7NkpbEPe`^GO5|9^3JKK^eW{>D56D(;+b<#pk| zXJNB38#5ns;^(tH2YUoFkFO>+m+dF8Lxc$&Dx&|9hyD-K$o`xlGyZ>Qs;d>`yZ|~3 z$FSCnAaFR&@;V*-t0-^gf4>G$`GEBYfWw^U`a7Zm%=LdH1vuCL5ftEF|3^*$^KX9r z;)n@|rt|6qn7H|DvKO9Y9`82UElzfQXW9S1xH}*JHxGwk9s-*lpKm?eg=bN00k#k` zA9GyDIlLW9zpVfNbxi(|j-}s#J{kVWj-_AozW|-j z5jqJ2NA&E!qbb+l?_QsO;*gmC0RB|(4CgH4>GyjLTgFoPB{Xe1t0*8N!e|La^f8ZGZo`AqVagzOx0M5U^Is@kN zC|>IR*^DJ!_&dLt`8x=&;$Or5Qr^^me~aL6wh#R65&S&?0qe*L2v|o}K!6kHNX|gu zw8JF8{3<}fpbY1)jQq}a;Lm^#BZglC_#JhJv194Cj!cnRG{TqLYrFHSpU$5$yLgN{ zcP7Cf5hCvX39+dvK5e;O@8Y=7)}2fVGIgw5f*5axl!DJ(?*35_y}c8H9OCAaBLqk3 zoiogiX=zg<8Y|@zuPN5So^XC#=;o)J@W+v6<4-)?K6LR)_r!7jDBVZ5`X|ITNjRrqopF95%C5_q=KgiN zt}4#gVFcs1s(6ly7pnLY72l-d6>i)SbnI<@ztL|grJYowzfN4Q5|ee}QI#mxiB&35 zsS`h`M9kZ&^OJA)RSndMG?mEJiQ817L?`B|#9p0PtrBfksm}MS#9*C>`?s%ZnoeA) z5-W9Lno8``iPu#k_8ryvZk0&aiI^5 z6qU%(iR)D&Ungchdt-2E-=GuGZ~2Mv_f+T8Qbz?_B zr#gQ~B~o>wqRelRtrOih`H96k(Ppck*rpR@+x$e-`>OL*Kl+I@otSpOPvq!CVf`_| zBe+B-${PEL3Z0mDs-K8nuR1R~(@*r*iO3{BF-kjsbi!)oCt^QTov-TbC(?By`*J@qLnkI*?!&a>M2EfRF%8I{P;iG64JE%J3@Wul+hpcC6vBK#B8`TQP!izJcsG6 zeqx?ZGRf!^< zXfwfYu~jE7R*5ECROe$4F4I#Dan zZ;_)D?NnlkP7GCv3Z3X*>q+Nv{%~%a=g`TY&$rXAiwix$dGuSb>ek@jhvhq-iMxNwxAr^4?b+=2 zJ0tcB_Z?_CuLnNI%sbF8@Lys^eRqTXc%C7*_&d$R;c&PgRB`@Jvxz$+Z}YB?pRv{b z>%BYR^8R}7WMVtnuf%p?yD{_0B)*63z1R;D8%FF$wtvF*VMfm?_{|^ZHJ`9A=UYD$ z{{{Qi{PkZ0*s1_A0IEpt#|~g7AGX>j=uZA1aVwcG=E6+=B$XdVK9qPZEDSUG9x9(h zzBciruzw{7T)=e-Fb_aD$)mAjFhh{5@+-+7OFROrBl#Cpek=L9#Oq;^lK)WU!=6q{`Z;2V~9^&dbHgpR&f!@KpvQI6Iv`n*FtkXMQ!`Y70|5b|z-n+u_?|hW+lfK1Uwd z4#YcRXJH0=Ha-C}*pthAEMH|{`g5+5*HxUaG6?GUMa84Po^N%9ryJHCGu-Fl&&Le+ z1M7V5RIuhxyuB5Iew5}3lx^`x(Vv|LB;v5n;ShH2^)MJ+26Qhyaujoh5I`EaN%C3 zu!Uf+Cw>Dq0yA@$fxi(mbJzL$2F#S0%r(RLlTP^ z#l~TV{5JgUm?7_{u!F&x1M_ckS%MvppCH(86?U@SYa~LPzp8%rNA$ORH2cd#1I14i zSa;AM2fGt9pOWwS3xCP{g+FXEW1*3bbt?HGcW@j_OaXGQ2FtnxP1TZ12rXnKmOFGZvKDq z=4aujZoHMjv&aYdXB$)D{E)l?AI6m9&F4RWhY9EWXP$&3(6J1d|IG70j`*ET?i7ZY znPC9tF9w^FYp#j!aBl(;n>o{Edyv|0&vv{M?=sJtpb`a=FjK#mZS(nU2kVHZ)7X5H z>>I|$g`N^H_3I4zE9eYA#Ogu)zkH}TLV_) zPItuL0x}KEOq8(Qfw<|oLwWU$BZ#L;+i`4rZ6B9y)As8c+AbqL+2QABVQHUN-@$3b z3q{1sHDIO_FB43QFRJI+2WGDbO$X!6$^wHoSJ7{$4eOW!}PB1;dnAy4* zjMu@2s#~3N%8b6v{_5LW#B+o{Fuev)2J!gsn7+g-1@rlTV*<{Z zUreIWE_cMe4_4nZ&UqH1Q{Rb$B+1PNLRVtX9YrtGYyizdV z)qp7`-e`{**u{L^)N$2!)`56}1Da=jR|DoH;)B7MPpWSv}`i;)V7? zaEW{m+jsa8_yM;&`^%@}2Ze+b+B^Oo7di?*B#XqUg&PX2O&qe#*cR+FEb>Qw3weEk z)q`9Pmd$?g@)h8Z4RMa?>qDwnkW0McC-<11cV+dM2E-%xxtOQPqq=HC z^_b4Ya|N@!224KjBEg*e!GG}hXY((BHVA0;e}aO7MiSpAn0g=n2T>679hj(tuISM< zVA6;uJD8U9toLgG6%ik1UwbF-5<CW zVN0+g_A3;}D*FI!2Zivoi9g=H>E5`|n3Po@@1*rzm{wL?gR)~jW5uUUBT+WP{t%uK zAv5f{xrX(!`(W)jBW~J6nFODBdx&imZJ!z!+QfbZbx9%d_Q)sWLeD<0{J_D3 zri6SA?qX~ywhSwz{fvKco`n}!h1fQ1ANw8fP4N9OkH3k-KQshCi(`U6K!43btsQpT zDRH5fn~l$&iVHofmFdkCwX5l&6!S(C9pWnO&v(q4IqYxuLTh5r{$M`<_aXKXwh;?E z8YNiqF$LDRW0^@TGJ+$HAB+tno{wdMDa1T(Jq!J1{E7Gp)6ibY;z_#@HY06Ffh+AXyfewqJ@_A!Tv)>-C%AN0 zw0-pqGs)5R8hqke(UAq#&uIDu`xUFga?q1rk4eV%VU_I1;ysS=NW05J^coWGkQ{G6 z&t6PQI8?Q|a*QzV*qRk*RSjqAvE}0|(`IIft8JX!_+cY$oZagYGl7q?7t?VZ6L`8c18S78<5R{Jr>Q+}WSPn>&1inZ#3OHYl*pfv*#m zh$R_r6t_c}`50mP+8ReZn>JZa*0QqgDe#O4$+mxS__7-oSbgB=i}l0$3*X!t_`W7S zoHlKQuY-NdqlT}8z3?$J13$AD)3L*G1=jU2-GGh2GO(Gn8rz6d2#X*ehEK*krYO5F z41+?V9HzvSC@^DaHx|>!rtas}kMvUFrj7gC@XWe>+T%u9l>IP1v0GGQ-lV{FFLoc6 zisDU~R-Y zkk7=j*)GQN$!$`+?&b0)R-?8xtwyHK-iz8MoOhnutxY|(_s>RcEwi7-MSh(9Gy5?q z>|1kCIv0Ban}^LbDo-e|lE}@(Heg%XkH&}LlQEC~(5PyIM z<`~uNTMJOS5PJ?Q!m5nQX3T38cXKQOOb>hxHk|l8>@TZ6QuY)6P#(a zQd@ayUuQq&GWM-kQ1~kL8di*@qb|J#^+8MSQP{lb0$zGE=U6J+ld);UOO1gGH=Z`( zY(ipnsYFNc`;hN8$puY^=WejCfN(|i9M6Zy~7;5i><~= zv0;pRU~7)hiCisMhZwFFESv3OY$Z7hUj{CMZI9a_S0;lyjhWrRh8iN|MPX~c6ekN41A^bh>zqMvcP zr}o_E%tdeZ-HX0}{g@Q?tz9VHjqSnqVm*w?(I)|8$#K*kBv?p!+9am2Si`2AJ*TXDc7rkRoc2Z=YcB+29@Uz@WU#UHcN4hL*cfaq)HU`B+L*gFh1Py+T_^50?KV-=YBWOgX9wzIth+liT_ z@ePiS{OHA+M!u5xE^N2tcdL96`8~wM+@XnXtTSIyH?h25fzr-gHxuyB}n+;zM2b7m|OtB-Aia#cs}N@sC*!UnQE1M}E6 z*azM*Yzs3c_;@9At@yqq!;YZ*HEHm8m&nd8a!Pgs0!}?$m3GiXv z$z@~X*j|h!3HLPnE!qy^TiRMLha+Vgn1Qsr4D(J-bGZhXNAvmZM0!<-~`T*a)8gliO*iQR;ifY0m1Z2;?#$O8#}IOcH_*|*bnP)L#eq2Xw5ep)e( zcDG@krY52801EB6*WDL-v+;>3h36JncY(Vbn~dFqrO`)H615t+bSw`mWPcl0Laqw) z_`LI@=L&UxwA#AA`t!qU<(&t|as0jWAn{c56O<gTn!y?_w{eh51p+ zd|DS^o`P6u5m9Nkf72{(Y}jmcG8><=(KIB({t-VSG{em_wr_h2Ho~*<&8S;m#hd!& z%CGQMVf(QISO$CpyRoEq=lKm=f~{gd48Mt76O)tk!#keWbDajS z_u8Ax@w5+oZF+Q%-5~GkJ<;T~j9yYfBr#PH6$aiIfinf-juz2oe2Rx?XI z*|%z+$1lWSp5hHCD?N|3<9yz2T!3P1FBXO+V@brvVco%GV_skGY_zvG!<-~@a(1i5 zD6DQ?yjI?rpDfj5Hmz9iQ0|Sny?rBl-udeCRyXo^8F{k31N^9vWP8XOj!nwoe8mf6&Nc76ncU0X$zU7XJ=bxNL)o=C#*OWz?8fw* z+^fJkj!`#OBOk~p(^5J6dh!MXO9C?vo6Pn~tb|+@whCMr-s|Z%XFNyw6V80|H3{yW z>QA4!XVi4&n(>_}5$b@-=`U>XY30ixD8I(QbV|~CDuoqlvS{X!jrG>}q-8ydm#2wyjd?Jg{C-`Pm z(Nlghlagg0z$f<1Vnl5jO}rXWlS?=R19-Z^@-JmHSi(R?gU`XTi5Fv&!L7uSgCpAU zso_TdCe!CW`!T#Z@ml=s9*8M;b0B7yoA?HM!e+B%du2|sa|j%rp*e%(a=CDexm?(F zFPB%?jp>;)sK7cK#R*Dve-x%(#tq_f7Hup6%vdak?Gmh*+&*k2I17J>RG;CfuHnXf zsazyEa+6wV-~PF|(XF(<#wRvk$?W%J485@4SQ-{1*nGS57Y3VeKZ8$fo)7jK^4DV5 zVZ$-+$*YYW`lZ3Pu}9()JGKEkp8NzXfMsJbS1|4&+%B-0*fjP_F^?nC-a^|!A(0Np z@phlB%yf%LnC_#W63169GwDl@}QHoa6Fz>dtn0^bd zoROc2ZNRp&AB~T~55!`?q+?!Bhipk}yUCnmH5{!8a)8w5(rO#F4fYxb(Zv1^KdM%fN^jgZRhT2ozV!rSo~OngaVo}vZ8N(Sb7JEJ8 z#gD_r5--BCz%9WB2G1*YW(Oe;Sgj1Ax>eBQ^;W?r zcetZlgEy<-F*^+>KTO4s3LTdrr|bfDV|tFuD6pPmP(^BBJs3pt4cwbXaG%0r!3@X7 zvAq~8B3FSe0k;>kYPr|%KD$MwnRbSOH;duBcz-x2?9z*RRaN!F@z^%l3&97M$}H8h-Tc#;xLknZxkcKdVtHpX0Tm` zm68j`hvAbk3w#ph_4Aus3%8gSd(DXV*?;S{@Vg7_yNuP`!aNN{_Psxv16wp!4s3ny zaxs?`jV-X=X1J@=kP8`F(M=r4(F|b>LjyAm%g2h?ufVpEi@`_Z2V+s-2V!1#M`Fmk zWXP#Ad$L-ZTuT-h4 zy;WfiE11`c@A=wq6!AS@c(a22f;aVpyMkSKK&@bB7`B=&jq!}ttd*HE);9Ksv>g@N zCQDA2D-N1VCG?77yIlr zaIy}}>fF{W1G8>#>#qW{-f62UyWASqG>>Y7JtU;9S_BNfrjh2$NWC9NrrRw-+j5rh z<4$~H$8^^4I_LAKh1J6%v1Eo5HJ&R1TZ|R5zYX&^df30vb`U?s9#9L87Unk#kEdM| z%&QIJ!`#y{Y`6U!pc_KjXcpEsv{Umi-r}7BG7f8t#be%E%Hj5CFrz|-+h5=lQ-%i$ ztP9BZz%Ilt!pu4RRt@KH_&4LMG}=VVH4$wOscrc9Nj9FJWKS%xu7cxgY$!Gi%LbpG zO1_-5W&V0{F~ zM(ktk6X7eZf$x}aS>k9T=cf7DJUq_N<{iH5y9%tGa8zQuu-(EJOS|fh>1g7^Y2(e` zaQl`B!^i21=k&e1!1~t({Mj1pXzUow%wJv&eC5Q`Xyfsv*+c3WzBKz?d}2!4>R9<@MYJ)w~BZ)Z9Kkc zJFcGLi?$!bCw7g#x4`NRM;g`#>nnVFYvAkrJ=X+nJihSz?BgTNV!_58Y;;Nqzpuc$ z4wm8A_1F!oebr{tcXeZYj<{*#Eyuj&g=ducK~^KPKApL3(Q$FX;%0G@QEo&5AcggaQuS( zid6~Uyc+nvB_2bYCAD3Fm3F)1-LqphKCxrv^a86sFOnNz4Y5X8fAI0dbFo!e3Hw!w zW20TSiJ3G02NWE~+Y{M~Id>z-X0(pN^vpHbQT<4V5I1eiXQ2HB9NkVD_#jmU?N7x{ z!%oM{8@DN7$8pOwpA!3`6TqHa0=6Uhv#_(V1k7MxRoHQrcHp=(dDZw1O=3?l6rF)} z!IH5Q%zXH}L`|VQHD^YFbrG?Pu~e)lW+=ZFO7EbQ*tdfp#ZBltd}8wwc!z<#2D=u! z4r}64TM2g8W(Lawgl7SIxWJk~K7eIo6ESl_G}>AHG+jwNnl=N4FVBvPG6yivehi=3 zF^|3yS^oIhc3oqNP7> zXkeThS_`AUXl8-+61bPKCD<#N(LbdI{hNu;q)oi=ZMC0*XB0nSZQK&R6SmTK864}d z_p$Yu`IOr?kneVC`J)t^#5QAFu+K1aOd>1YQ^GqYrS^y5NAc_0=SRbPZs}wE1QYB} z*gouM%;-#}o%#H>Sh<(@V%nHb2YVSD-A?N8c!3pqA%H5GwWotOKb1a!PsDd>ZOY;_djQ_t_*US}Pnr*ycxc3IyV;56 z2EoSNY;@`xF}uJT0Q;rbKPI$+_}*D8e?~5!@LhJT80VI=%O1r>r%)o# zve7hTto;^#1isx#M#NZqB;Ndn;JtWLh5TsZ&1df7r)qR-WBJ$|%o|{_-Roq7Ew*39 zCpIqz`x5z=u_f3mn0H?&w;P;du;umyd?Nl;d^4)C51lwwSsUUhtL7G1U(@azY#a71 zW`>+o!;s%5UPPM&cf_VDgU30EPlYc~^hAMm0FHy0brB~6X83m0z}I0nCoyfz!5_l5 z`7yiMo~pK&%C_lpFW68xYhhuS!EX1lEvzPce3J8J+dDq{?9kK9nY_;)jpxU9^H^9R ziNcy=EifbYX4;w0Z_niCiI>yH&iuu*fI5fnz<$ ztv$oC^_>6rw8=X=jo++^IgE1Go zADe<1wRR0^cN5=Bk7Hf2+`>ZRjoK1>BtEfY$+HF46L8GKp2VKQV(7ynJ{X&cO=G_l z^El?)TWC9oUsy04yt6)&oA8D6K`x;6LQEf*Q-7#_9&aIT+BpA(m+dB^kP8Mr=Yna6 z!Yhgj3#>QbT#3Djy@i<(e^LYQsXubT(8heq@Na`(g}sBBz6O)uCVgewE9k>KlEk$) zvyr{9z}f=tGpro@9NP*<$pW6y$qmHP*v`c~j^Xxf+799|#BdyM*Y98+Scik$M(b}e zJsVT$-F$v~<$Orov?Jlw$JJlx=UxOt9c1FnOZbusNRGYcU?tyCfEtWcSj9;?-Ea-jhVq8*!GTAvfb+}!<%fsisy&P&lgy6 zaJ9wau``ADqk;OiRts^;Tkk; zA#U1~i>4BL4Ls)h?v&{8y;xv92G`?Q9ySXz=gl#{R6oW6#OKq-8{=5}C3wtjc}J2t zyU*d@n2uv#F0dBC^a8dRdlB16tHm!d+vHNQ?rdjc9@AiZI&BAq40f0juNe%cn08As zJ<_{sP_~Y^X=Bt|zgDllEAebF-Vx`O!?{L1{~Z9&FS9Qxu->P?_1FgN1I+LZuYvDb z;=^f^BeTnY2jG38^WOownA!N5J^nkus|D6~Fny0zVB4{ov>N*g?`N?H@?rR7%wyue z1HjenIWE0_&JmepeHV z!0KSB;M)+-!Ah_trccFDW*?PeG?m#`;}cWLz%-)WahTTBiN4L}x7SA&anmN<$(s6f z3q0m|;i9faQ{K`7>omAd$6~QFFsqnrA4?!N7Rz9JKIU=c*ss#oJTElvW;Er1=|H=V znASA622I}(H*KOsQ;t0yo)PdJaQT+;+y&RgSSr>NGiOBP{_4lrk9Y=cmIz;leS3Gq zmtlX6PfW>J&YA+pP;3}>jqu%G1K(2O{b`dU)dc?==sd&6J5)UHP+wE) z7QyiXwitU+_+G7nuZs9a+9W%@QN-9^!!sgep55XiGw$mzG?(YRl?B$jFs;T)vG=g> zH&}+TWO7;9ShkDIzA)w5D`-0?B-dd|Ovweafp#BYdhS{utbU|JiJLawlS!`q7>Y)~ zchtpZq`7ahWWe=3R)KBD%*;)$f$tsSV`<~f+*o@OJkGN0@QrOY~PS-_y*e_;uBK_zg=K8g`*i3g*6wxblREEZ;$K~#JkhR)7RbZ z+tcuMx0m4)Q@XDzu-d`V9_xU06ux(B;HwjIn-xnN@3Q4lwU^c!-#LCjW^z{_HKu7t39NT;oG{JKW78SgV+r0 zA>o@*1K;PwOKH=_nGMc+`xAIZm{$~i4PR+#f%Oa=&tiqx0^w^=t9pHx5?@RkZ~hkB zE8rOsve=I6XZRMsS75Dx;|**j_NMS<*TA=icphy$zC8OGc+9P$aeu>?x2C}Q1ddO! zP1t7Pv%;#^*Nb=#Z9G1fd3c;<-r>txTVU;mV-L0$`$71!Yv6m2cm{0}Wd0KD+b=PE z3HI0c#EuE;xV`q`_KHPdb+A0}+=CheM5Ws*uN zZNijjn^I|4T1**D5mKXtC~YT%%v3@uS`kWn29;zGB_owk3BTv-T<`Ol`S!U-#`69C z^Sd68*Zn%zb-iD&^S-Wg?sK1W?v4I@a5E5il=nJz)G?*J_X-@_q&zW2(G>$(k14-p zlT(ZHM}?$`vz#)#D{oa!8Qv^7wr<8QUS9F43aWwXpgr-`XrBN!fYsDbX7S*o8J(0< zn%4)8ZIVVz9dva;)|`g3Zk4m2_seOQCYbj$?+bhe;MeXp-|qvSr+BpnZ9rR~wZ4$DJ8;KV(AwEjJOn0xrdj6`=2 z$eP)*Y%=?Sc4>m~au2_YGUGB0<{tjXFNP-LH3dus(}3o$c;4_My_NR*Xo3@9?%{Wp zANTNK?&0s|^a_s`K?+DUzr<|(-ljboO(&bV6JD)u@;l)T?yi}8omzC=6MJ~}I?;sE6RdX`goy4xRa33OU6#*{3*kTS3;DJCaRib@Po1NfXRmx_1~K zeSqTjc=@I8*SukOr!T!7>8 zI|$u~9-Jh8_a}^#z9FD5%L_o@G1gm-wlkL>7xh$5V~NR!EM7Tu&i zkyTJv1z9tzMFuKo&(=`drHS@?xy<#N_flr;XE6KOXD^1D;&mNp2CfI1{ps2G?V&vy zO>mQr{j9hA*w6a-`x!O%vvkISQ&-RpbO&*$>d-zFYylgnhv2}8{R{_xKZDuN=<9>- zPLOq^5e34Jv^nk4l(&(xpW);0XLrgk{d3+_!7B-j1>=B5Iyf7@WwdWZ6FftC^8g?J z&4a%3+wuiB-SBt{%mTB`Z+|v^(HHQ_j3&3`$15{F{ws4o`7QgBGg~}f2Cslu&95Cg zm9w|(Oxow53H*3v#>anU?k~SN2Y6==k4@lxu-W|H&BpKIg1j=LiL(57WyZ&UW%m8X zf5puUJU$0sfG^Fj8M<)!O{RSynqdC802?4bF2G2e;!25_{^$mPtRvl!O=cyE zj0#D!OglEElQ#>W0l7MPdG5xqZl~|KErr)Oa6fnetR{YD1~)@M4E>ehULf#j?2Sa* znVX!u!{t}Wdj^heQt5kcP~h=8cmu35zsBfP&d%>a+9S~fXK|6< zB_re)=}m-Vn?xSvMiw4B!7lKD`7O!D?|a%$;+JrqOK^ynXQcdwcz46G@DjK*`M&SB zlm9)mm#xIFWrc1cKM(=V1BdcCk2c<9Vg~SOiPL^;8)BpAF9}M4(x8qD4RQ6EpjfUx zVXi)ZVD9O!32K4bK=WJl!tnEP3+>g=%rU={-qoYzchY+vj;(w01kV;cZUC)7YtV)G z`m|36JHSTjx#7Sg-77v?`%t=fH_Yn>eK(`K1!UcaMrM=KD%z!qw48Wr4IlrlwR@G* zqMvxp!>b?Y4+en9A2|;IE$JH%5?Nje0uRov(fV(#B`T-s#N3T;7|5E_foyWBauMg% zXa-tN@!m7|=;Mxs?^90kC%N*#>k%*!OadE-pZ_zrg+YD#W8i^;d9?J#pw-76<-s=~ zdE}QdhUqW4L+5zhiY`)qNh0>#_~mw z0#ZQ&vba+mlt2bJK)pO1Se@}|;n0~&{mF1_(=+tFg6>t2HMO_0Nv+7m+&Vxr(>@lH z`=oclSiL~7a1RSt*UinYy%D!f;C-+eR3p=Tzi?Or^TAB&X&`XP@V-XdnTx@u&Q4*8_r9m?BeShQB4ut4G zNxcrsfk&j*e7wdU={*B;xFV)Jx=TUUEfQ5U{205?E=|1U#NqEj<;39+#xIl-s)yHA zpgw3IW{l&r@q35%llVM-xBcCZ8N1c}6V%99dW29AP5 z)T80RBb3*>Dw(_W5iC5;!qrVexa>x`2V~9avJ&CvtB=~z)VHh-c!eLW5mCFqfqW^U zukiT#W^c;$DTJ)98KyS(BU`CP}?%e3EuOX?9w_z6&4^@jfvZ9Kirqdq-GD?EzXbQelgXu2gy-!DMJ$1~YV>Xxr=7J%Zb-9qE6*vJhs8@o6#B*Qd#m>-CgoPO_ zT-_lzE(=gT2ePJqESuCDlyVzFDNCC*^@6miM0r=tbjQ2L;Mk^77pH{Yz<(834b}iX zS9+V**{?iH)Q%?b3l;T>Jf(9V7Vc$%V_(sf&@Nm)0BPVubNnP5$LP|dLWgh+UVD~# zKjGuw{+O*@Vbm<`3d@S6gbw5MEyw`hfhg8=0<@L1{J_E;-{8iZvmB}cpZehfWRZo8$4HI za5IovbXol>Z#C4_K`_$QwpPBMHcycac#Pv>W-=UGH@##^s43Ccfo9-(vDQa>B3KEQ zQqKT^6F>Wk*8ka8-*KqNx|?hyvK8vqAXv9%C6>{voIT4EX_uzF->XmKeT0vHE;C=V zys;FA9lUygp5P83zctzTT~wBH88pGU5$7`a_~$ZD%Wr9E4k~zz0;9pb=GPjX%GvqN zq`K^>NdfWV1!8MOYn z49vL@CtYpXyzKAQ#pI2 z<7lsgCh)7{HC-S-emWD5ZBnNkug7?70`G&(=C?Q-zn^F?gC_9f2QQzKA3t~r^NE@A z9LDkZ9DD)3G{4Ksh0kvg?YYr3^t0#u%)97$`R(w=z_E3AT$&O(iN`5$8vFw45FbhV zK(G+Zr@k+X$4c)A+RnLF`W_{`9xrGgUP)v`2d;%c)-5qRo6J6=U78`5*-GzSdud*I35H} z4ZXY3cIIt^ZE$SUhQ!>A?iP@B=Dy4(vs#yOvlUHnb(*iD*E-d|*;>(C!2&m1E2f0{ z;?@uJ2Lr%BWqJkAE|3m(Q!fe!F5GNgq^!8v3UjlSzPr&416i}`&DvGYekP>SF3oV8 ze{QzoObIonFA)r9c_|2-xY>%0&WesvpHV{75D z2kZr(fCa>lt;+KfMA07!w*i4iC9m7d8Y6$+ghvT)C$;D%m5BTT^_L*)NJo)@%Go2` zLc28WEwd9|y;qbOZ&1A|*Vn1>232*AAvm4_r@=3v6RJA2PX$}R2I?U=aN-Rr9Q-$^ zVBVmjFQOwy50Evp^PXCUP)jq7zeaHp3TNDgZ3CSJ8ZmXyhg9f?~IoM$JRYlhr26y%m6dNQy`xB zhP2NFXu1X1gjmJT72z+CHccD````N#q_Bm)&(%{3ye+x2z|A~0| z^$GT}mAM+>U!#I^jHwM$Lf;W{1bh#Uf@2*+-XXH+z>hUHT1z%{6_x8&?w^A5KyGk? zwd|!Yn~=}5pQZQP*g*Dt^tj}wLsZS!%gMv(WTKo1WmA( zA>J5#^fuIC-)~66lu#TV9Y9BLtNHzsjbH1kqe7j~^zzrnY|awHx<62 z8eK2C5r-A527$rgE-*o|Yj`mPXTS;SF>qj2u#tBi7Pm*RATPe?gUd*i_kgUMGKnO@ z4R#yt(loQ=_;SJq4VEt_zqcnKUOeoJF^2l{$} zE-cRkfyZz!1#M@(kdWs+*#`tT~O!Ca1S(mnPULctZmp{|yc2*Oc|+wH0gw z+ktkn@3ZlXtOEwW`NM8aN!tx>zcuertqV3FaPaY+_n%lLtCJ;Fo^<5zA)~X&8exyTam!^$n zHo1VpVZqVVd2uwwWi8$7K-S4i$|kvYX_uypIdU}pK!fFI3Uf4V$B7kQAA*m- z$DkqcQM3;SOTj|w2eNo@G)3zlP1Cdi))TWI-De6%&`P0>VKPJGo1AOEXf zAL7?^{f*27UO$4Lz|TM%bPzg~vtJ%p(!LN)l=-#4+4DZq#BaqeE`sWfdsS^fV|0`D zH*?$eHf~db!k`G)je321MtT!ZDEb?NYAp8!&1fGB0{5xjJbVUl($fyt5?EyEC}~Q) z0~@L%*Uun|m`ZRj(3ti_5ZJn*)bKXp*6@F9#^|!)HesN1gVC9)Hq2Gk)7a$MZJecN zZJe;v*C4y;YfScKI&n+|%fKS)hrl0BYuRwQ6t$^r<1JyQ;;&C`Pw~<}tHF;$*W@v} z9Q9B$=J9&a9JBy|X2TB)y``v%d1XJ>{BQ8~qlv9TJHM35D@zuQcF0c|v-$#kdS~w? z^Kxo`UY-AGKfJ5if2Zuu8{Rb-*==7iGES?;z}c>*a(1Jr zVXFyFIXDgaQcrhIgJ4dBx^WMUkq-mI!3dxy`EBS_&OSIjOM5dk!2y`lpab&bGzjK2 zC_W`L5syhA89WMx6W_i&+Z`MN>D0@>fd{8SU-_p&-Mw{~a2iCF(;z~oBYy$}M+&93 zGn>?+>T(*C#dd?2=WC_L4U&U8vOPjAy6%P^+)BeS6)XaaK_!yTO?y0;1Ey2o0fGb< zd0(LI%&ieQachK_W$0c5Su?wi48l#?G}@&J{P-6`eEfegJfulWxFaR>K3j}1{6;zP zFNQGxV%VF@X}rD#8Q?oGmH2_ZxJ?Oi(|?9~eU<|c{>AXHa^hbMVZOaZ%n5Wqf~+~! zX5HcDX&mj+1b+OB;kU|(x3gg0&g#QkbGP%>94H71fo8;)r#%s@1WT!BWbxqbEVTaH zSup=%n4x`ZBauZ>7Xw){do`QPexY5O;E=_?7~!-u9jLt?7MJLRE0A3aWwX z;3TTFJ2?-cZy@N!@_Z0D@j(K#{s#$g;tySjse`UA$eLNjtHRIONZO@I_GgqI3G^o7 zquW|P$**q9{=9LAS8LD)v;~WZpU{u9AW)wEC^!xT9x+~@@0C-G_ZG|__z)9^t^>%L z(~H^UbcS|mhFDJA8at|-xHSfIYivMDs6Sokg@zEQI-Ht1#rGq$d;WY^)gGWKpfxJZm z+R!%vjAeN>2s~zb+t7CAyD0J~;Wha|`_@b%r=xxXWXNdfWV2jBGLM9MZ&ywNX#;HuYs(Y zT}uWkXCLgR&@N4|4ft5qkIIaXRl$6$YADAoyf%X^U@J%@zS9ua1CD}2)T80RBQ(^z z>L>qWRYSeUS>U4uxTK-{5M<5j?QF8T@M^L}Q{T^--(~a)|4dfrEgY8Ojhzs~3;Zg&NA`gUjWJ><S`ROv98}n0dU8_8n+~jCXkZ@zfXkCr`n%x;)h%>dZC(!7S)B zWF1w3g_`CepkKzs@9`}F* zFv|QQuL+-DPudrv3H%m%%kklViRNC$4$x%b=#<5o33{;g`?FCmdDd_2~H_25nO zo0pB>5!&O?1b*?};0XD}dwXHdbM8wCeT2uyU^m!fewSUFO@6euL{rV*m-PDB@jUtQ zwhzqPK4VfsNAUO_90kYBZ(cTj2WgK%6KQ@iUZdRdi}6xmUMrKhdB+J%UXTyu2YP-K zZ5%$oZnQ_C3HeE%7aVIFF6~(U1~>D#_|h|^NQq&(MP$) zdH1rw@pc>^o5tlTIe`XZGCY%wW9udyfp83t9*4Z2@X-;dXI_o?5Pt3OxDm7mH<{lU zbSh`Rs%)Zt2b%JJuRidxA0K_-qg6in?YN(hP2+JV=nMLp-^pzJZfwfOG|&Wod`tr$ z|6>~Y<+t(y-q^z<35*5f%x@w(m9z8vjQ06x0zW>cfsg+&jRNwUKc2hoc+3DZ!BgfJ zbzOMBL9|amljyIFS4i(keDoK7+b)RV^}QsI(RCAlUl>|~(@S6}cp0ojHT^+eM?tlR zIEKRUAkm!o^FFkl`OQ-~#li&&#_;8WPTm!;zFYMe91Cyr+atZhetV?Xu@LQLBU$Iy ztmhy&1ik@@=FP{0h|$M{N)=XY9b$i@|924T%B+Ez7Q4W^n;3oYVZUPQF5rV|#py2r zqCiP7eFEnIk8oZG@=fHm4sHknk7Tc15sf9;_bB1LNiDjp{?WcX>PtcJsyNlwI@XJb z)LO@SgW=f9V~MRt+*P1HXaMvI`aJWmpRWq`->Kd%U&q^g7b@GS$?U(x-U!-*o4^S& z+%bt+r>`%FXL$|?Jb0TAt^YP3%-ehyk!_O%B0HhJ4FuWhne}ltd&Z^BICi25&W$*B z;^QAX;n*e#k8*1nue-nyFciq|MszA?@4546k4F<6>o|5^EI*E&FvrfxDWQk(co<9o zkC@-iZ2U@H&#@CtUw!73!m+cc{5W>P96P6^gy!Mlf%)KR^J{@lu!0Bx2N$q2o8a7Kn(E(Y3~abfH~B6XYp9( z9Y))kU*u>WrJR-#a}?b%kaZtfoJ~%rX_qF>a^k1)@bP~ducUGsJDt~?ZoJ-rd>}tK zK>Yg083%oxKzo*xLEynpI*^E%&N8sKU??F?rSWw_TET* z21K-f!mEL8aqpCDliEMQ3mBH=KzVQ}(9`l&lS@7Ssg%%Vv|kRQ!9UoR^iLb+&@bs< z9o@N;N&0uD_1r7A^(Otp+w)Ja*w&l$Z|+=wA{n-SPWNhkBIE5gJnjDpPWq>e{-RIP zKQ@v-k${dXU+TCrllM*Ba#GgH|G{$7e`WN)n?zFPRQ&I**w&kL*7o>IN$B-JKd>CU zEQz&!({C9SYTuimEy`w@lcl84`2?xxBxb^F_XV1wvloOS^0~9AzuSN8rcD1u=AY&* z2%UH0_uuRHYq=ow#{qxbADoI5oa6n@<$kFM7D``k3sZuYKi!p7a1OVqIW$)V)j)Ni zqQtLcxdvFs?4IP7l-gpb*Zk*VI2uy46?E=Z%U1Sh+q9W0cg)=6;g)rN+`2>N7Kxmf zb&Iq9KMweF{dM9pS5U`Rkh#ehgtG0g=I;}K5I}#h$@zz}XkE=s_u5r(+~4@mwy!0= zM3NG0$V^{jv#m|5wno&i1uFkkjAmO~wy~{?#iUS}#{X*5rhTqc=B5p|tS$G_t(h}F zbAHxM>$co~_p`~fKHL90;D7dyW&cvq(PFi&AnT^halhU_4h(`#TgEF~Nt=}K&KS?D z=<0u}J*mvo+~Q=4TY#3}2B4yZTd~|41kYl%wV~ejpNnzNVokrcbvs*`68JN1I;|;s zn>)QZn|oXP^TtPvE8p(o2l&iuYN|CHH?H5=1w3fH-1vxbbQjm(!+4hQUgIKNU4Lui zMB`<~8OBw+5tqaWdT0TjXS~O_ba&T&i}7Q|?;7Wdcl}ox4>w+9{H^gNJzQKT_7kKTEkA`f@7Ug6XW}gml+>7 zt~}1g-Dy0>c(-xn{jUE;~X&7S5ii_)HJkxlqasH{Uzmf51<5!J;Fs?Su#SL_v6iTs%?~Si~%moZLPBs3< zxbow!e~9r?6&>o;Ct{Kb5G z{ug`N1>9&n**ML(*fXxbtMNSJuZ>GQYkK2{j5ipcF^*l};_fzHx**9ld~XePpL6vD zmOqLlJPgjRbDZ@ z@e9UZ8ej3M>+j+-&;O^aVViM*WiH@4;|Gj47#Doa^*1wqz<8r^(dDkclkv008O9A) zxc+fsJ^!~_!-XqdM;GJS#-AHkeBJdAH(qIc-W#sHx$#uv&BldRx&9``iN-5n|M`E) z8tSfgfeFT|jL%==+M5|qG=9rC*IHYF@dV=y#(CGd{)Wa0#&4{%=l^-@Z3V{3#v6?< zc+>SaH=bbpuJHwLx&D^M$;MlZFMiwgw>6$@y!CB+{$ISo1vD`pY5c13&&Ji>adCZ( z7Z@KjF88kM?`Ay1_+#T@@45cljb|j;!Y9ThHd=u3W5zp;3vF`!?TsHX-ejEred{-# zVEmqO-p#JRopI6xTi9e=V2ca5*?5NWm&R4Ly8Z;?6~@0BU%SoqPcYtSTx7dzZ)^OR zTFNaCLE|K$u6VjKMD3k37MZH>6i&o^5e!R6p?aB2Aew}+XBr1`5;LY;Y1bpc&L zH=vCf{Y~cnuEUky00{2e|AYNW?wy5yZw2S@=egs*wef$IKtrbWuOxshw8hKQOuP8M z#7SG$@#bi0KIzRa5f7@f+ym|j^afSE3_fqR$GzSBFDxhh0E)DTE7gG= z#-F{-^huYBW|8SuM>^eTSf#J&=EIALSpr@H8pKlgWuP2>C0<^yP=6I@5WimNyq3c% z%gifddrGU&GJ;+M%Yn>Rz$<~wuDi&Yy-xiNAhWA4c4j}(=a(IBK>T-}2INn~eZ(k< z^=RHSUEiWkR|!^WW4iHPtB%1$yg;9H@1fafx<`sRT^m?srs;OTn}~TIYzE4G3%nI5 z_jibw*EZ_gfpTA7+<6U$RSuX}nVn3;4uW=qT|j0Zz-d5cKO>OYhtxj;GCNYjnWexg zF+1Hv^yM!|gNdja<#hYdd}_MON;+LSeJY8jTjq_H&fg>MAV%x^63qeAwJzm!1!0wq zrVH)jA1#Ra8XN@5{Sf>OQ0|WqFR#PYzXi&DbZO^RA66-fhf14WOhg7j-+?1QX5Yg{ zfy`DRkl8Wn$AQdVEaS}j!Yc7*#y9gj1rzZNebSvobINp^%R1d;SY?sv4tOcj`4f@% z5~uqeO{lwDU#@aax0*hclctOLfX~Dc69LWx$~`xHK2Yx0qf-ufsOJUBy?S})b%Z{Z zW_YM1e!xWJBPc&80AzLnToA}?0797+qFxxttnH=FED~0kYGxa~$+ra)@d$m=6-86b zbVDz5x>~TxKGPNT_DbhZ#7p!^R~k(j)6KZt={mtGmC{`D@o-sUE&=6$axV{G3Y7bY z#LMe4>X!rMz9!mvje%8$o7bW=CL)@k3g8MLvx;yfAhTZ($gDE;DnMpw6`a{DSY^GL zo%Gh;9!x}`E1WI{O-LXemA09$(pcm4Q_jnAg4!nTW;&H33b5%&vo*0hv9E zKxWrdZw_QOxr#Gu2df-4Gk$kj1M&}+JL!|I4Vt#5`?{*r&4g7Ne&i-%xOa7zU?OT) zbGlp5#F_5;>P~l(K9vckTMu_2rX#o&DEChAZ9utCL#G^Wr`{PT_eobeuja5ynt2uc zn2G2@P*>0m$gDdY4`j9-fy{bP?+IkKsfIHf537{_*bS(YcS+Y^A_~PgU0*c)Ocz1EUxf=`v%6&LI0{9a_yu3zI zzX$jmv9|MS39IDZ?Q(Cpn~6vuXcQO?WOgr{2xRsF0-4=MeGHJ@(pbalL0=yb^&j!V~29?zmt9)DulYtx;RJFhE``Fi{L zUhU4cKMfXn3?}Mmc7Jy<^L#;F8@0k zyZpnk@~?5N%YWHkmw!&`%D;|xnsvDy@$n`u&!^aCvuwMKXzI3GeORUCCvN8%3(qEI z4wwtH@63ZepzZWB@!DqdsXq<0ExhZTS2tK?x_NE+gdOo2f}RBnfXtqQp9eDg41vsE zpuP~u?EPlWY$B|ZZe~&5{vN@OnE!gGTY}~#(|t>uCTC)j3h)Dw<0_FY@{4r4O7q)R;yQ%L1 z%Drq`=e3JIl@sPwZ9fySm!MB11~U5;-mf~sI}s|e�#ZnRRIA%!Vz$&{<7x`IA=zC(0 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
    agiujtg$&SHWt?2dRzN*D!6@ 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

    P_$4?& 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 KzZ?r*YWhE8Q3>?` delta 1585645 zcmeEv3s_WD*D&YI94>QiGav#A3MgLkZr<-xS!rroS=vR#%F5LA&8}LYQc|Igfi5(1 z2BjoL9SuF0sN*eBQAg86MH`b8m2@mBO3Z)lz0bga_P)J+|MNf3|NMXN^SU^DuYFs4 z?X}lhd+j~5FE0-L<UlO}ZyFpvbXCZSWu^xa`y)4vN<@2XAg(vhJBjvYJcm1kcL2q0yG$Bun%3j0i7 z8rCtUw$i&9wp3ebkMvccEz>WD#-@)CZIm7wmJnN;*}1b`J613`aq8F!FHL$r!0@G^ zK?j5Jn&p~hPWK3{djuyuoD>ki)1Ovz8XoNtX=K}da-VmS|jAns1wP|GH z0tAC0z|5Nw-y9f>-Qjpcplsj`CX>M+@Pau|5cr^=@Nf%<{~3%Hxm9RjP^(6PK_THG zL7X9wYZYh+GMWO61|x3_G8z#n2zE{21~)YZ1{niLDUJ`MfAE+4E@(kI$$O#*dc5$1`z|p!uUXe?=yx7}pl1u5)1?L37^)|{mWX+>UNfis8bcVRYb zsPMyO?E5_i^XBPrE`!OZ8GeR`!PM^=JXXeF!8r!Y^?c7+_U)l~y#uT^J)!a>%gEf8 z97rf)JI#8Ud`*X&S%=DW3Z%iZe{m5>?j6~ze>%)xu!w#iTdZ&FHavxmEO_R_eniSs7ieVX@9T+$vQ0khOw4QFHlJf z1X%M^SqD5z8NN4#ecNuZ??V0i*c_IgSIyErM_GO4$t=B!;$sIqIzqLt;ObA=6gX`Z zRtJ;$^z3IGxcd^D=Tx23Q;+M_>aa+Mso%2niY*N0>gm-x*@Rco34bQQTBgsu_s9*} zT*1226x!CX<}>t$%5)CT)H~uixQ61T99cnOst(h1Xgjh3u1@C??kfJ7A-Hvze~oa~UjK#o)1(45og;plvmS zr8-`^oQQu;U~4 zU8;Aydd26o!v)J3OetSUzg-s?EVx1-VaZD@q2eloxj!=K_=&+%FN4Q^VbE5|plicg zT47Np8*!ly%XLa*>J&;YV)@A%bPDZb&_mO)15O>Gs*q(AZD-K!Vz7K0g9SRw-O9d8 z7an6HyvZn3v5BR-K4;LA!(j4e22=Eo+t%v&Yf6M9!tGu?!Lg2IxOJGPSCFF5{qC*n zSc7^4dHUQ|f5+xDZ3m-B-bMDEs!ye}lzk@`u~k)?zLVBd20N1IA6c-2LRTe&yDu_W zdY!>4{X3(Aedkf*!qUCBgpS6c3)SLJSn*_Cn5N8Tc$v4Du&vO)Gj6i)A|0mcGPYR9bNW7vL5@8X(0LY8FbhgEUGv~>6^EKeWzvV`PD2v=S%&2DTCDx1~cX`Sdht} z&B^Nl(aU(4{xvzRDUZ%wdbQ>KNr1tL-?0E`4N`^Vv3dY&jcg zij95e>abehZ@oHx!6~*Ic@H6HHpdQ>=~h9$ZcQB1H}dNDSci7QXYX=NlS&9aqUY#@ z%K40CmwwKmQ}1uVkF4KJ_Lu5=o?*axNv6kxz`Ofbs74p|JSggZx9j0tx>A5i znKCKhsQ%Zh0mmHBZvpoJ#4g~X`CZHBrYzv_|Gbv6z;G&yKa{PFYipbv!vC4AUFvH5 z!odIG&@y@&BRS!iL#T9U>w6h@Hc0wu?s17VU}H(Z5Q6N3pbYu@7smyWkQx+u-gTPU07rnGVMaPU07}xR@j9cyYQJ^ z_}nh6vmo3sJ+3ojaYh3#aVD zX}eHr7tYv)vv$E_7tYy*^LF6}yKuoST(k@2cHxp;xNH}$*o6w1Io$ZhphXU0u|oid zkm(SXIE1AR;S-0DPH~_8G-xmtj0BZ^eqm85Z8x9yd+V}?lvqLKxZOr2M z^A0%klrahxJY^h$9~yrAXhAgluvdm~kp%z3WaAuy|MC=Ld!GN@p?xydI82F5$rj>+ z2Fe^iAU3F(!RlFRo@f=!n9U^_8*=rt%e;CvV0K%0D%m)zp|1v7zVx7FqLst)@YyV5 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%0AisnCcF&9Q=xTSJ$4kL33-Kpy1Te-Dj7YO*_ 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

    &||_{t9j{e4|@_=1n{;*0n16J53GL%zp# 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 W(5`lAQ7W{nEkwQjxEY>_2)2NMd4M4x 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 Date: Fri, 29 May 2020 15:29:24 +0200 Subject: [PATCH 13/24] Disable oo import for anonymous users --- www/common/onlyoffice/inner.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 262581c2f..19adc46b2 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -1606,13 +1606,13 @@ define([ if (typeof(Atomics) === "undefined") { accept = ['.bin']; } - var $importXLSX = common.createButton('import', true, { - accept: accept, - binary : ["ods", "xlsx", "odt", "docx", "odp", "pptx"] - }, importXLSXFile); - $importXLSX.appendTo(toolbar.$drawer); if (common.isLoggedIn()) { + var $importXLSX = common.createButton('import', true, { + accept: accept, + binary : ["ods", "xlsx", "odt", "docx", "odp", "pptx"] + }, importXLSXFile); + $importXLSX.appendTo(toolbar.$drawer); common.createButton('hashtag', true).appendTo(toolbar.$drawer); } From faa150be90aa1f58a35cf5f097098cb4514e48ac Mon Sep 17 00:00:00 2001 From: yflory Date: Fri, 29 May 2020 17:13:10 +0200 Subject: [PATCH 14/24] Kanban improvements (images, autobrackets) --- www/common/common-thumbnail.js | 1 - www/common/sframe-common-codemirror.js | 4 +-- www/kanban/inner.js | 44 ++++++++++++++++++++------ www/kanban/jkanban_cp.js | 10 ++++-- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/www/common/common-thumbnail.js b/www/common/common-thumbnail.js index 3f359d425..8c78d9d6d 100644 --- a/www/common/common-thumbnail.js +++ b/www/common/common-thumbnail.js @@ -200,7 +200,6 @@ define([ // The blob is already in memory, it should be super-fast to make a thumbnail // ==> 1s timeout setTimeout(function () { - console.error("Thumbnail timeout"); cb('TIMEOUT'); }, 1000); try { diff --git a/www/common/sframe-common-codemirror.js b/www/common/sframe-common-codemirror.js index 02e3867ec..c3e3b2566 100644 --- a/www/common/sframe-common-codemirror.js +++ b/www/common/sframe-common-codemirror.js @@ -176,14 +176,14 @@ define([ updateIndentSettings(); }; - module.create = function (defaultMode, CMeditor) { + module.create = function (defaultMode, CMeditor, textarea) { var exp = {}; var CodeMirror = exp.CodeMirror = CMeditor; CodeMirror.modeURL = "cm/mode/%N/%N"; var $pad = $('#pad-iframe'); - var $textarea = exp.$textarea = $('#editor1'); + var $textarea = exp.$textarea = textarea ? $(textarea) : $('#editor1'); if (!$textarea.length) { $textarea = exp.$textarea = $pad.contents().find('#editor1'); } var Title; diff --git a/www/kanban/inner.js b/www/kanban/inner.js index f5f7c4ac3..41176d090 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -21,6 +21,12 @@ define([ '/kanban/jkanban_cp.js', 'cm/mode/gfm/gfm', + 'cm/addon/edit/closebrackets', + 'cm/addon/edit/matchbrackets', + 'cm/addon/edit/trailingspace', + 'cm/addon/selection/active-line', + 'cm/addon/search/search', + 'cm/addon/search/match-highlighter', 'css!/bower_components/codemirror/lib/codemirror.css', 'css!/bower_components/codemirror/addon/dialog/dialog.css', @@ -211,15 +217,11 @@ define([ }; // Body - var editor = CodeMirror.fromTextArea(text, { - allowDropFileTypes: [], - lineWrapping: true, - styleActiveLine: true, - autoCloseBrackets: true, - inputStyle: 'contenteditable', - extraKeys: {"Shift-Ctrl-R": undefined}, - mode: "gfm" - }); + var cm = SFCodeMirror.create("gfm", CodeMirror, text); + var editor = cm.editor; + editor.setOption('gutters', []); + editor.setOption('lineNumbers', false); + editor.setOption('readOnly', false); editor.on('keydown', function (editor, e) { if (e.which === 27) { // Focus the next form element but don't close the modal (stopPropagation) @@ -257,6 +259,25 @@ define([ commit(); }); + setTimeout(function () { + var privateData = framework._.cpNfInner.metadataMgr.getPrivateData(); + var fmConfig = { + dropArea: $('.CodeMirror'), + body: $('body'), + onUploaded: function (ev, data) { + var parsed = Hash.parsePadUrl(data.url); + var secret = Hash.getSecrets('file', parsed.hash, data.password); + var fileHost = privateData.fileHost || privateData.origin; + var src = fileHost + Hash.getBlobPathFromHex(secret.channel); + var key = Hash.encodeBase64(secret.keys.cryptKey); + var mt = ''; + editor.replaceSelection(mt); + } + }; + common.createFileManager(fmConfig); + }); + + // Tags var _field, initialTags; var tags = { @@ -775,8 +796,11 @@ define([ } }); }, + applyHtml: function (html, node) { + DiffMd.apply(html, $(node),framework._.sfCommon); + }, renderMd: function (md) { - return DiffMd.render(md, true, false); + return DiffMd.render(md); }, addItemButton: true, getTextColor: getTextColor, diff --git a/www/kanban/jkanban_cp.js b/www/kanban/jkanban_cp.js index d366a7fad..061b5f06b 100644 --- a/www/kanban/jkanban_cp.js +++ b/www/kanban/jkanban_cp.js @@ -50,6 +50,7 @@ define([ boardTitleclick: function (/*el, boardId*/) {}, addItemClick: function (/*el, boardId*/) {}, renderMd: function (/*md*/) {}, + applyHtml: function (/*html, node*/) {}, refresh: function () {}, onChange: function () {} }; @@ -522,7 +523,7 @@ define([ }; } var nodeBody = document.createElement('div'); - nodeBody.classList.add('kanban-item-body'); + nodeBody.setAttribute('id', 'kanban-body-' + element.id); $(nodeBody).on('click', 'a', function (e) { e.preventDefault(); var a = e.target; @@ -533,7 +534,9 @@ define([ nodeBody.onclick = function (e) { e.preventDefault(); }; - nodeBody.innerHTML = html; + //nodeBody.innerHTML = html; + self.applyHtml(html, nodeBody); + nodeBody.classList.add('kanban-item-body'); nodeItem.appendChild(nodeBody); } if (Array.isArray(element.tags)) { @@ -796,6 +799,9 @@ define([ return self; }; + this.applyHtml = function (html, node) { + return self.options.applyHtml(html, node); + }; this.renderMd = function (md) { return self.options.renderMd(md); }; From 9e387c0eb6b039e87fb081d6c323a02c8d52158c Mon Sep 17 00:00:00 2001 From: ansuz Date: Fri, 29 May 2020 17:00:06 -0400 Subject: [PATCH 15/24] improve keyboard support in kanban cards' tag field --- www/kanban/inner.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 41176d090..c671824d9 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -302,6 +302,12 @@ define([ _field.setTokens(tags || []); $tags.find('.token-input').on('keydown', function (e) { + // if the tokenfield is blank and the user hits enter or escape + // then allow the event to propogate (closing the modal) + // this can leave behind the autocomplete menu, so forcefully hide it + if (!$(this).val() && [13, 27].indexOf(e.which) !== -1) { + return void $('.ui-autocomplete.ui-front').hide(); + } e.stopPropagation(); }); From 39b3af2ae3e5654bec238cf566229d7a9a91f0dc Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 2 Jun 2020 10:42:58 +0200 Subject: [PATCH 16/24] Store language settings in the user object --- customize.dist/login.js | 5 +++++ www/common/cryptpad-common.js | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/customize.dist/login.js b/customize.dist/login.js index 0e46981ea..35121f113 100644 --- a/customize.dist/login.js +++ b/customize.dist/login.js @@ -341,6 +341,11 @@ define([ if (shouldImport) { setMergeAnonDrive(); } + var l = Util.find(rt.proxy, ['settings', 'general', 'language']); + var LS_LANG = "CRYPTPAD_LANG"; + if (l) { + localStorage.setItem(LS_LANG, l); + } return void LocalStore.login(userHash, uname, function () { cb(void 0, res); }); diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 1204e3e27..19faf940b 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -63,7 +63,10 @@ define([ common.setLanguage = function (l, cb) { var LS_LANG = "CRYPTPAD_LANG"; localStorage.setItem(LS_LANG, l); - cb(); + postMessage("SET_ATTRIBUTE", { + attr: ['general', 'language'], + value: l + }, cb); }; common.makeNetwork = function (cb) { From d11af7c21a8957e712ef54ab218d4aac25350453 Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 2 Jun 2020 10:54:15 +0200 Subject: [PATCH 17/24] Remove kanban column from UI on delete --- www/kanban/inner.js | 1 + 1 file changed, 1 insertion(+) diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 41176d090..6d4750549 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -364,6 +364,7 @@ define([ var idx = list.indexOf(id); if (idx !== -1) { list.splice(idx, 1); } delete (boards.data || {})[id]; + kanban.removeBoard(id); return void commit(); } Object.keys(boards.data || {}).forEach(function (boardId) { From 3de6377ad792e4a1966e2f02553e0fda55c4008d Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 2 Jun 2020 14:21:23 +0200 Subject: [PATCH 18/24] Better UX when transfering ownership to yourself --- www/common/inner/access.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/www/common/inner/access.js b/www/common/inner/access.js index b2705208f..55a4dbbe9 100644 --- a/www/common/inner/access.js +++ b/www/common/inner/access.js @@ -205,10 +205,14 @@ define([ var $sel = $div.find('.cp-usergrid-user.cp-selected'); var sel = $sel.toArray(); if (!sel.length) { return; } + var addMe = false; var toAdd = sel.map(function (el) { var curve = $(el).attr('data-curve'); - // If the pad is woned by a team, we can transfer ownership to ourselves - if (curve === user.curvePublic && teamOwner) { return priv.edPublic; } + // If the pad is owned by a team, we can transfer ownership to ourselves + if (curve === user.curvePublic && teamOwner) { + addMe = true; + return; + } var friend = friends[curve]; if (!friend) { return; } return friend.edPublic; @@ -282,10 +286,31 @@ define([ } })); } + }).nThen(function (waitFor) { + // Offer ownership to a friend + if (addMe) { + // Send the command + sframeChan.query('Q_SET_PAD_METADATA', { + channel: channel, + command: 'ADD_OWNERS', + value: [priv.edPublic], + teamId: teamOwner + }, waitFor(function (err, res) { + err = err || (res && res.error); + if (err) { + waitFor.abort(); + redrawAll(true); + var text = err === "INSUFFICIENT_PERMISSIONS" ? Messages.fm_forbidden + : Messages.error; + return void UI.warn(text); + } + })); + } }).nThen(function (waitFor) { sel.forEach(function (el) { var curve = $(el).attr('data-curve'); - var friend = curve === user.curvePublic ? user : friends[curve]; + if (curve === user.curvePublic) { return; } + var friend = friends[curve]; if (!friend) { return; } common.mailbox.sendTo("ADD_OWNER", { channel: channel, From 10ac7ed6b03ec18f6e354c3cc6c90a12763d589d Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 2 Jun 2020 17:17:27 +0200 Subject: [PATCH 19/24] Fix scrollbar in help box in sheets --- www/common/onlyoffice/app-oo.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/www/common/onlyoffice/app-oo.less b/www/common/onlyoffice/app-oo.less index 2971165a0..08b64df91 100644 --- a/www/common/onlyoffice/app-oo.less +++ b/www/common/onlyoffice/app-oo.less @@ -63,6 +63,9 @@ body.cp-app-sheet, body.cp-app-oodoc, body.cp-app-ooslide { display: flex; flex-flow: column; position: relative; + iframe { + flex: 1; + } } #cp-app-oo-offline { position: absolute; From 373e0161c44055866aee69c2087acd8fd7d5c4c2 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 2 Jun 2020 13:25:36 -0400 Subject: [PATCH 20/24] enlarge clickable area for user admin menu about button --- www/common/common-ui-elements.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index a1e5b38e2..ca7d42e82 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2401,18 +2401,13 @@ define([ }); } if (Pages.versionString) { - Messages.user_about = "About CryptPad"; // XXX - var aboutButton = h('span', Messages.user_about); - $(aboutButton).click(function () { - UI.alert(Pages.versionString); - }); - + Messages.user_about = Messages.about; // XXX "About CryptPad" options.push({ tag: 'a', attributes: { - 'class': 'fa fa-info', + 'class': 'cp-toolbar-about fa fa-info', }, - content: aboutButton, + content: h('span', Messages.user_about), }); } @@ -2513,6 +2508,9 @@ define([ }); }); + $userAdmin.find('a.cp-toolbar-about').click(function () { + UI.alert(Pages.versionString); + }); $userAdmin.find('a.cp-toolbar-menu-logout-everywhere').click(function () { Common.getSframeChannel().query('Q_LOGOUT_EVERYWHERE', null, function () { window.parent.location = origin + '/'; From 83289ee10b4c8de61c583e12fa0ddefaa0f0bf95 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 2 Jun 2020 13:26:07 -0400 Subject: [PATCH 21/24] update version to 3.18.1 (Smilodon's revenge) --- customize.dist/pages.js | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/customize.dist/pages.js b/customize.dist/pages.js index 1da801e64..6bc19e10a 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -62,7 +62,7 @@ define([ var imprintUrl = AppConfig.imprint && (typeof(AppConfig.imprint) === "boolean" ? '/imprint.html' : AppConfig.imprint); - Pages.versionString = "CryptPad v3.18.0 (Smilodon)"; + Pages.versionString = "CryptPad v3.18.1 (Smilodon's revenge)"; Pages.infopageFooter = function () { return h('footer', [ diff --git a/package-lock.json b/package-lock.json index c6c2c1219..9840bd099 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cryptpad", - "version": "3.18.0", + "version": "3.18.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a08f0ea29..56e512b22 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cryptpad", "description": "realtime collaborative visual editor with zero knowlege server", - "version": "3.18.0", + "version": "3.18.1", "license": "AGPL-3.0+", "repository": { "type": "git", From 3a22ca26860f3fbc7ac44f10f3e5517296137caa Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 2 Jun 2020 13:57:10 -0400 Subject: [PATCH 22/24] update changelog for 3.18.1 --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f3b4274c..dfa69006a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,33 @@ +# Smilodon's revenge (3.18.1) + +Our next major release (3.19.0) is still a few weeks away. +In the meantime we've been working on some minor improvements and bug fixes that we wanted to ship as soon as possible. + +New features: + +* Rich text pads can now be exported to .doc format. A few features don't translate well to the exported format (some fonts, embedded videos and pdfs), but for the most part your documents should work +* Items in the "Recent pads" section of your drive can now be dragged to other folders via the filesystem tree UI +* The user admin menu (found in the top-right corner) now includes an option to display the current version of the CryptPad instance you're using. We plan to add some more information here in the near future. +* The kanban app now offers better support for editing markdown within cards with autocompleted parentheses. We've also added support for embedded media, allowing users to drag images and other content into the card content editor. + +Bug fixes: + +* Account deletion via the settings page works once again +* Some small layout and usability issues in the drive have been addressed + * dropdown menus flow in the appropriate direction when space is limited + * changing the sorting criteria no longer causes the browser to jump to the top of the page +* Hitting enter or escape in the kanban's card tag field while it's empty now closes the modal (instead of doing nothing) +* Language preferences (as configured via the settings page) are applied when you log in (previously it would reset to English or your browser's settings) +* A performance issue triggered by hiding a closed support ticket from the admin panel has been optimized. Previously it would lock up the shared worker in cases when there were many unclosed tickets. +* We've updated the parameters of the XLSX import/export functionality to prevent an "out of memory" error that primarily affected large spreadsheets. It should now allocate more memory instead of failing silently. +* Finally, members of a team can now directly share or transfer ownership of a document owned by their team to their own account without having to go through the additional steps of offering it to themself and accepting the offer. + +Updating from 3.18.0 to 3.18.1 is pretty standard: + +1. Stop your server +2. Get the latest code with git +3. Restart your server + # Smilodon release (3.18.0) ## Goals From 6393ae0c65580dd017af2d53c529d5a85c9826b5 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 2 Jun 2020 14:46:35 -0400 Subject: [PATCH 23/24] supply admin menu click handlers directly --- www/common/common-ui-elements.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index ca7d42e82..550344fa7 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2116,7 +2116,11 @@ define([ config.options.forEach(function (o) { if (!isValidOption(o)) { return; } if (isElement(o)) { return $innerblock.append($(o)); } - $('<' + o.tag + '>', o.attributes || {}).html(o.content || '').appendTo($innerblock); + var $el = $('<' + o.tag + '>', o.attributes || {}).html(o.content || ''); + $el.appendTo($innerblock); + if (typeof(o.action) === 'function') { + $el.click(o.action); + } }); $container.append($button).append($innerblock); @@ -2408,6 +2412,10 @@ define([ 'class': 'cp-toolbar-about fa fa-info', }, content: h('span', Messages.user_about), + action: function () { + // XXX UIElements.createHelpButton + UI.alert(Pages.versionString); + }, }); } @@ -2502,15 +2510,13 @@ define([ metadataMgr.onChange(updateButton); updateButton(); + // XXX easier to just pass in handlers? $userAdmin.find('a.cp-toolbar-menu-logout').click(function () { Common.logout(function () { window.parent.location = origin+'/'; }); }); - $userAdmin.find('a.cp-toolbar-about').click(function () { - UI.alert(Pages.versionString); - }); $userAdmin.find('a.cp-toolbar-menu-logout-everywhere').click(function () { Common.getSframeChannel().query('Q_LOGOUT_EVERYWHERE', null, function () { window.parent.location = origin + '/'; From ff3b783ebddde0503df6e1fd2ac24d83a47da8d4 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 2 Jun 2020 15:09:54 -0400 Subject: [PATCH 24/24] add click handlers to relevant dropdown menu items at creation time --- www/common/common-ui-elements.js | 123 +++++++++++++++---------------- 1 file changed, 60 insertions(+), 63 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 550344fa7..0caa39c92 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2342,14 +2342,28 @@ define([ options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-profile fa fa-user-circle'}, - content: h('span', Messages.profileButton) + content: h('span', Messages.profileButton), + action: function () { + if (padType) { + window.open(origin+'/profile/'); + } else { + window.parent.location = origin+'/profile/'; + } + }, }); } if (padType !== 'settings') { options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-settings fa fa-cog'}, - content: h('span', Messages.settingsButton) + content: h('span', Messages.settingsButton), + action: function () { + if (padType) { + window.open(origin+'/settings/'); + } else { + window.parent.location = origin+'/settings/'; + } + }, }); } options.push({ tag: 'hr' }); @@ -2358,14 +2372,28 @@ define([ options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-admin fa fa-cogs'}, - content: h('span', Messages.adminPage || 'Admin') + content: h('span', Messages.adminPage || 'Admin'), + action: function () { + if (padType) { + window.open(origin+'/admin/'); + } else { + window.parent.location = origin+'/admin/'; + } + }, }); } if (padType !== 'support' && accountName && Config.supportMailbox) { options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-support fa fa-life-ring'}, - content: h('span', Messages.supportPage || 'Support') + content: h('span', Messages.supportPage || 'Support'), + action: function () { + if (padType) { + window.open(origin+'/support/'); + } else { + window.parent.location = origin+'/support/'; + } + }, }); } options.push({ tag: 'hr' }); @@ -2401,7 +2429,10 @@ define([ 'href': AppConfig.surveyURL, 'class': 'cp-toolbar-survey fa fa-graduation-cap' }, - content: h('span', Messages.survey) + content: h('span', Messages.survey), + action: function () { + Feedback.send('SURVEY_CLICKED'); + }, }); } if (Pages.versionString) { @@ -2427,23 +2458,43 @@ define([ attributes: { 'class': 'cp-toolbar-menu-logout-everywhere fa fa-plug', }, - content: h('span', Messages.logoutEverywhere) + content: h('span', Messages.logoutEverywhere), + action: function () { + Common.getSframeChannel().query('Q_LOGOUT_EVERYWHERE', null, function () { + window.parent.location = origin + '/'; + }); + }, }); options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-logout fa fa-sign-out'}, - content: h('span', Messages.logoutButton) + content: h('span', Messages.logoutButton), + action: function () { + Common.logout(function () { + window.parent.location = origin+'/'; + }); + }, }); } else { options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-login fa fa-sign-in'}, - content: h('span', Messages.login_login) + content: h('span', Messages.login_login), + action: function () { + Common.setLoginRedirect(function () { + window.parent.location = origin+'/login/'; + }); + }, }); options.push({ tag: 'a', attributes: {'class': 'cp-toolbar-menu-register fa fa-user-plus'}, - content: h('span', Messages.login_register) + content: h('span', Messages.login_register), + action: function () { + Common.setLoginRedirect(function () { + window.parent.location = origin+'/register/'; + }); + }, }); } var $icon = $('', {'class': 'fa fa-user-secret'}); @@ -2510,60 +2561,6 @@ define([ metadataMgr.onChange(updateButton); updateButton(); - // XXX easier to just pass in handlers? - $userAdmin.find('a.cp-toolbar-menu-logout').click(function () { - Common.logout(function () { - window.parent.location = origin+'/'; - }); - }); - - $userAdmin.find('a.cp-toolbar-menu-logout-everywhere').click(function () { - Common.getSframeChannel().query('Q_LOGOUT_EVERYWHERE', null, function () { - window.parent.location = origin + '/'; - }); - }); - $userAdmin.find('a.cp-toolbar-menu-settings').click(function () { - if (padType) { - window.open(origin+'/settings/'); - } else { - window.parent.location = origin+'/settings/'; - } - }); - $userAdmin.find('a.cp-toolbar-menu-support').click(function () { - if (padType) { - window.open(origin+'/support/'); - } else { - window.parent.location = origin+'/support/'; - } - }); - $userAdmin.find('a.cp-toolbar-menu-admin').click(function () { - if (padType) { - window.open(origin+'/admin/'); - } else { - window.parent.location = origin+'/admin/'; - } - }); - $userAdmin.find('a.cp-toolbar-survey').click(function () { - Feedback.send('SURVEY_CLICKED'); - }); - $userAdmin.find('a.cp-toolbar-menu-profile').click(function () { - if (padType) { - window.open(origin+'/profile/'); - } else { - window.parent.location = origin+'/profile/'; - } - }); - $userAdmin.find('a.cp-toolbar-menu-login').click(function () { - Common.setLoginRedirect(function () { - window.parent.location = origin+'/login/'; - }); - }); - $userAdmin.find('a.cp-toolbar-menu-register').click(function () { - Common.setLoginRedirect(function () { - window.parent.location = origin+'/register/'; - }); - }); - return $userAdmin; };

    ^TE{DP^@W$D+pszp-fSRQZ;fR(>z((N;-2zS);1VkDejS}0|TK=`-T zx}X!;{sn>CoVVrx72tV}5SotK*=aXohnVu#kORYFQRe(w=cjgkEkQhDMqkeCKT=#T zpBv>4RZ4o*^-xpage>CiOjN3};T^qBEh)iPsh!AI(>5lEt4xqQb5+Qg-tftCVp{^< zGcsp?h&eg}ujoRlU-Aj&3{_Pmh+E9t5Wjb-K>Rit|E&2eVjS=^{FFGWV@j3e%AE;f zkh!Sr0BsI4iKk6vV3iMU>Ot9^agMC6s!R}Xm~jVJ97w>Wtg2joHR8o8-pc3F(CP${ zNGlQ&MSJxt#9htAbtEDQbo<0Uv>&0hfYV*sLnb6P&#q>FiUrc0(e|0lsNN0uq{)>t z5TEL%e{zo=J5~=T(n3`3U#@RIbx0W1Um8ZK zsG^;|tKqav3O<@3ik(R{2+V@3+zDS}Zn-PdRO_xxBHjEghSl})e&1;yzZtMnnDd|7 zPDf^jVOZ?PdGss3ev1mPO%fBx=X=l%UMw38c-Um9<)d|4E#ClaC(H{D9#l3ZZS6|y zP{Vj?f09!dP%_|Zbih$ScSqcLDnS(K-P50v>kai(mm*Xk%vA@R-SPZsE~<()0%jWG z^MBIfD*@*i;$J$W#cu_iZCd?06`&y#>8YRj+T?0_9q?HQi9>&ZI0E<@;A}lSiSGK9 zvC7ov0fU7(H+LO%|4owA*#v02^Qjv`_X9o;cq8|l64>puMLD@8z(*CoCy0^(uKk!4 z-v_Bb_evC><6e3#U8#CyITYU76czncFz_(>Ub)r|E3DdK7 z;p6ylwc2k`A~a#mw}>6m;-LTk;DH1@$93=Du~gB|(TU;>v3^~_&_tN@l~G|_B0MFO zQE+@B%rxp~A>abA0zX?KyNEZ=#4w7+gz`b$;NgiPQRSI9$URx_KbZ=_rZG7Y*Bo^e znq*HDxvoMwA{%Cv%Gsv~tjhCK_+zE2Pii83MN1t||M7|9TG~@H0*l24WfRt+5s9qG zQ@;o7jz^Kyc4HH9tgPq0o}NGko@HwRQ`{Bixz96LR+V_xx2Go%N3Pn8nP|XJ3laLO z&^u%z-IkUp>1Pq(Eh0E;qr1PI&wM*Y@?fU{y|!j+%Q$>#b;IL9;Z%i(g&^p=gg$>b z>2peI%F%V_q9Fc39X};e?DrXv|E5u*lB>2$7}MoHxo$(2pxN=MB2=jwb}SYp)Y6HY z6S1kzQ0DF0$~ORO$u>1n#DP!D28;sC23(8jH~f}F94D-yy8+Y1A!X>Et?9_HjRxMD zh{w|)ZLql9o$?XvV=h+@P!;6kh~P7-u?woS4Oh7?W_6yHDDDZ$^4Ln2da)+6igJ)P z026j2AS$Gu0X$|3%r}tm6+p~Y>(ViTrl4)F8#|#A6U&SZa_a5ej0H3kaE|>()frTj24sHg_^b7OPVMXL&hEM7ewQ=Jxc* zJ&8~+>L^H*g5=(8!GZ#*voA z{+2PzdkDF*(9Z}Ra1~d#&X_g;^3O}!vk_r5?(6YbO@c}^gk->HT-j>$SnYG&P)~Oa z^AK`=4o~3dZAyE`9UDq7BIM4|cD+nfhX9_#L{SI4mk8?(ete<|^$Vi4r5Ilhev3b| z@%Drsf8Pf@?xpH0fIpeV8g=PLW_srA`MWfy3H-<4Gy#@Jc!r})Edulsz%SXHD9Q$! z8$WwXDsZX%oA#muEKMruU_Cf7_7A@SCZiP%ClleVx`M7d1tO6Tb`_4>(wPn-I33Xm zKzrnJ%jrQkH6-FmstU>nY*tzX4L_|VJ_UFbpPqJxx%;y}fidD;5>kIjgjV2y43_<* z2L}L$Uj$>^>s)z0Lx>+;*GlO3b0VZaXJ{Tmc#l#~``jZm2%kvC`yhJZ^JNg-&!3*c z-LKW5->-?{US|>N`v@iZ%7-lQjGu|0@r!B~<&B3dl&E_%ENU2}?|#CWZf>4V_n4A! z5g$J3%}Lm~6;lS_NWhOYsQP&&3AMd>^?L`5Qbbf>5_t4#N&}qhly)>hD6|tNWzyAv z8!+*rEJ+aj26ax7+jrJ^IwrBwPj#4owo>IWj9U32$diLvRt+~af2cerxMb3`~cHu;5f_o%EM==edMJ_4L4tbEp({hv=L{A}f ztDd&d75iw{Bs^qYM+7Nn65WBy^~N&%93Wv?cYftjlVCjIK4$1Rb&-_cmg$Wb5W^=Y;e8Cf>Hh!> zx-JQlv{SaPLx>v}aeWe=W5r`~I9qUua(&f#H=-6%ur`c(I0+BWY@-ao(WcTP)E$4| zzYf24tb3dsCPQth9{(e0+9OOxXJm$WJ(QuYN9-Iwc)ambh?HBR}eQwc+BvE3505 zfB)a;`x{>Cz)Rbx!`ml=t(aEV$jRLkPq(y~6Kyajr~}9kD@#g8(65-V|EQ6iB%f%7 z4$pXCXp!8|79*Iv%I$~>?x{H;$rC5v-DrZr!Ceyc7l zS=5FU6Da8MYbo-sWYNPF z&Y<~oaP@(vBlap_zXG@nF!?X;T>QGveF%5gbMae9GMD-WV*hBPe{yk~%74neD+v^0 zaebneZons+fAS{eI*9nJEA?FWV%>qjEk<>apr^TqmqV+y7rwuEuKWA^ni_vUT-}Y> zVdH!c6>;Od;OxS;j2msKHN26cuWki+q7v5o>Zpy$!sOf5`3j#>KVWk>o2>~Pjm_Sk z3@s9$F|uh|1RY2CRmc!8;8-RKdaCkW$%q~D5+5!n!*)ARNuP#y(NjP8&f5zGRFbGj z7SWv>mniO46Y*6Cs+Au%_ZezJLgbb{!^~^GUPk4`sSrw!(^tq6BV(3N4@69ca`eE~ ztLcSL@Qfd4NZX1GfQp!Zj7y;NNRctLch@MK>L85*=UGLx#46c-TK=J&!zrwze`l%E z-Ch|&8BYw?aw&Vi{4Uyr^7x@WnZ@x=T|ec;)0^9HY(vCm-l_yvCX3Y;XD4YA0XhkH z9q1Dz4TCD85%3kD5<11%Ig>+*N?qy;M_ZR+SS|J4oh+6HwVaf24O`=`2b0BJIt-!Z2u()l1mNAy zSoQuddG&xc;smlzU_E2fS7@yc2hw?j9)*^;u@vZQd@yg8nq)27pL#4fyfcYJL zl=8p-+>Zu@;mdv+>+p6o{*!J+#1fRK*5l93LMzgX_J-P_@0!)cE*{nyOKyQ?QJ*J58K5Fa*A4|;htXoXh?!xOc|cP!^IPvTO_B_*m?3U^}3$VE=Y57oVzQItj20cu?AIov|f|$YA6cV-Mg9^E7bub z?KlTS(d$N|O{PqRQn`0qX_VI(JL`R#*Ls+e{`e+;kG87(FlwAI6={Wqv>3Wwb`~MjxdWb)iTk}hmb`yZ4%eK z>cTaD8wjc1meo6rbRc^|UzI8HdOMzoJ#(S@mLfS{n5uS4U)4Q>VS%vE{ba5bD6eqj z(u+6R!KKa^TGd@ydEK|ZbT~2&M?lkWvWszg1C{5$eE$?>pC5(8^xZe3x4NHE47H0g z1^n_cZv90;rwiRVWQ)AK3l7ZGsdn+63A&fSY3K-#qp{BNXe`K)Nh6W=sQYxw!sT|3 z3c=CXUZmV7+({u?QV&{#{puVQgwwBI5T7o5HCxEe zjxw5Y8>YD)4suke-ys}q#v5UOpqwfnso;d5#R^aX1*nM?pfiUAT9hZPW80}svw*E> zL4m|tP!Z)Pk*MzjcJV%|OOE1?JUcjxKiOdm3cY)nMs*OtHT8rc_|i;quS4(y!G*K! zV)Q`MPX$UtBK!{e%{mOl8%E^c7^|G@1S5WRR# z(25_A*pYe$xcO`}mVYOnm$!?z`kZZS)(S7jnm>$D=nMEnUx^3d`-b4AiIm2jW|905 z8WJf5sn`2Cjoo|rP$4W}gXkSZPYOBYQ5=XFS+dXT@0iiNM_?=f2kfP*^U1NJBV?&G zJgJSFz}wE#QM_vwq8#X5*$y&1D9?2EJnh1tS>~c9=VN4em<<2rV`N@lj$F8j&KZV% zZ0-)o7y?Hw9bi;xjcUwr>j1BCtTwx>GxKne=jAA-nLqXa?-zVir(3U?~*aVO3mA9oZx- zpc^IJMh^m} z#`O)wB7v9dTpKYHyQ{gvkwvo(*>MxGR++n`DNOBm*e(<=U9M~6C{{l?Y8Q{SffT4X zR?HfzKJ>j^IyWJsgCBRS;yhk{&-Ew{K3hex9 z>1e%OTo>4Syp7VYHjB3H4*Ccm?W+3%HK)POFBRwKtW(6(TjDW_lYe5Nr;-TJW^R0b zof4IN8t*ny;2DlMw0NCzs_>7&cm}46=%UO?s`GI=;yea~TC*ruE6>`+UEY@3Ji`j7 z*>)Dt=<`^`Ek!L=)dlnllBQV7-fktAwwI1-vWr{0n(7Ob;@{gwDk(nS`6v~yAHqB2 z5yQm>v$-=4Bo=1Pq9(Q)Ik+x3VyRlY)V|2`h4`PoTzp%gV}xM&--LI@MO z1Wq1X?bkYL=sp}=wR|@njlsrNN!~N3ZRn+ug((HHO?J=W?E5xlxbW{(`-*{VF=F{I zQw|d1&9x1?X|HuS9EuKan{p|{hOQl8lgs6H?~Kj82MtudTuqxl=!nhu@m+Yj;dtW^ z^ZH%YMcu|*gD+l6TreWo9eaPyjhXY+m~NC}8hyR@i>>_)1ubo|>nwVsV?)-T1M z8fFiMY(LHI1EMk`9s<#pA*RMxsATk5(O(I;zKIn+u&@29d zf3hg5M=7H_=dSW3_ysGfxy`mtEfa{ROZdwA6r2|B#I*D^uLttvkS*9TAQ<5aDk--l zbW+li2YFKz=4B_EG+=5bY3>;HIbZw3LC(Rsq5oE35+E6zDgIiy14y-jNO-bOX; zcE<+Ms4yoia#Nz~PLFMn{>@T|4h_^f9=>lu{%e4h5$By5hbf1L5>u`%&%u+Lh_UL*GeFlXaz8@v4q z0A#LM;@}8@b~^iT?#fUZ4Nf?Ag-2Il2Rt^OO^nQ`@|@mtC=g!JB3W=^*Ap_nbLeF5 zKMq5}N5F*gAU|81+n&#OKN(_VH9%^Ajqv`cgPT?^p$=`u=Ou(W4%y<_DBk^gTJFEC zkea!olDn~1gnW8vv6yi~<6O zS<+fUecJFVr4>}_Uais1o=x#yh;WmAoy4_yH6w6_(qPz@VEr+PZ?EMQtCO+geor~` z(Q?mtnu(%(&z;t6H}xBIlUUQ@1fX-q`a9sw6Za!#JuvrpIaUpG!!9Jj_Pi}O|>Td`*ZMlqkVMjI0T=Qa7X^QlCd9PedRMJ?=g z@;bf&qd#7ZUEd>vuH`*(C_}&>iQ&Ji%rf+VC0Jqk$Y9<$UhRp;$aX35>=PE@O?x)K z0aY|ByS1$h5C@=2Be*py9@=wR6M)Zs=B0pdoEQ(AH%%FvR^{chH~2C{efNtAjBnl^ z59x;2Ct=bfbI$Jcz@}MitGV@L5bjYYGcBwi4&~G@y2)1&V-*wGfK?2n9{o`~B$%Nq zdNXjInp3z@n`im7t2V9T*l79MF>C0}6u_OT3uKroa%mY;+%XLlBMPQZ!TF2dM$lx~ zA9#upq?qT?(<+@}(AE6ssquK_sWz*x;AAgZTdj#{%!&zt%67xXa@tC`mTkm`r{Ee^ zdD!$}q|ZpDc)GNvuR2ccl$23A@9S@MS<~n1(&AZylKvkavja#1e2bb};=#|54A%DV zGp5R`gD-?+mg|xCo7EHD^`c9yUA#USa~} zC)V@Q8OeC@S$}6dw4SRRrW-f<5B(~Q-FNv~ZO(m{1H@EJul%7apTE({#_)xIpjor? zO8kye>lS~e#s54omZp!_v;^Rum-@IvjI7y)QqK{i8nM6 z=(80dxf}Nzk7$t0x(hHYedV#sQ^k@EKJ?<@+O|TC5 zy>~ybKGta^ey7sT`xE^-_+$9R zU~6xGazT!EpRvs;fmsa4zAc^G{!CCgJWKp;;Ro>xnJpU1;e6O%fZN0@i{l29%1e(D zIZV?l=q8aQZcCITZ%b{Cd_qb5(>VWrC}F*w>}t8=K21SV5J1tgC-ObB>2 z;{7P2lrm7&Mf^?`2sEu#=UoP7rY%@#3%dlw-Am{9WU(QA&0x*9=8Vn z1C(>ed9TNCJ;yV5DtP!9jQwX-_ z)8@v5r&jace(jL;({8jd3wZ_7hCyEh$11%U;D5=+1u*ijHBi) zC$s~dZwJoDCn2;4dyRiXZFe|4;D-sB2_wnLK^!drxGL%du)YA z2X)qBK0Fcz?~cGZ@PyPkC|BrbW}Lvy>`uKi4}oGscRuYO@$9|GoD$Ck00j%aViL{T z$bZrjtK|>jca+%t9S;ubWLMe{G9TOw72wo}MW!Km54U{-4f#i=zHs+iJlD(8>g%oqo8!pVHLC8`5bf zl{E=sFiy>Cf^Ifwzc{qbz962B^@psl|05c|W?2`l;l_?(?dW1wPfKgZQjx5SY^vMd}gPKkOaYw)B0YSRI1Rz2VaWC z=~H>QI|!8ut+5U|mlb>-I9C*1k=8;#3)Ff_ja`9MJ?pu6h}$bG^0d6?p`aV~LOjb* zYw-2-v30Q>(7^h)KZ5Rz8U_g4m)jzpiX71|jDqUI60I~EEWoETabuu5Vx#M$v=zbi z-8kjn0M~n?U>!VlSv+Kh!FgYV_0<{}sqv0906OuJFSb!z*lVP9_8qc2xq#a(_5q%O zq(_|qTE>{V-n<1#A+3B_8}vqTcfNdyxyFwWYqc|^5$tZ|dykA}y=j1oYFz{5-ThYw zs89}9jV6Kfz}U=4ISb`_od==`G2Y^qXGp{234&!rFk%)QD+4RTB2u!8!uxct4;gM1s?_|LhE~B7T!DK`Y?Ze*BaoFE+9fA z>HpIESld3sf+qsr7q(j`0&9b(mcpmLJ^?p#w9ez2=LKf4-qsX?G>)vO@LY5Cs8Za^ z+CVr4&1d_Nu43LF%6+$55P3uji2=l~yf;E2@FRnsG2I&v6z{>qkL=ceT627K{SPBh$cJO(%bn~s+y+ey> z*cyie&icckQFH*5J~yo%>%Q2NaeBaCXXf1U55Ksd=tW1=WLrEhQKK&#O&D_dklaYN0PR!}rD^}sJ4CLI; zfOaB4Cwi=-5>z5M7;R*DaxfnL92AGoWWZ(x;k4mOP2R5~wN`S9ASE0M+|J@Z=v~ z#j_lg3ag5TMHLK-CN6b^9&oAas_m@1+>eXGM(9n5_414GUU&8nC0Fn_GEuxX2Tip=EYU#G0lfNKnp$rJUh$!v7BzeAH^fY8;bvuh)CQZ&$nabw6A!kwNJ>63T2s_kYn%{JC8E}}vRTtV zHpn{Klx7A|&d-8Dq&m)n9sNQ#FrS^c#@Hjj%A1l%$2G13Ve=8#_Ax#TJKWllK3=VB zDmSA8V1r)l;BlqZ>Sm`!mexwk(ua5xbF@#0$F{%rlK zG!+-X{|Vboe37^){MlpiY=~0xvE+p*>tE7J7ek!XhZp7xAvT*%ys%US7snYVaeGIj z?D(agAAC zGp2xxwBiiVe|XcYyFIX02CqaqZ8>ob2@q@=k84NM*?4x+=P=vy3HXX`5pH7WGwZe( zZoNSK%vSF&8_&~`>U}EK{{D)xn_88%|TI|{610@FWAy=H4g#Qhoukg%pU^_Q0731NVUzRuYl5 z-Sb;TrSc63=SkXolfYe*5)^HLDYa{*0Eq5@q(xsPvS^37K4^ig{f3`>Es4FOuMDxU z&8$^`-X8#fx9>=@8oArd6@Uk5G)Sr2$~T8un5|6+aH<+n#l1iV(?TtfuBzd$;rD*E zs1z*TjoSuzXl4q(V~VYwk3*#+Bg#xln{;o2KBjmJgRvk7020~+P_nl3yoVr~qCXN2 z)0Rs3`gP`~LqFRA{e?&iTqAg7_(l8M4)9BzEbI%P{*)M>Rw_PiqsL|l@om1Ni-p~) zW^Xk*YSvscI-14*(A5HZyI{S!dAO}@70-rh+4^scqwE0hh*!fn_1t>-!jF}cE)w$J z{Kj}PEP7ME?kiPq^3svu{u{$IO1$ptx!o-=7a8HS^+x^U#k<=0qPwojMr1)igzUm9p(&xAtyedfD*53Y@~ z;C_&Md>cRg)I|2Ma;{b%7iVGNejXK(Qwmg+XBCs7XC+!d{rEs&x;!B~nk*b!a677? z{>v(S0Lp$1pur2krxCetdo{ubV*9T`oO3~NYUfU#bssQIxHqQB;fHR*x>sNdRUn!x z0mxl9VSCO)SWVA@lxosv;Md_8rMHf>rF11i4q3Q{7;O8bnEUk0fD4ugIJ< z(iTTx)#fxC3Cb$Aa~^5iMOqerXrhHJ{ok(DZ%neV0g(k8P2&SJUA9e1Hjn`SWI|d8 zHX1le;N@k>kY+fyQQ|0N$tIHsl0N)q3;P&)37dG$Ph;U89wK?0^uVbWJk)xuF*Ulq zt=7R)FHa)OrO%m0JKYB&YqJxA6U4imw)%CvCe6a`_5m*P2By94&%57hVJkiM5Cr6H z`MebA#O4gnO=6$&+}kYdTh-zCMmuz@xQ{ktLw!&Ez1uBJRXx5#`xD>s+`&E&`J0>& z#@6U^w*@X+D>i+@W7k4}OljW4pGDF}pOP4oU#S~IVnAGR+cg;5uCT3bX9AGhuJCE# z?D?2_?`>DN*|a(!e@Ywb9dnY{cAlG4Y&*LLl-PDf9!X-`RhyIe6EiGq=6}5vx6OnS zP-OjHPogQetXhin6z=7R*3l-&*ej6QwY(!}mC)Z-K$10w@5icS5oKH40~r9jZB6g$ zFaFsAqkoWQ4t~_aqPhJM3!OOc@DN1%XqSg>n2-3?u=mten#s@zL(krrRpJ(H@ zmsRsaIY}TY_8E=O-R9BwUoC)bYDYJ>GGUxTEMze5($T&}5dNmtj*Q6s+ViXD;J?R0 z!cWG>Y;8hdCsOSr_>HqHEPhJC`|g1;^p(vPKn(P6?!RG)BFjvPNxQV=d^_s=UX_=t)c|IGb}f zCPNh9JMWDoWh8%NG1r2Zh_~n?caMJ8g0C{)HRXao;8B-AyjdTcs~3p3%$&p*JwvM% zK5D-;p&LZ8kr7J{dalZf&%7~D zTM%9o(OhI6DWQ|;iDtwJnEQztN}PZd9!Zk$EH*=li750)5))BxPU7bl(h2zAZbj9z z7Pz{qe${hOn;~j|448i9*JW7fStSSBb$dr)Qxx${lmfxa<07X@+ppDp1Xp5kJ^37E z)bmyJs}`ey;a|-c(YV+5x^6&Sd3N-^cBj@zSGAuvK8vz0%4T$zrD_+@ee$-KO z5x3)6Cr+))-fukXY{}j)`MBwP;|uhi@|XAXS3OZQ8`;gY5MrQk56)0Xl^NLY_ks+aIQL15>@2%{h} z8WziQT5i=44 zfvH0x@o*%>qLrS-cUyJypmb@w9%?Fw|w) z`AYyqI)|>J8~2tUA)WI}GV2@w0V6Q2_)|#k)hYLgxpyQ{1dAekBl2EWN*3_SO=zlq zXRd{9AoF33Rn+osoX8aLvPA3y5zFQ_JGG)j{C472TQCdl%xsxw-JYt9(X;D)^Jw(Y zSt`?sKk+&Z-V&a+pKAXFu|*KO5-~mJ4WjL^@JE8!?+I??&G?;-&&W9R0}+2Hs=36B z90a1V^O(~xR~F@|_b;#ulsAyonLFl$F+bR6&E+}&0e7lXW{!!eF7L_BK~Q)yj%N9m6qPBdBB_Kth!y>%^M%Eu&X0Y%p2nz#tsF{Ls1o_|FZ#j z>@DI$W?u12?Xgmyz|hkY?TK-a{rv#3G zJsJx0oF<3D{F80ChD4RrxVNA|tyJ*_WX&VY#2fd5nBci(bnEp%O~IXE-PjvB5x;oA zrxv!*cT14Uc_X|=x3VQjv^MV?xtWFwM3i0`m3!E$Q4rSSZ+>QB#|h~fjdFZtfi|_o zdQp5?r3KPi68AY{688bw?X*DEea|kO2T|KwtNK;o#61JC(!FoYW`?D4Q%UE`cVIMs z>vpx`+kZ6B?sz^DNNeywEcD;>p#kLRpVFMkGL2{59m=}j2p?)5C4>NJokx-oA2p-;t87wuw1U6A$HFH5 zPqy!f3LIV_7j!*MKrSsDxjsw&jr}J(eHrvz2;p1E@C5y~>Oq?y| zQ_WbEc0L~~Yo2jPK4Tn@&tUfHkaN!d;C*=h5jdoAZDGF{XQXpG$uly^`9i6W{|47q7GAZ=jmgMnXSROVw-#9Z?Q-CA^HP$hd*du8J|}2v3sHc<{KRq4 z3BH*^Ab{TuNMGSL7&+4N((db`EkAMD5U>4>kM?5Z#a!`>lXSWBmW3Axu^EZUBks^GFS2 zKfgsL&D*l(Sx;)TSRriRyN^ z-n3%=NGzg|6E3AE3ADvSwT{1d38VL`hK6KS)r|Q|{V8dfC|*k+b<&?ZE`!YUs8vsF zu`o?lw(R0F8?AU{Pw!xbl_uB#ur*jA_}dUaxF^MC_P2uaIelhe5P?=AZ=|!#a44`6 z@JOZ3s6?xIWLuOo)}P0~#&8gsO(+et!Vos&$~+ObtZL)Id}q+k=4Ulx&X?GulJ<%wQ|)ui0-Xi6X^OS>4?G&-4Ty zEkR3#I%#8ym5m|=Q<2S6=XQo&Hkpe=nVSWJY&2M~aXlFdR~4e4V-+OJ{4yh74kltU zxyhMK-&7Ez;TcN-k&gzZp@Abb$BjdSjMk0@;-|!M_?4}9+TXUzchLwW(_g< zq3zCOe5e=u()bQiO=H&lr7@`p(3lM)j$jL`w&GgInx}+6HgoC2m4aO4q~j zT;`>6{>eu-!A3$1+?>#5)vo{2%gTaSCr6{X3PG1Nmum~k>aXTmy+*TOtn|wqxwmp~yiTJ&hMpkYIv5*jx3kkz-N=8gB)Fpf#rf3{SO-_|qlQJ?I z^GBH@w1xsbSmcie3X|~X%Ki$7YrpsxbOuc@|gSR#<4IoxdG8S7#1XD6VbTAe8#5sq-6rdfRau;X1rCX zr=<0+ze}6(&z8PMvj_5uA7Y`=*U)(0$Vi~TynAi1E#*uofi{vj%m}Y4)y|mJS{f|Nq8*!e zk76TMp1&r@2=~|0Uv7yI$*?Q*>7a1j1qh};PtV1xyE&uIh}gfnCLD*?f=PtD#Ey`W z(YP3!5@lqlMDh-iGnAKnp+KgHpoa4F88;c>(O}D)O3H{Vsbqa;?$ml`j5ZzKP>kLC zoq_qQo!Qi9S9a$2Mm7RsfOu9AM4MFTn()TpNo+NrH^mCSeVN*dW5rYO(>VA{C#~V3 zGlTTGQ>|<%LvJ7ZeiGOb=?A{h(oPrm;ol>g$2+FcuK9nH*?cQLIKO^@i4>C?td)ze z=Ve#e@$|gx3a!elh32}%mAK3!NnDAW%t^t$cQlTBSr)-`A-5{r(gIpHWA}i{A||dCg>f*A(!iM0kZQ$58&L2@JX+c zhDx*;^<;bf)(5TZDHiT6C0fF3px|&@8|jjmZKpr?u$4JfFog0R$MOVvKM3nuV@z?| z9KrATvkemf)lB@J;rG4*967$A(R^}AO2KfuD>+Jn zIa}=kB}fuG--!xVjbC!cr-A~HBvC=tdv4i6LxMmWxg0d8#sfNzReps{xh(lv9fnazWg(gKUIc@$J3X!^ZP>z*t z91q1?_tug`nx~^!QJ<%BwHTaQ-iQjKIy>Ek%b^@ZZH1LU;jBCgdV3%RRPrfDL|A9- z?#a7CG<*9&0c!ov5cy9V)EyYa4&_|-%NS(Wv>)V$ges`*I!;0Tx&OVc0RWr+OcmIN4k98kpU1q0fmExZIZQSrdv;l3);G4< zg<5wBbd9sB$6{Tr0d)M7a~?2aXg&Kahql=~U}7k$Jdy+tK9dh#g%&8)KYEaoKN@G$ zk|Rbkt|~nh#N?d_0eOf!vjts>ohnbZbIxQ@3Ncv<0dbJ&_pi3X=b>7E8ofR_fko=g zYpm=urlvPm^Ib7x*sa1DtB6*HjAb#>xUt+nf--}nR!)vu@iYT}hoL-cBAL8wdELqm zV?UFB+HRVC%%eAIe;m{@kWbIYMi%aFEB^&IzNeF~WzqUNB<8`PlRj~smEGx&=f8QN zj0S4Ed zYXoF|Ls&e}O!uCKx@v8~-pjFS5dy(v8YL3}vXO#LrEancT~JQH!g>aoMp4(FfD`XO zMZ+V3)nR3w)N`;1KyC)q5(LOZ3OJm_$RS<&&2_MZ0-GS4iBu=6CyaatAcIV#h$_jw zfLaa11HwiMF1a(_A=rGRNbdsFMB!ZkO*Fg*4$!=poH-iA7u8rn$j{nO;|0Ya{AQ@@>tzMn{5(*k0+^=` z?*k)EPke*js2->XRyc@T8sBh@icz5Wp?{bvehUtpU-%ZFO4do9hdOW59M^2?t2G=d z?FjmK-uIX{J_C*Tr|?Z2yJ1^*z6Vub$47hzE{;f~9!OWrPa|y(o^R^$n}J^{z7&Jk zg5M06Pv=!LNJ);JEg%+MOz;5Tg4pGI1W9vvh0xnF0`79*P5pL^DO^7)RNS3e9 zz;7avl=Pk3`Gp@mDoD+q?E2h{@o@aS3E;teVJ(g|wdo|5g}YO;{S?&LWc2&qSE%IO zKhmekUz!}rK1b-Q8GIUkbFd8S@cXn{aLSm<>6+_v zP(H6f4TN@BBUpGqLo$w)NO5J!anYiY6p*-U#yfSLn2Zb~99D_)Bb~@>7~wdXVj#O= z%K8&V6$pqbctfCqPRLk)UV0WrGL&!ZTFBY;(fSkTumSvp1@J&=0Xz`oWcjMaP7B~Q zO;&b85Uy!9P|FT|mttd|_(v9;*yBFbLBG{thJ_tU-wZdw9IA%}*)V632h7w0N`rck zrF}EZr8|b$;J;BhaN6h~0&?N>@8r(-fh!(aP_Ej6qR-Ev0 zSalLybF9|N`pK}`BCN2s1*M{cT3Sr~Ab!(RHXMLs!fX(6q3_6PFh1B{zZ78uy2m~j zhW(4=voT zJgbKd#sOT_rbc$amEkfH=PPV{ z`KI1B7#FHKCmJ|hunZNu5#y@%SH0- zATI0uc>|J$sO1KP9&;Uy9J)4syp63>D$dBYOT2B&QfIB?cuRLzq~YZ=U1*fAw*jxD zw#;%5c}ZDmC+tDWiJ@OH4>e=Ac6CKk1829F4+L~yLH;=W5}d&_k&)3fr!Jfa9@;sB z^25ZNk`a@vow@(s>IV$h(vffca{>#|&)#TbS&EvDrB(X&Fff2+puaE&(oR2UwZUEq ztJ8xLZETFcQhU+7oSJ_z$Fj{aaNZm5Mq7E!!%4tZO%jk#nP`J_QlVap-$*8~6r2W- zp8|hisp@aH!w$M1xj(QCnmvx+G}#8*^l)#$5g_*l+KPclK8e^2N}hJJku0EBBX);( zmFWkl%0Q|TWxMhLQ*3O$H_(Bt|A9Go_jk_%$fqW|s7W}dMNOJ_9fcy>S;tapUfwi! ztGn_F#O70STB^C#95J77HG6z(98XR|kG;Q`{T+2Jz|}SSKm^aiD0JXIp@2`V4pBgL z6?p2FR>q>_3bjtY6}5^k{7ri2q-h$$YcL-jwCLfp#iX#m8+jO|A+kAI#qilat!ZfG zLw)#7x5G%VcTbmmPdz376})u8)xfj##diECV5fM)X15MI{|?mKgZyI9dK0V7T`Q6l z%{F9q6j$%Gv4^{OfVnHwWB--Nu3`MmKiJs2N>-EHV8+{)T;X`zYBDxpnUSxFs~2MO z>V<&3nl(A|#f=RynOtze*tb*+N0`_}l1(Zjqm>#b2$eK88lJd*F>iRpWPRJ6$*8Xv zlUsDGf>fD}Eo?#)h{_Jv%Bk`zoSHMzZETSK z!Q(deJh|lc9dpTC(<&nC2Y1fCY+45f`v~47q!Xjg|FAJALS$<5{#u-Yp9Oy??zGDB zGDvhsSU>=;m~bOrK}D`H9umaNe9-nZ&4SH(Fa9sSDn|pC$tOV=wFw|iG=m=0i5`4j zQA<$L)o0g8c%-^ULZ^|~c%?Dm%QI~3kK^lo2O+1$JT5|H&2#+;&V9Mw?>QTLpQ&}} z`=tZ=hUYQ+y}&?o)9<9o0pFeFb+EN zh)f%MQEh0c<{Tlz8bc>7pl8W7+Qyx8+wuE?yBcmS)S?#9Tw7pG^)HLCWc=0i^!>bJ zLNdErt9Y{b&cOE3aM%Pv&K}Ec(56whpuLCQDEs6{ONkrXfy z|3+*WwbvlTWxjD8_(Y>oVAxE!#T07xS=)m3v9Hg10%2hV@ff%8@LG8QotXZ9L zv)!1BGs7!UKY+wjfj$&FSf+wv2bm|W|K_a98wb2JBOne}gksR4`}~!v=lHy*Z-QJx zMurT4>|60U(P!4Gfg$}r4-|%aZRZSn+M7d;#~Uqt{Fyksa4avtid5~-K_Gu@0$Akr z8L*Ap8zB&b)(u3);}fZ!6JVdP;@SPu6G<*_K+bh)-9o4*z!%9_b<4v2lCi#oSnj)L zjTNkRI3pR0ZnVK!XAT>T3^+OK-PB0nG2*R{;C67+qdYn6I&s*aA_GThg*GqGT5zQR zH#p(8OrC+fI=B0*aN_c^=rCKZKL0}-SWpIQeh;hGi79`-$<4%DJ5D4>d zuEnAw;9Toiv5lP!P_``OdE0@KC=h$v2=qNc&zTE(a(#yU zAQD7|Vt>wPBLcE12!x}|C|WzRY6K`{2tTs}#0>csv+cA&XnYH|;&%}L9{+=stQYvq zFXG_H2sgE^%KGQsu~2R;$Nmq`dcpMchT9taHz7S%Iq*DR@j)WIk*~DV%&xc)s6h#efTCVX#8fVRY)hUu~jQB zm<%rpFliLTANbnFda0S2DAIl`TPQ+l-4xbOc=lTvQW_*aZA$@D#MM!{Em2qUkbDg< z$(evtz!(JXC{ASEoH0#6Vz>x$qC?KHh>#c-r?i*fXtwoV)OluzR>3+7^^jaaJo0Jb8_N&q1s& zm4xH@<^(KKNY3lwKiF7bRVi95J0>_!Y_T!9bQz>9Iq|8k+n|#Fs)2VJa*RNxGf<@& zDY>s0C}|6~ou`FO5<^PP%SLwd3L~)H8K?pK6Ub~FTh0&BFW-EUFd2z}fh8v*D<7`! z#FiQbp(!MhA2fwz0GdLsfLz;1k*ggrG6eydg5oj-0ht0FB)OpxkedYonN_mX07gKj zoI}c4+RRQ^By2{)X!yMp^%`v+tsHPB91xuttz<2i-vPfj26$r}CCEz4oH=Di4iaQe z({iH$2*{LzETgpu$krktvoMmfYY0?Mm;kI%+K3rg^I{Sf?Fs`r8-XUYSLBUTFb!1L z8O8L-x*RVVpFu!=1_7B>>&!wxW+AYm6R;F}*=PW!Tf&yVY*d4QghfDRrDq$%0aM{v zDCFUaelhcq(onW!i>k&MX(hMl5p=u~dNsi7jI7ilCnMM^#)q-`WbGBN7#~JJei#9n zm9f&uLO^CAAh0ZR<`k}!coqq=OuaJ)0a*qCnPu0E>JX4w2*@mK3OOMNh!n7WOMjuM z$G(vXMIvDYPrcL=layoBP~^;RFyOJ_Bz!)%;$Rp@TTyoe2*}SPKv_dHH^;@H ztJsM(e;(X{->fDv%bK55=CAFv)ko+jF4WE9H$m>#Tb?-gwf*Gz=W0H` z#m2r=>RvPU9s;tj2#C+GKAFI#MCCS?xu`>xl#cOY%BQjf2#__QCYMt%r;xzvMF}iS zJM}8eTMG|nIF(3t!H_!8lmv1o24NOndUG<1;TZu5tT_rM*<2qn)N(R-c3=X_{69)i zh2IjC0Ls{*FT`&WqXFcxH;;mD0-OM9G0i8s_=SWu*!7m+1W2qAwkjWAcYAR4i3iMQ^l@tX;T_!87vrqo+BE^9-qaAeBM^}Eq0utl&rtVdMAF}Dc< z)h4Xv7wVS)6WVTI!5S0AC-<}&{3-*Sj~bG|u2t%s!$1L|hS?eeW1)i*V<8|=2A?xD zfvr&*8nwK$N1|4SmiE_XJb0!PFG)yYV@c~nEGbcZHlLrU5PW)&#H zW6FC&!(sJk3~l&(lKhUC-u>p`7)3@-9bT z6RQPN*#}p-@oI_PxXP(ZvbTx#f~*RWwZty3a_-eq&5gU9bG6{@pm7|ntbD#-E*7jB zxmc6~7r7NHVH~fDOJJ#K_2x#)<=|u=I2|j9_2a4CE0pEn%+rLp1?M6A_5JX{)`Ntg zQ-Cgb&UN^P+Wb1S%wtb?S~EU@O^;gthI^QdL#2ZM6^;RkI-%9#=TBmi!S%3ABL%=sPt)*Fx&^#5zGU;K^T zP;W}W9ojiId=8>BS|6Ol$a?%r9o8nGs#ZJ9FC*(lC7&DUTCUsC3K%s4y&0=|w1Q+=j)1SISMXBGmo8UzHw(D&Y)0G3Wv zi9@>frCYq1sCH1Gjhvdm4qzQO;CBjsV^Yx%{^Ya-NWQvKbxQrWqLLWcp$#zG%S&!a zfHx#a)P8rguQvB|@wI%~tqFM9+s?D_n~L8<_sZe96Y@!-He8f4^CZ^+f z{TuSQ5BJH?XFi<3_9<#cJ_LH7tsBQLElpszizrZTBnH3qm~!q7_f`H@K6Ed1Hsi{`DR&F#Q3$Ii-V?yVw{y)aL zphtYIea+4w#lDWuJCn>Te0UZpoXDzmZv078Tt{utFI=m@yH}dMB~}O{kUJ6)2%kPg z282r}l1-B?q3ZvGBaU2YB49YsCCLfl5{jUtQmK6%xJ>ZKpir~GfQnHH|05YtctdV^ zDS@pDr4+%(5v$tSdco~Lj^uU-E)J@YTpVW?c^G=tiMmHP$|);h^merL-mF8-z;pTI6Mur!HhEV)1Wymbj|KKYcEeB|==`{moX5pceZ z`@NOG0-4XVN)x~_nnSrYH<97V;vRB}WXRo-@3LT?|8@dg3VOfSv|Vm6zxi``IMHt| zNMH}fIz{gI_unNj`1#Q<6Kd`}HsQtI^<{N5Brw~%=+%6D0P z`cDZ^Dd|R!oRAPw@b(@U-4Q-uF4*x7dR24>s9`3sZu-jeSUfD!08<562LZ;vyM#*$ zKlpP3Ycbc%=LIB!l~O~h08AKE8E;%_XfyTw_ct&i&T(boHzZ?* zI1NcB*{%d_GTISQ|JOJw7Df4@Y$PKDLX?ZR(^T;5hEsBE+Z)dwqyY=hU32f2ql z)EM%1sLQ)~q4Hy47@ThW(T?b`p5~v3h37N!=bfLH-8Vk{Z?u1;*EGsc>qYGn*=|>s zEM@xKcriOaIct?2GUdzWOwkTzd=SK^ViqdK%*c7I17vZZ{({#D^ySW-YV?$tJ@_ZUOMiaFn{qzGKBzHeM2d(9u5`FS^@ zLrVQ7_o2~M$=zs)Fh!@Rf^<7nS71F|IUv| z{O^oO{O>I8YOP4N!%C?Ow?kcsdel{;@~()9SzhHZ=;JDGvn9euYUbwst74C_Hz>gK zI{UG;dRYRNf}dKj*}(Hgz`*mIWT2uz)+e%8)a-YR(g?`XoJvRPf1a4g{=lMY*7@+j zAOtrlkwrxpy)BPnr?x8IXbmMu@vvK~`%O+{dziBRU3q%zQBxA}BIL8QuESHsmT8IX zCj2(zcbV!)e?u#6Dh08dn#le^6`0RQqdwz&)OlJWh|zGkb9CSNqKWuowY{gP0WQx&|B8J13TORakuNElWrza0g|q(qB42e(acnV= zj{SH`Fdk=J^kg?zL?9jelZm*;ny4*7M2zAOJcTn3ps(OJ1{?P?{O&a3(c#^quZj*D zr-rp>A<+spn9Lu@k3XHr3Os6~vt>L#_DmwPLdE-2ei;a0Fu#3%BK%$p2+Z$?ZMp1uI*`rP>ib?uWH!&Fm_><@k}^Z_n#DLoct8AKYfjfG z-3ydTFW?_8O=Lx8P)_OB>Ltq(*_(mn)|AE(erQX&;E}rq?w070n^=s}iRdtG`u@S; zltBnhIK!10gSC4;8`Mtg)o*rd#bmDjhL*@4foS#n29E;)!LI1P*NusHQA~&) zi5wyH{pRXK7D^@9xr*NU4H$ zeAk;qpLoksReyjBB#a!X2MWbg#$avvnbH7tJz|YLOF`Q7fF{V(Z~e}qc-!czZL)6b zphv%*$VU6C^{6kr!`6i|u(v*vpLQg&yCLv68QhjdYE90U#O&?IAB(;givByn7VgM< zUr*tI@8IN-a$?T}wG&Jgu$HuNRH8XTx7I4_3yuBkI0!v(XU_!@f-E@>g4)2SNE*g9 zJmT8;@fPemMalWdG-leR_-*aF6FCM$8|fc=Ub^ic3c7EkQjQ{YF~%!n)(45O9aW1Q zAx2F;HG1(Q-F;`4<3{96EbM-+aqj_%XN;Foi z2~hzxonqVy;j7NRCN9n2crt~4&(oe<*^J!-j!6~yNr=vi3j*}*s zV*cEzM7G+SYH2#Z69UPK5J<)sq?ofGfA}=6qTa9>KYPFq(fcfNuMy1PbG z+rYz2WKZ*v_|U(+i{E;#$MIxmT>5W>=wEsT3LU-}Z=pwH)-)5!>a{eUFst4V27-T-I2{(Q#JF}Uql zWP_iasg?Gv@3iXlhtPU$SRBtnwbUO=!?l|8M*cm@28LWqA9E8=3@UY7E}0lKxU(k#C+onw{c1hb7^XQvZpt=-HV^KZqp=sk%wS zlYk#F_wsoG0de$l5^0X)$B}!63Xy0U8ap3Cr%uUQuVj~Kts!Kr#Ux!>$e6Dgoy6h? z=M&7Lqw-ldiIKCrY(6)8+F1$X8oocVt z>Snx(m>DrUV}gVnJ~0WzP)><)iAzOvG)0M}+l`mJ7{h|Jtnl}HYFXb6@(-EhG#KFp zVI8@#n;tp|-bMVy1~%ye7A!ic7<=^Ov?K_b3eHD6$qH;29T`p9GJL@;VA=DMTa&~qNja`mA@v{1yE@3*O&Hcj1hfcJVJiP@a}l#PIVGNGw? z$eFB?rvxdz2A^cEfLy#tkuT=kjMWTS`6Sk`&A@FP&i7)0o#}Fnqrbt^-5Fo-sD+Ku z+`j2TTLXw()4K!frB^+g#9j-*)XjeOP#TnR`8xr?GV2{^=yPO+gc6 zD-lRrl+5BH8cdMH?k_0gjY-LDvYwTij8{5+`}`!v0+jSmc?pDf8u@+KOoG48R!SY3 zmduji>N~0R?8+(0?2k%AnOw;$SJig|7hRGR&P0tCv>u(Agrk65pUHtmKsFfxIgZd- zl&_8m$frdFq%7EHMj^P8k%bVDsASUOB-k0u$a23qQg63^Cf|DSwwSjBi<>OGYb!o4 z8B1o}^As5N=E70JZ!f5ppT&z)uMXf7{`sLvVD;R#G>PRi98S^)^XlbEa9xx0xqE($ z7wduM0z6Uc2E=rmU* zER|r_ZQ1GSm#tk`zQey?08(>xa^n=pe7=%iF2ADhTb;y~genEQ_*`t~Xx{PZiEI+> z?urdb?3lk#K{T%y94NNgJiT&D5|qt7#+k4}0S|pYi8cH5CtdG}>cE9JcZl3cp+kK0 zy<|=|*YN1H43h0Z%7M>~?S_EZqY#(v`w<-YkPj}IP-Y}x&}BlCk$~wC2{hSq&mtgG zYQ8WwIs$T|BS2Y0bhRjn4GmQqcJP>;ARN_(9l-jt2jUE}BR+^Sb|A1AqsH$n2TqKv z@$gFt`?x!BEq$U-H*y1y(%Oo@4eX}Powq)iPj5d7T!%|2l^sA8Yloh=rkggS=HXyI zcRoo56n%xm4xiA!MqnuWomIn6(uB#NW0viule=bz#E7jo17h%i0#5@XZN$^?fznQv z4Qg+2HrlLd>AocPH4VuFUxOU_oy{G?|6YwIgnP@B*6^A26WPtqbE4xnN$d`PX*tg@ zm9*v{W(F&z)XHFlH2sd^@A$?)B(sifR5jihm)j2kQ~%CJM)Qi8$t-A=Vh>}P-4qI4|Yp!F%zxA4oy zarm`SJPDQ_CX&y=Rx7_t$=zk9_z*Kue6E zWlDCNIwGms8jqy5PMPdI=7PfB&~}d`amqA%B#BeTQDG{mUp_5Png4b(K5PUXsCc;5 zV>o3TeDhDFY@RFp_4VZCb4UoH1YZ9Bz{#`dW}gyJ3TUImTJCr(8P7hBi=dA9vGYl6 zzfx5p4=wPEVuOhe2H7V5M-6*9oO$>@hi5 z;cG4=u}R^%r`%$nSAoM<%P%1Pe0bHDrpZ8h=9-I?oL=RbyhRUePJ-VOj|@5W{0*uvO=CJ~%2}=YuXCg8G0QaDx~}NXOxm*}ps*OW(-kS%Jx*SkYlY z?14fPqbPNoWn{F10TO41F~*}644nk8H-pOvj2~1O2MPl6KtVvBHJB}V`XC^Wm>W7w zV!cCy{l_YPg3VsTukW4=tBf`0A)Dp&t$H3w*`Z42SK_FCgbwMZA<68mP-RP%D~X3) zpUiqkWS%z96O7(fdXn1j-H=Quw1&4&NM=jvJ7i^|!63O?DQzaXTgfJpJC)A>HQyG> zoyK<~w=LX0ja!l_x5;B2F|3Q3NWV9bWp2`e{6JTD18@S6_&i!^`qGTq5Hn#mSByx1 z?c+~NNAQDFlUYM}zQ-bkff-(d`^BvhKIvbX#&BpLjXELZmev5}6(qmP+#JMA&2h!V zO=ROAaif7)-Cl$E%rFJyT0x4ucfg*nQ2hg}Tu$|Sjg^LgTxkf%Ec-sAJ_KYb1dK(v z&nQ*3Pn04Dh%zVhYXg~Na@%x}stOWhPJ@x76gfeP3=kv;5SU1lWdJG@@_FTbR7rld zv3+EMP~&O0D(vrI(5~0TeMOmHYj)b#<{^@?--J}8bK63XByot;dnAcN#Pg0L4iWn| zrn(I0wpHdd!?~^J`6Hd%I`qgtC$lC0`!##YgUReXTuqp^68VqL_c7#A-1i+B19gH2(1oE?A=gzy)(e!t-_ z%;PxIFF&5lRCwz6lvj3vYbl=f*jU_?iu68DB(seHY>B@6-^q{;CV&MG!CWJc{yq+} zX+`?>r;?#O6JZ_&afW=$SKtu&kc%TG!hGDH!NOuhCW235x{E z8N!!8M|i$1R7~V?w>ENb=J!1h;-xi|Nvxo${qmKNM+D>0NmsZ2m7BTs1*{gJjx_u( zV@k~dqh|<+p5bgu1=s1iHf{jZ_%Y;m02NCW6!J|kCPRcc|9b;pHo%ExCiVS0p7$|% zhyBhN6hO#fLO>2v_4me?5s+hwfXrHQ(7>ci_{>)b2_iu#UZQc5$xw69Sp4Z&tfArA zH70Zff(_1JkuJQYN~d>#CwJk7XWicfFCFXpXC<>gGmpI)7~Rg+J(;hPVdh^R$)dH?H;$^fn>9jeOyD8>-;L^&~Bs*%hDNgYLDud+N}y zB{aP?#*`sJ@F?3}Evsm?cwL0bb0PH`?(NtV9=||Q$I)VvC@AOfZ}W)SWGFT!aY7&DyR2n>7MB(nG2WHHd{|;{LV8svM#=DHt{DW&465pm_sK*xs>O(*d0|HkX2GsDY!vGlbFnomZoW&x%XFV4-gvCY5 zHSIOEtxo&zD2Wc&Y)XdJTaSH9j(y91bWNwRZ-bGVtMA$j9+|2%)SCBgmKzw_FY+SJ z!{4I;LmTCQAs`0~0fD?A0#pN#8+}#<>Xx`@%a3C0Y*&PkBS+gaQXl;R?i#+E6n$xR zlcIjY8slKk`^tNB*~iJOy|U$q8I}5sa>I|tZUmfczo!f8UoT)RzxJw9cEq*rCY8`I zqE6Y=BUfB)DEF(Y4KU`_wy2a=o6qB3?GcbXU&XgyB0$?}#L@&fa4Zp8ms zmdtKZ3Xd8q00Ch;gdLTAX#XXYRHc^3_M<{FqzjM#ESbFk-&c(fUp<)jKqOf4&Xc~g z&LZ#M^P7&kRw)=|(CCA+=sI%}H2T2v@<@WnDJ(i3Gef}(0BmP|X|_lXF96JDW*J{) zgBJjBILrmZg%q=a+%bDH48WZF@kj^#{bRVq2PoU?oOkWXCxamv zXS!-5OU8s85$0RI1-d3)Bs-27<%JyOF?acH%!n9DKD7YE8Pip(NO^ytwyA7T5bOrc zJ(G;RD1XNo`aXM3%!<&1&L*>iic&3Q9ZR*#5yt}gJLi*Gj?!SrKWg@aFuw`Y4t^=n z{Ur-c9nL7ut(SEI_nw5#FyA@nkDmtf8BJITfDOGs=V$E+{$2J>(3q~3?rnGhlJ8Ke zPrI>ym;%MczWt(Mm^AnJHf`3rAp`jAUy@m0Fu9iFcXOxp_2#`MEX7OTLp|bQ&fa6! ziHmiW2fVmgR~b*8P62Xpwa(=mFDA1xwdvpvY2n_n_&RpAzhcWdgJ)|pWUpkN=Z_rw39c{O(I& zbScg2^d}K`6c2c&UWZ2Et1f!SIP-G!zAf0q5Jfv-pgaWRp@)DpP*N|cdzPcqY()D( z&w~Qe5N(Ir_ReX+pz*ZQcs#AFZkGb1d!$ysz)}(i0orLnDQrA$6fcV33jQg6|A=?< zKEX&Qz*UaNCI;6nZ7>e?eU9s5y zk0IU{Fe~sIC#sC;{7WZo0-6^n6gZmd1!2=!E6*Al!H0E3aU42_wjS%G6?7T`CsCgd zg4-s(02#3=UT%2h=y=vi-+?&(a&h9Nu-@7Yuay{Du<(>Lq14cvor^rH0RxOAa`@a| z#<5ZSj_?%da21{8E1*pq#UG7GVb@dCcCVF1lin@5$-6@o=m>Huqq6tAU)zO-ufGkp z&$_0dhc%HY?8_?wd>fU*s;&T_S9eN*q{tN@c<(MLZ1I%1>t5euHbMq+97jp+alyt!Qz z=;T%3fHj7+#wRAQ$F!Qi7SoGLDW3dddC83_tWhmG2~NkeHg+{neHrGIDXxY8y|^FG ziX4OOHPD(u0udg45(w{qWjA>fT5(5os}tcKMwQQ-l!7B}#yY*DVQLK<(H3lA-HDFrU%5TNZfj!*k!926n%8sCA1=~2lk?0ZFNcAi#q+aK%bLm)MrG}MZ{DJOK( ztyXMh{0a1GBO20watc}PUlV_$>%I2o6i~2*CX)*EAd1P7QWX_z4JMxg2_x$iLRJue zk=9vDYBbxi`f+L5_t1*h)?Mq&I4LrOhp`@f;=fYBH6?t{BhWol9LYyCGDR}{bnY)UOF54}U`emdwkt06o zns4#Z5rM(NAxN&i;8{>sPOp8!B7#3}$$%L?pbyF$pgs1dy1`oLfNeqix#!$C<}NMf zPc1`GrR}AoowT`sY6;~to=;(aGUQpgBTiu+GOyfG0x4XRxT@x8IO@ljzmNi*(OfO< zv6j2cg1Wid<}GIitXVvYbz1pS@dtdwB8-ZUy}lYg73q`F?YuAJ=$8)P2~L_%zxTxy zb~#YVYUK8^6t>ruKJ(=i78p3NuF<@RgkYDaRTY7*EA-{Bp<}^HMLC~0Y8-qTtJr2? zYg3@im&NBIrMpPE;DGCB{sz*!feN*4hQlF|ejh?3c)R}~U9scs%2kC0NjE8(M_oxv z_@H+P_Df`3qokMczJ+61|IVr{`xE!R@*^&V3S*n2)}^o`4EUn^n<=nSUUr;^Uq6oZ z$2ZG(DUy0dZ9i!)hW@Fb4I7d5T%{zxw^MN0 z_OkU6#8ZRfXi=LieyrI*3psd{Y-V4d-?M!W!UC&W?{|SGNus`T;6a8mR`h6?`*bd(!Gb z{AL9&!Qsco!c|#1pWcl=ms&`l%lXQc{I?vyL1Q)i{&Aw*K@qR#>`&v`YPhur)%47( zad@dO=Z8L|L1?vyrvNes(|PY}aqz0M?xPf_n{4MR5NovnoR%T0J0JEja0jg-+4Lnm zv=@Ca8_7LrQHYUZWjt?DoY#_I^g!r`B~h{}j&;+ci&EGl{%Ypx-I7iqgTVJk}rsfIJheX z<5R1})?XgNUqGbeZ-5s36z$yhl9)9|Z-PL-<@PwJgH-XX-I!H)S95>OFvHbcu9qUO z&`&8lD{nItkWA3;zDi*~U=5a50rjhnbK+Eln$ljPZ=IO)ad;wi9G=X8OC^gy3+-__ zfDhk?vOfIrD&F^NLYQ`5iQhhMGg`j_xfGuhN6A6^8P`#AshYNxgU9d3@lDO+eMWU) z*Xv&(zCBVCKCgfn6N4B{HYH(sns0VmnG zIP2FR!u29xe9=$t;WQ{L^ zMOiOjx;&Qk41jnes^yyz>E5Zp$RkP4Kw7N*7nKTiCc}!zGo52@1 zrm&!p0yibkD}M~f9f{*s*g4<^JgL~gi~R03^~Q=?x6!(BqjO_M<4&f(doG2A zt5Lb<-NR{IHp+PQ&nfJs`2|0_vsxYL|A)IbkE^oy{=k{%UKRyp$6Wz)*F?kJlxr62 zg?kB-FiYDrOZ~Kd`jldtVWDEFk0~->R$4BYR+i?VVqv*pQIe8kSy5u*Qkl8@-e=~y z@LWJY-|y@Dd;R|S-9PS`Idf)tW;t_a=FAzn)^Ok9larTgGfyhMs8f2g#vO2Uv|yWqp7{&s z+27!>Si?33z4X_PUmb$y`Yf8QMC=6JQ7`b3jn3`!0AM8kERWRU*uVb&`N908C63+O zd^=CH#=$ID?w`ie1jcx=cxfY_9mjEz^2oKx{sBmX=X=Jn5!!`6d4Cw(8o|T8;&A*f zrOHlvhZuo7NK&ZGGx!ES1qqWF$C7 zvh%6l4&K5e+Qs3K?`GC2Wcx8jnNic<-Yur-Z{&#N(9*vf#liajb3NwPyKV zJgP61yqWEV(RyH14{u&q)gPD6dfym_$#N~9`PUHGOj9dZUT*VeNBH)BkShN#Ul|o0 z$Kt!^n+or7&1x#-3qk#Kv!BY_qnF%F9YmeG!yym#v|>E%LfT{K6V#Dnv=bMM@p;1N zSR94hXbl2QB@cy6R3=9SgVg&b9c%h~rTQ=WExMNmyU zeg%BRXURt;u;i&neuM{0pBn|itI63KTFGR0&y{UQDFN}UQ2+lL1#jKYh>gQ&MA2x? z%Ii-0L8CXitv~ilOComos3Ldf(b@o<1m(@F-K+2UqNY_)-o=K_P5cJ09^6X&rV0LU z#c%j71h=siUTk`J((bl6w%Y>fts1Q7qLz2jEMdVXB`h9`Ytn7;LXRPDk;VGwlHzcL zQDul(ehcdlEGj^TTjc7jaJC+>d6ySD+cZ0UD6Q)0T@HQ(-v50v89xl?x}_Gp9n=Dh-qL~Rc&40k;j$2LO|sQ5qh z$iP|!wF`6jMj!^!JuOGPYsSra(ZE7&tO0v|w!&(wW*Na1{9uwR5*B__>D>ZM=gzo# ziQ1f&w=8}N_;gJ%=Igxe*|DlUrU(JTjf!B4o@)PY=Tnyi)={?$(k$QH9o(zY<@eR>lBK3Qx_8b z<}2TEf2>Aff*h`Ra-o+re~L+F$LSQ4jz;+uoLCNVKgX2#p9pVR`(i1N@V|`>zUKKQ zox|3jUn&z}lxz^r#Rp+$s%lXj?ZBwhauK^Yjy)U#yF+VM$1xv&%j_kG<-=88;0(-G z%ny7J2Q%Gux_JA;IJVCcTKBT~081Vm72-h-s1Iw{mtXM-Me zYyRhVx*M7f=TpLBV7MrIZD-u!t!p2{GWAcFT^%m^ej3NlTSCiTZOG7&Vz=;tJFq1? zyv`J4te^998>l^$npe3SO0J(#(xN4?tUcDNg}l?wIG6y<<~IXQv*)-KSsLKpveYb# z%iWJ{%giXb`*Gq)u7>|xntA-KU2$w=`070Khst)SfF84a zr;P`f#<7PiC9fUUixPJ>Jc5_Q-$TH|VT)dC5*Iac@H31(9u1@3p}agWhFST<-4Jy{ z%NI3J8x2syk05A#_u8fjReWGpQIZ=Nh5Q~QJw9~l>kSDR%~dGM5wwPdl{O8lFH+&w zIEHKgd*aw_;l-==G)Nw5Sy1=YF8$29l5pK`mVjvtkUeC%un79vZ{d9;@YScjh-1sc zDi=4+{40HCX>E54`ivg5+&@&`P~6kYg2kA=BdfM8`bM_M`7#dA8e2|aP;4K*t2JL6 zt6^O}bzdA-rYA%p;4o%csvnki*TvcWaZryBs$JTUl_$2d3WZO39294R3YWPDRETZ| zG@0-i@go|j(Q4C$T>x1->dHf9UbUaSg^O-(< zGuE$DMh4>L`eVnMOK)3|@fA1WD?)hZ1%qL%D)czyf+lI#xTRgp$NYdCEcrRICxm*d z6?+-)@nal&%u@4;t2ZvY{kQV$$8M1Am9M)mMH%zj5C}Zw&_(Qdc2bBe2k)zpac;3%(Y>}nzbyq(5V)QR@ ztn_Y@vy^NLhmxbSuNceUY(pNC%U|V*(KcU^^n+zsj8>z(gA7S7M$5mdVv|ED62YMo zF3016QjCT}VPvkl4H4aY%XZql~6g5Xd=aHybKR}dU32o4ogI8!D#*pM}4 z$*~O&!81myn8}ZCPekuhl4y(u$yFlAp`vel(I^ib8@&=Cpt?dJR;iN0q4I=7MS_H@ zl7T~EDrYHToMAigRf9DkR7mb@BN;eUGH|G%5?2r$DhLi01nE-c0Efb?e#!V2C3NHE zEEht_<}r|PC!ii-0bq_w4Ty3eVju#mfKpdLsR|$|TGh`51F`mHBU?CBw$&~S9E9m5 zez`rKy=pxB(fIKi{f;r=t@I;5^-dJy?~G?h@cPbtD6F-r3lolU@vK6=WJpJy;lb#! z9yYVdA1lA7B`(|-;6&7iPrWCeg<8m<_r~zaVSGhQnLTZR5~8i;tQ!5X|o4)3G>0Dt;zj9`5w}Jszqx(ng&) z3Eae{dd3iW$d+#c_Vdovzz+MWie2tTh15Qu(n3xWbSRESGYK!*a7G{$v< zH*ApO3^AX-kQ2`yQ~QTfHNX{;Bc{&9V@Ix-(r8xC`dC9=MJ!9z+{4Qkc4W^R=qlbj z7iewOZ~DyVOVaC2V+9-Gt9Yk*P;x>~o)0*e<%u@)d1?S3SLQ3si8zc`Vml~FjR^83aF8GpdHyA`?vQO{TIfwhrG4Db7gI`!z;Es!^n4V za3Y>3gkxh>0`?b1-IIjdMs=QeM_WvNBOc2{t;X2&;nN=&jk7gsG5NxS;c&h1us@&L zK6KkF=B6-&W|Dl`2(2KVt+6!OSVN5eiEeu%GNs$@D=tG3-cz$&_~EdASId&_qR(6L z><`BGEQ`k;I&_x;0vkOe1rsgr#AElY@e@H1zNO}pe(6vRUUtMbv+0SUMz34x&#$Y! zNxZQp9=c7I+4C@c6>h(s&+tlsMKXB7UlX98{p#QZ)|m&cjfawf8m(D8+b02?5^5+R z2^gOx@C8UZf4$_5UOp{9I-@RxZ<)srb{fFa8#*P=t{#Y;`YlMEt%6NSKGZoJg3QHr z@vydIY$!_o6kdqTTh(Xrw>Pp7)$3(XH!R4Jk++^kg7nY{B^V;eJZA=LVq+644`uR> z2L0IHq?aPii(-K{?KCEJ$@ZAgRlBQ7 zwCZMk-- zcs>KhR=maRuj5&PwaZg|4#`qh$>0RGg;c=iI4fg076MpKzeVP0)K z>tp1DS8LieLo`VRUwcBl+C*_-5g(=cwOju-PPowPiIeshL+aw$=bqT}I*v}iQiDn+ zUG)j)pTOJAjHcT?q0(lcmtJ03>#aNP?`GwGtwy6Oz5f^5)w78PSS>$zDIS_%##_&^ zU~wIY2w;aF+l+W6p5A zZZYEJ;mpsIj6xgSMzXtl(o%4pWkz~RQLY(AgvOFmOLKfM2ay{T<{Cx*u|)zl_hrV@ z82uV zPy)N%m5_;r*XKkGyd!r&ez5YL!3o$BHky}Ab-HDGrAenRg@MxqQXg9$`94-C<>k7Q z)eb;!KL`OyYL$grB%TMAj)ZO&2qHBi&;#!|MIfl>WlRP9;1BKOlt9vBqZy*{2+D1p zz}^jNyZ1*33=r6~CnxpLJOZC+7vL+|=LwP86E$lMDgNE0S`OxhO&Wcn->*ZO4WOq; z#pD|k@B$>Riwgh#m}af+Q*=*00TZ*AM9w_*bBOqKU;@Oz>l1Mz3J^43TOUYZk2Q&n2l^;B=l4CB z0EONX&a3|z1f5`doNXCUdXpH~v!WQE@fHs^_m$YKQeU|uAQ0lqO^+n7Np5$VsZe=E z^?l9Q;A>oo;e6f60K^{^H3}P9`IDN<3L9DK%hx}ez@BfCNlo*a2x=*NAP&O$^KfW| zZ}8)}C?pwK%7RJ6!2#Gwc?}plU^Sq$fa(lQVmAfw?0ifHmYjTSL6b?;1{;dKRzSE9 zaA`o?(e73Z+WfWX3_f@kSMKHVGe|3oa_O-S+&;jvxu8iZ13m?hX&YL?>#GO*2gX9` z(6=aCaNZlHAdJ$z(13;oxLf#!{z*8pZYFr*nFQEfJ#YxTMx&3V#YHzgI%|6{pLaNc zr4ud^3_R3iORu?fC>saQgC*7$S{{^}Z+QUWeg zpR==aNSQX36#X40@#RAS$EM*|JnRL|GODlNIWn(UNDROOK zQt&Az1qU&y+j-fK;PYCsi!sTf2VF32T2s+CLoFeR4ddBqiO_twfX@q%{b7B{Fm{uk zx8WCmUi>FL33e44U+whrjlTrxQ{U<7t=A3h?jsidgpO>1z<;_XfnB{u;$t|!3yHJk zW}$nzOXyy12;K5}>4d{J2o>#4Cg91PZSDnc-m>C^pvH^eMSSKZSX|^}nRk&s;m;kO z;-gauth?LO&A0Fpm|bj8n6c_JYHKk5r>d@2C36`^{PrxSBL@B%be`(2DK({)rL8J3w=#UHmEln9${UfAQ~l(B8^d6Gv!xVyztNU z3h?`NL+`;ST&wUCnh1Wd-BOEBjyl)a5YIKfK5DL|k;R_o`&g>~D;D2pq{&Py85Z&A zD`bY>FeOj`PYXOBXdsmhfq;`EvF-Kl)dbewYFV`M@N(M$++V%Rn#iIMZ`x~Dd;0y` zWn;W?@baPquqd_fT@8F`?@FV!;h@&Wlgb+je`2Mv{|ATM;ML``m6u%Pa7c2wA%Vgj z_e{iX1qC}SiQN&T<*srmei#mDX%Lm`0-kb5i$sXw(yg>#OOh_!v4e+PRdI`N?%hILrF=0s?IVSizTDB-hL76@wA{&qLw)qP7Ky-D z7?F7%ye+XcdvNE&%hghcOL{yUx@yU0Sb{=ORcFF?| z6<)m>&%>-Sf>*f`gToXZnMq$ki&(U^;o%W5mvT)jjZvRA9{1N6&b&+C#Os)ITy)(~ z&l|57_v!0~{&L;W%zoEPc@IMUG*rE6Fw~E7pxTrJ?W7#2XXQW>CDppJSHdV(jTA!;XeNg=DwFV)=#b^z1dY;hYUg#3LQmlXiu& zLP4IH?3%O2`u}O~xqaAm+R6X8<~!ImRbYP@w1e4sZW~Up%7CQ?gw{XsLmHc)5+f2} zo2zD%d$p{>ql`pcZ&};XmAFe{ufcP1=zzuo9X`e7;80vHWjv+>z7T@sMqY3?%@^3yhrO?QOVHEr zNo;ET>wY}&9oobwRPKk|IVBN_sEsX=Awcag2L_geab;?(!$ervw+5{?O#zmOmQYF= z@jxOO>#zGzO?LX_&q@M9>OO3!e5%5=AHoXcpMJQjQ2I7@JL?1)^_RN2n2eksB;s1P zd}-l-5s{|BhEfW8ZegS~*jzqp_3V%Mm9SClW3Eiqqm=3>8xGaviuE=>=?vp_;F)1O z{_#X?N;InI-l)3JpvF~K#T~#mHNaK%k-4x`rPEoH$d|4W`I0%Z(H>`~B|`CETlBGF zcu-1R_(UQuJ1+Xzz2@_`@E!d|;v~L$i)?MzW%z5+A)$>(`bMD)AoIFekWnBhTm-aR zO8+ofKmK5LB3m0EITfw4AE7lf4Z&x$;OtWkH@m1A>OK~kI_&DRpi3JX%10rq`0}NR zu=I@LspEh3A&>}P8N-6naH_rVou>9`%0fRDGzOnyqI7v8v*5ani+vjQlbi6|kBu>{ zR;1SmzB{O=Oj* zN7GV^-p07FRczUShH%%#qL5YF>g(0ms__RlU-a3S$l{ukmp4z&iF^}Z&}|g+?4PY%mVNEBfvt|bk&WN$SFy@ppF8ojk~LeQxH z!86!=+lU^SDBs45VsRXUEpxIV{-w)$tEnO+H{U9XwTV7-ILVay9E$You%`IYP#wWV{-bz=7&*O^xN((8qa7CRI1 z%CFlevIt*nlNNjq<^$_@S9c}ChG-Lly)FVy1RwBGpCz&lO{gxoQElR7NOY~6ZW(2^ zieE)+(p#gnHu01_iEL35Drl;^QEmGokxkI@gwc1-e`+{Nl%p?KohVPZccM$%j80Uw z-RMNCx4UMJ^PkF@V~~b4Bug_yhMV-jXU=+x=zWQ7vZq_YWPjolD`oKwlk{%2Km>(& zY)f^xYf%1%J0Lk=++uvZGNKD^WcQDNExWbhVmnPtZ%d zongO`ta&*1Tul@b)G9Ew@MK@HYRbUTH4 z`2SGA@*V%RfFkm2BKxyR*+h?v7{Sbfl?LBvg*gVRukF$Xeh$x4l(_YKdH|z(7k6Bd zT;v)rV8rr$mlGQ)vQorco{D(H5FSq*1=A|>%kKK!4ncFRcFwD-DU6(I28Xt{VI+EhwPx&X9E05*b2Yan-Ig~LpyD+wbtYb zINS&dUTx|F)JP}rsGRBSqnTj2e$wY<*9;K$0ZA;-$FgPjVSQ!^wvqHzKBY z@I)4n%&6!^}{nywbV;C{t~%lV0Ujldq9bg7(NPiGJUk# z&(wnOnz_+4Q4v^L?*NR}s_@30To=l-8-?wlNB7#4XB5Pj-%JFVD&zKWNA?nr{|mc3%%*d!JM<1TJ-R>?$f)FWQ+ z)&grs%Hc*Hd$*0X#2K&>G^<>WQkP?`a`bJ;M1=JyBDp+kxfxHsI1{Vw&4W&%h(gU@&`-rkw%e!o#R7Jb8b>JlNo)!4}Q%ToK0FKyhGF5=&ztCFSnrIFIzD znn-g2_2syidm;M~xX$fX8uC(U1R0)v4@!jPst8hp5n3*Cs~t$SZ$c&LF4|AUn6mIg z6VL^C?GrTE8z28{;Zt!$1l84sBci4>f@oqiEeB5z)Wzbwt;DM}ED(IJeEQUT&vwu% z4IeKVZ)+U3+7(v!Y*OQ}3)oGQX-@bzg&96dv);qY8wYjJmb#*qJl!Z-2d(Cak!18U z6z1|3Cyh4w3e92a6LMUX>htg%1r^NrJi}*vo?F;zSD5-dR~U^R{^)&?4ysLDfH*{nzQsO`^61gXwGuSsa-l=BG~>ysHxrn3V(_>)E0W z;3=5q*Cz&(9fA4>p(BCX5dmY;>KW+R`M-4GM_z&^uF?d9mL-|C8>1Iq+7ZHkode!) zsE8TwJ}b+2rgxvSQy_WpKVGg+BE$6VbN=#a+i;YC+e^>%4s`%D z@W|GN4Um*Q4_XG|Kv*T;;njxZIcegNVM1wwZ^DB$0X*>E3@2iF>xZHwJ#$T@g#(z> z!#mT%0xgWI2zuD{Ia1F~y-sa>Q(!L(YsvlQHxQAso-3#26LvuB6mMd?GIA_1$_sTo z*GDZMztbS13Jm7s^Gt>LwU32$*8^MD!i)po_>Bb>6R>6id@YH+ z>?-UPcw7bHC5NDOs7jJ;ZO>Y8@y0;>&wkyMiti#*1P46-awWCwmw_$|g~oS}Uu+8Q zy2KQ55_f)d!Cmv)rPqg>OR%PsELs&M(W|sd)3cG; zR>zN{A=H;&rq{gZzuE9fddXU8{dMA9jE&~mzmI0tf{lZrK(TaH5{w9-zaW76%??<9 z#U;MKhk(%(zA}*Y3_W2krMir^S3LA~5}U@fibHBLgc48CYMP7{RF6@KCxPnDf;JyE zUE?H)k{7;<>D02S^6>JaRqXw15#S>60T7Ng#-Z^t<%G3K7|gkRW~9d2EU%pizAfJY z@4mOvRGUhlr0dnXa12bxU;2B!UUbvhj{M|NEUL7zjlWH@e6NPX->lY@v-zx$3};e6_LbW9mhedU_Ht)M=lqW_Gr5J{T)FdE`g zeNZ1vN_OOs23QDqyQQ|^3x4p^c3_11yckr)=G9;58zat!ctWkyR?3|vSchW!odZq_ zFa4lN1!SMvqo0{Nxx4Pz{c}sCdJxsyfz8&PyMFG>7wt&Gj$k2Q131n?q`41XgLFRn zL=a^Bm(kv&H|&X_PsqLthU^v>-CM(uY~b&pCz%b)XQFkgRD(_3Ycoyw(bk6%256C#mP_bC7)vm zgkO5kT;sSGZ?zT9`9hz#@N^h|a1T{=IX?}`Xw-58{5jGFLE8_i{wtRi>Q7d!~OVwkpiv%awUY^Yw+?yNum9sHt|rLb;~KGWGN zOs{?ObSr)TiL)(vz>hJQ%^q8GItbqt`X!b~;kB!pqR=SEP1(KsCapQxW&s}&?H`Vo+)1WLK&|YFWR33%YfB?8nOA5z37smuQ!Q} zHj%kTEQS7DIUjZ)iH(L4Hn&Vm7Bz`hve=Yqo^BL2`=U8sc=ggI@n)|#DrQ@;te9S0 zJD3F1!Ap51;0x4n{4iV*{MoOPu)SEAZ`^a<@|NK!R}S;i@xiaLcS2f><m7d!=!Uxnupo)ahY&lu2Xt!zOB%|{ z7vi+Lo44Gcz`OAW5${(o6nA2;F)V`zo+p8+mT%lR6jRgQ-mn!#x0c$A83?!-*hKSh zZIwKuy}o*&L6pwNbsWiBiWIM87IinP64UNaX3Jq`lKVfJ%<{qdrafwBZA0+R>sgaf z0okRHe+!C7u1hg_axyHTmh#hpzk-szm<*#Jc{~E}AzUk+@OUz-)#?g)%9Lc*1`hEs z978pbe)$?mgYq`-t2a!cq5ewv!D-2C4Z{EPug2kw!o|D5dr<-#pG;<*-4dXiwk6^? z@cHaI1nZwph6OP!eU?0z%uZ_2C2JeX0NzZ-8UrT)S%i%*B$HHH zChnM#%u2ASP|NF30c&~b%w$~cX2js#^N^4a+28$z?p!vpus=|?J9cB zO=i9pcwd>Hj9UeF=O(is@D;Xs$t<2ehtRQBl;3C@(}&Bp*>DkUMm0PCxEE_5WUd$s zDy@WfUzE&N(DyG+hER8X7{h-BRRndCK6chl+^{5>EqVx%0`pTSaZ@d5Fw9-T?_QXK zTb2J@PG-MT8GgIkw10r?)3$bYj|SoV-PpMo%tw9i#csgF>Hq?LR7?S! zty%KUALjO8Z#G!;^|G^1G=$Xn*xAzz^?OfCJDx4g6B_{sT7dY)-_CXczSqjmau5&` zU}r@>Kz!TU&c*}Aw6WvDc72+h((KLyL%eZJ?Tw=KvYbbL6RN!MhW8WjzvwC<;*LZC zyK2>ca3@L@!js$CVHD{6dHyIIgUPW9j;^hd04_Os+K%*|6zJvQJ6zomRh1pn@=4b= z;v(Luy`9~~HjDoNhEtWLu1J9#`CbP*i;Jwg&@kFH$jmn&8DEP>qx4*j7{h0EwBzC? zM)F^9%!K{He|NIOswPtXqqCiL_BPr}e_{2WPWp|H?+Ml?3>xO8cUTb{xY*%k)gS-v zn_xXKz{^XI-Ix>3H@xZ#BOz}_;6pnt`lq2NR$H})DvSGfai2&#yX5LDymOQtx3U%% z@e(-3lcRGNJG-TG;iZP8JbdqvbwTR_jAJn3LOv5zk7G}B{0gwoVteJ8Zgy7ViH%k2!pErB#rCtad4OjC zqf9U~+Ai;Z+-tyMz;4iqI|Mk0xLI``abb(w=*JeIt%MJ|$;>M++G;Cw{_ zwZkI5G11PRhtk!9fH=rke(lmrykC++JO{W1Pf^{JY-d+}7yVV=@_gd?aLA!fyPe%@ zSv2Q}zOZ#f2mRGI?rXt|-}Yjjq8cIdt#}%2N}3(k*tHWc^QmxM<+o+n+3#BZT$A?+ zv3jhX`BJ&nL}_(vB6`TaL{w+m**Oh`tQcp9jd}&|=kMHQ2lsWgtvhFzlNqOo;o`CJ z7+b`5iEqa6(0lC-e37TZhXyIQ&(6MZ)g}K4zKu9sOI>WoYaHwEx3lRK-{8w8)~WdN zosZaA8RV&`Np_av`jq+!gyoA(m`LXP;EZwflXg53TFY;KiYm8+{|V?mORG-V^=Ui% zoYja^fHK7q&w|amacw%0D&Y?U4=vRKz50WqjWL6ir~IdB%9!jpP2VBh524-o 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μPvlZNo?8OY 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⪙#)Jainy1Z-!fDRpE6jKhic|!1MvP@ck4Zyi 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

    WqdM*fx zuR?ecuTX0bMoRPxwVszE;>2|Ht7W}tW~X%Xde;0hlF1e_$(3As>-tu_5Q%IDO>JO> z>g-NRYGCc)0f5}k1pu^ZXl1wk;SH^GAJSNjBvW&!@SwNk*hiI>D!uG-KK~7S@3`BXThWU z*|LRo7Z&S8D{E+}RbRjP9+^$pMrr=EmFqi}Xcd(8{v4acNY)^NAfuJkR%k1qwY6Ew zzEC2~d3oo*}(wrqY|>i{WjjX=m;h`!wy&^tT&jI~6FzBs9bDhj6K zpTcgs)Yl+-n@n(+nbbXN3CP@d@3dp$ey7i7n8`T>} z&W*v=7Cyd03me9YkL!&_S*x22nNCPk>s?1%yOqYXXz3X1!jkM<3Vp}grX(7tzx9sw zie$vS++cydYaLe-P1Fy(Yu#UsIqQs^X&uWH*7;TOYBHOP8iZReyD2=o&^kmaGRA6- zv_hDDOT|*i%NLbSD9WG_K3$co8Wz23GXoslp4w?CZk<@)Q6F1#TbF&$Ff%oeO73z` zD(vwCBx%`a5yaE<_oJ*G;at{eD)&?V`wF=OdHIYx5JJx_#+Xv+mBrT4((QF({pv;o zwHRYRz`Lzd;1X+hDPg@R@cj~N|A$yEx3@f2k8tB>94+$+MNvMX&;zYPrWh+{M%9h6 za%L1)#Y~}_G1l7>s8fD>tFqksj$}&QI62k|Cv75;manijhnh5v8>l(y$_ncm^tnRH zG-s=TWl*NRl(*9Qf|Qsj2J*=&D^r(7r|MAi^;Vp&m*Mz`JD2Vl2Z+uV<@Dom*0COr zHfD<#EqWf)w>$x*?!k>QSgiEwTI<7p2(E7XADMTz*Og2SV;-)@!HmQ4VPk#Zgu++}2ql%~ePeA89%05ez_u}T{u^subH<8g@e^8i0>$Xs1F{Y9)oTxM1^&j(TBYa^ z1%YL~m{hviT2U%<^HHg(y->Fc>(>M!JD)1v({qGQSeH&2KC!#eNl?~LQE5c z=KqyqR+N!sdHP#SO`4HCc$w-$N58dp#ul<1u#S+f8X0*9tm~xAOJ(Y9K8SkJI3BlK zC(xK3N_`sl9bhnr=6`2BDWz``GurHfXDjL9hj3Wq&^~?G%IWm~4qLmKnR3e#w`!+1 zj#wL`?~9J08V)_a5VOC>9>EO2rB);1L`=72!Bm$Nvsn~);i&aAb21M3k5KA-%=)yH zVdShhW<3sA;ld!{$E|T}zm~dbDlZJ8Ll^{ByROn_CjicmDafQo0_oUEYX>Q1m5_L9 zdkW((+$^T`@G0v+DbL91lY^YtWS*m6$g%zj`OHjSX?YQH4u~9zF0zJU?M*i^&9KME zMJtcqw62y4S9+vjU?4V`ZJaq+jxM*XC&6Md-2r9V<~EyYz5i|N7L$~-leQD2<@&w` zGizaoeZAK0Z~BfEkBL0jPJQlJe>C0Z)%Bjm*j4!Tu)nPuo=B(vZ4EI=30uX? z?)k@BgCTH;^#oRL{KOORs{o}A4z^j#?^@?b#cOHaUF%3GYpWPx|9jTOK>2Iw^1s%% zq+*duTmG{SQ6kru-f7tuzkO*LSyqPDmu`PW&)>K5$D;S|1KZ;gg`3|Crh;XD3e(5f zS49aWZpWk&v^&@#gM|*#LnY;`$y&BmFQ$WXiTu12n2^$+^-{hzW3GxTD@+*}tvmyO zyjKM=2xhW2ulpz}Ao0GBg7@C9sJ^dqLP~-t9NYZ?e#$E>af+XENXju1hxjX;W56Jh zX`96m+!tS#!ncb$DOHso_~G5EO0JY_r2SP*8HpR-;Ofc?2sTz%Mj-IFC~@W-9mb{h z!++2oi?Z01r}vSS`X(vYsJFtZ9G6m#)BPGsa3$!!fuf*jMHzynyrC$sVmf7x&gd%N)vC37DME&tgs4EamL;v{adfIhBr(Kud5c zjqw0a$6U$)=FYo$b-zW_FGKOCuLG24{}0ESbX%wVK;=mmRt>^pL@O}@%>RpX^lex9^TnoNUwUzcajtZN9`=uvY}GdEM=`_vtXk^jg^&B8psVW zNa*z@$~3H1P7|dbK;m8#B|y5phMY~64p_56O_e}kn5j(_W{7NUQ$=~!V?LT6fbK%v z{=M8DL(?KHho?mt#-~ME98b%on@yDD3=&^{iLfhh=m1Rm0sqUT`}=X{^`cJKHZe6P!WHvn^J{0F`~QD z6EC+Z-IZ#1nz^iJJcoRk%RTnI(%+jo{0`}(aE{9heID5}mpM9l87=a&)X@j`Rl1|y zG}_Ql`AaJNicCyiToVq?4fDipqz z@&a1?LIcBt`ly$bCn4NbP>L7K4GiHfa3t|gp>G+W%$A^IyLP;?!YkAa{CMP5U`!lJ zmN7~#@*N1ooT0ZLsI>AGrB<4YE&~LM?W$hyEg*X%6;rYNZDnuSrZPlRm|HZ})fB70 zJVxp1?P(>=)5^;eum^z-izX_XbbCMfO;SSfX3%7k0PGQyl=ciz`O^&qsqu8vnqHc$ z5H|gDNqu8Q?^swdqB`BdZYK1noJk8*HobS6r!ohr&83{WeBjM zy^H|U&1tzYw8YoiPWbzK?E__rlmM^tY`&{aSEfsF-2A8oHZy0;d%8m68Ng?!6*Cm( zh8%*y4*Kw$=lv*qhGH%2*m?Vx(E7hWLwSo=ob`#K(#)AkOVj~@sL_yLs>zf$Q{mpX zm{~$z?EWv<&r!3KEGbKLOP}$f0)zeuKk<{5T7)b6q+%mWoukO6*~wp*Qm{|Bp&9N~ z;>FxB#qMSdd@py2iGRcRei~0LG4XHM-e-pTy-IET8@Bfu&(o{a$iHEGpPBEcjdPW@ zK%AH6D!saR-VHqV_fudj6U+gR$$rEBegRMQpi7Va{ctlY3pY6P6kB5t&JBe*Ic|lO zXO@`kw}{kao|>)in5WDz;We+xe5D!N|ML}_8nZ%dhEPS6O@X;oFLwcbJYNZJoNC+x zLTyI#JkxVG2(^pUaFI&6^ObZUo@EPgCZy5c1xgHVRs$9)bKu?Q%t9r>^nW=!i*sq{ zBBk&DzG@HuC)}X+2Jt8G9Gdm9(iD#sTRz5Fm`p!?3@it<-ziEN%XSlYqz_Y^Tg15pDJ~5`mFj?nTe@%ELJ*Uu!9yW%xK}P#Y#;Wd!#jsmF5z9 zeqyomY`JR}dybE#n$b#U_Sd(f6($9AB^u`frt0gZSe|>#BeR40dnFDJ6gp0!-ssJM7!VBEG%H5oh9J{p6#lsLUkq!RK3s;QAW^@xOp&~C z*bQ5wtfUWDDF;ylX`%YaIOT8H^VN}ox9WR5k&yTs9ZyhdFhgj}o_D<8KW$Cb^ww)} z>`FjrTUwc8-jJ@h>4)0z!RZ}b9^#=+$Oxf1lSt9m@d zf3J7^T=~Q#7nRr@U@kaBSB+0nR$qzIqlf{;H5X}*eQ4?NKw2G_TH%+!d5_`P-^{^QUeg!>#GuKs3jG>W3zzZ zHjTBlr)@_QqDKzJ`GpinY(=@&Oqpdph`az=>Q-j+x?V4g6 zCS_o17%@BNJzFSxp3bt`QU3cFRH2a-Hr4ilNy^*%Kg?8~6uVyxW6gA%9mbS*PPcJI z{DSEi0-zP{{&)u&I|Y3!ln#jU`X@7Ojd3}+SVCxnv9Mp4XWQB{c3q!v8`uB@Ho$1g z4!7-+;^3B^-F1@Z*d!0|mfsFI44clgWlEW%Bsn8&iWCRVl(=N_t09cLMqrR0e}G_Z zETV|{D3`Zg%4e-fXX}c{&eM7sKDlO^$Ds(l5>c-h%vR>~I zXM?FQZ1l=&Z2UxdVU3NQD2LbB_z9`S+xQ9DFP2It>U-6I6*V>rq?kyuZV4X-FxsE4)xlWYMGm`7BxAjszDj}gJgTw*-F1cg$ zkJj7%G?zJYaU%dZlT3>@+Bm24z(y{AY4vr_;k zS%!z7VcTtC+;K|@Ci-_fvf;GGbBNTZJv(d)z|~#J5ky5h(EG%LVzAZeshNIA+^gBfEsKVH7%~ESWseXUA<%W9l-G z+g`=JEI8ZN-Gs9i;-foh zavf&Ny}bZSmoC}XmXlXz)}PZeVkpdQcfqr>tvMFv@?|VczUZue^os2^Gv>4ZC)-P~ z7;nF3)6C!wH~ZOkUy|mp)0-FCirF=L_orB-PYS8hB zzj3d&$+7cA`ymfgz#RGWG736p??(3|JIweR9mzG@gUkNe)k2TS${@|5HqX0L*kYT7fU*rQ?%{;FxOEm{)!QqixZ2ip%x2Od!Xm}F!q8h{Zn zzK9Pt01+2^ZRE!t6Zw_u*hk<8fa6#)*R|Uo*!*5@P%+VNm>6}}wS$!yNAJ|Ncf~wy zt7|_gWx}?{3)Z@n-_UN+ch$q(i>B6=TT-?q@S@wm-T^ntq6YZ+?b3Q}0sBqc+gq{K z>)*)!eA&SQWwdOJ^+TBM<^Gu_hKeqAE(r|d7Gfk98%e?ri) zg}o1gPg~emB53fm{mpW%#!$VMXf=zqdaa@c%?v!*&bF3?Og4*pH~*3-+4j#-B`=U%>d2XnQa0 zir^-8Upm`^m#J{fSBpGjF6fDBIjq`S2(W5)J-weD7RUI~HKMV7_>e1XCGMuDl@I!2 zT;V56$3-9Xvp1@+!F&Bn=Fog#e+C!|~> z^SxK>Z+J3s;|hNnjP$t!?cYlgAR5>aA2!JDt|UdzrGURGyY<^c?E@t&ZSObjpMjll z=}r4-bMcAQ^$2_2Djx8liPsC9^wS7?b1~7YXvf?3 z6fS}VyZ;WFHPRl!D&dNA9UBlWhtj4|z-G5;_;|aMUKuU&KNxKX_j4!dqwT|3d2Nh+ zGK+sY#(o~o3&y=;2NybL*}qjA)5fuO2gZ~!*4_|P2Z#?L|8buGuVjQeUcGD3@8j(I zAYzm9t~~|C@Uxz%v}HU%7&pxE_KAoMo?xG1#tRcwALn*ZST(=;R3prO4LU=2!|WfK zajwjtVjl?V=)x3is~Bqho_#)m=gar(&$Ai-_dWY_$n5q$_HH(P%7Q#PD}vyuJT^uI zJ4A3-1YM``yiY`MMg%oK;EAI}uw4ZIh@i`Ko);y8(;^6(!4pT#z%h_RI*TPPp9w^i zN8M*4a)1`kv=68eyT9ZZ1$_efAI1Z`Gt=II5uUAQVLFoNy;<0Hg_O#I1iHn7EPCog zw3SWMKD3W9haZZeehchQw0-|W`+H`7%x^hrtHj&Oq@}Y_1?L(IGRYE-Ae{QLAdNm{ zK`tF-K@9oNv3D(pBAIfMO2H$Zo^`4~t9n4$mq#L&e#4Ww zFcR(M(RY#dZc@=Ls`?RTG>v+Ggw$|agn*q}M?M0Q&ZnS7h~Bt{%6@o?TZ; zJI$Xx%qgc<)5N|0&ze(mJRhe$A7?xtXFVUeo{t|qA3u6N&UrraJRj#h9~V3y7d;>O zo{vkOkISBqE1r+5;zPPBdMZVqVLk3>Izw&|@MoKtv%*df>^QL0v*M*ESG@G(ikBXE ziR5;IelT8ojPSM*Cj2PUvy8CV2oulIKK5*MPGsLZCy0{cUzgxWT&WlCwr{9p90}~Y z4SeX(FYUJvEP2l=ElXgqcHJ_ih7kXL=*PEQR`x`|Jf+kTvlWX7PsfN3Ez&ZP7se}>@*R#*t zy*%$k0C0Wc6}!z`k{_!tzGm<02N^=T)MQH%3n$K-7EJMflny&dfAyAqu!Ow$>g{c& zI&|(&`=ZiV)L-@}R?m6I{(`6XxM=aIaTMF1VXs*1%u+n)oZY$EY0ox1==k<{`|oAyqP~~yJcK`in2mg8}x$fIv#Eu<*-wtn9`u6*Fl}mdck<^ZO0rNGh4a!iy1e$w* z9_^(btSq`=%uud=(_h``nIU!^3p{7U!#59x>D^?nsJjpsuOQn)Vi&<4kNQ;xarw^Tv_*1kA;HyS?5CeS+o;eJ)U+)ljYN zX`qrjhBiH^7M5sIWKet~wM$7flYVWahL%JV$lh2D<2M;J%x*H}{|4vIY9OUIR)>1Z zFqL#xCh^xDMvqvT7W$|rY8y`{o^a>Vp3{ML+S62h)l=~?joWE>Gqt;?;KP5=@rQ8F zeMCw=Ea3Ccmg-HD6t|5DQ4FU0^SAlvecGsV+0702r!8ezLG0>eMxPeDRn7`xFQ~xn z(Re`hd%_LhdQeqkmWF0`R=LZyt({fQ`6@MD;Kqrtql?JB)J5dh>dH+UtnaG+E+yp& zjFZ|;9gCvD-Bm7I@Cd`2c6#bLb(fT5R05$EOesay>h$dMY6lRpGoM$RN)@wIT9dn{ z8emR5VlaIt_f+>w;pfHQ2li6GH%4FXuEIut;0U{`aF$o;@Lw}W<49~e(_f=Xebrdh zjqj@lfjhCMuljo#W3+4nz1&6ksVN<=7gcXh^q~v=RBKhk9>_bK6-OOerqW*>z!d4Z zhpEW^s!K{d!XC3U+S6aHDJ6@(E`JfFa?cCyO8SdxTd~7d1mWd9x{SgQ9%39J>~TMU zJ;Wr^mY38EQUu(0u}kOH0qQGKM66&1IbT-0NGTV%c&48DvKn2b92vo+w$k-6L(~Oe zx9CMf)yY6dyBQD2rcZxM&4b4G)v|2sQkjr!YCclED@9%uKkYk8{ZlThv2o#{a$r+|Llag=~9)}C;fXvV!niHntVdj*O zgLF<*hnL$y5~R4YC~Bh0y##(gky(n>A!*WBvffSb4z1#rro0p41Nm38hSkGFmKBkOlKmd4WuWq=4Qq*lfaE={(;)e zBt^rK7h80&LA@w)x;j%TJSbjqn$JMT;oG8ATf<*|K zr=FDxj3!(WY837#Nf9budUI&@0=0*f3v~}z<0}ya3ZhC2F@%`QbZLimluirP>Sih9 zG9Rygc#(PuPq_N#Xtg1Gu|2ayth#3WdR-#d+lj1Iwp9?{$~{C z%bU+)Hsvf+hfA?ncsYIba@ERC)f7@kNC%9>nX&2^lR4$Mfm-gaP(x89XeHV&x*{f@ zvrd@`P&sb%Pb<;;D51MU{CVX5D%ByE(=5PBMpOMbb*~f$@l*!heOId)Wh^xLbGicF z2iB-eJ!b40mA&Q6U!%@)lqwM$g$ywsI#F*zV0<=cWh=c9uWl+Q-(zC(Jyn3V@IJs^ zMyn;LtI=+9f(qODET-v~6VxiEGF=dFwP}={2>o~4I<=^I=@9Dk=Y&$th+rNsRf~WX zb^I%hTCG=GlrthF)tCH3sv(a*C10h8^=fcABT`=M(gmzXY3tRrGUlwrAE45bsCIau zlU4B}bn-JZ9z*!!pZ>uHbuxPb`|Wc~8wAXgATRCOs8%ocCvQW&gF0+fZ`Ukq>B{7e zoBd9GY&$b33v`s}Aft`ikE|Y`Z%9%X0%_jiD3r+$D)e<4(8!ccINCC=3V7+aS-sC# z$o-R5SO2x+(eYSS#sv2^+mE0+J%E)J-6WP>ei~2_0@+IMs_TiHE?kuAd zwX3OgVvG9n1Ah#lC0hYg*?Qhq^$*U`Mt3?=_3f%1IJE9|^(~`9M>@jNGU(EFbriN1 z$_MHrcc^Oi8&UUf)xHlT zPJbZYXk*_4s+ZBS2|ZYw3HTV7sWvJ}%VKFymP9l3)0yflZzB#%68h`M)Q`+YoT)R- zK8Zn?PpS<|(y~Naud-IG~0g~m~MhxAiw6Ku?Dr_?!2n2Y23MLFuL zQVIt#Ch}Vi`PEOWQ<*3X&;R1I`W*~rg`H71GgKIm3*b+oR=H{`lzcZ={Xj~D=R(HL z^7%pS>?LIzvGM2C5LkTCqc5m^JYx)WXX)3ksDGPrXkNOmu8}?F|2b^~)<`5p7pQG* zFgjo2Aj|Ly49cPZxoX^`#IJ{i`(bEw&n&0qX#&vX()piNCL5`H|Dq0HfWmkPRNrdR_({~ZkQe6WmF@Yhk~7bi(qYV~ zU?w@LJNlV3vw=%%eFXn^6dX^m3?Us+3$H4(+FFIi4}$U2H;a$6M$L```0a^GV0g zhGe^jMtaH*rT#{5!8xYSjq z_?JK(f7u`ZOwsYr)JOI&?IbjXbsX;X{E=|h8k4h7N{xq4M!Z}+r!LfLgUm5#saAPK+*5$-^mKhSYh ziu^@jq4x$kMuUxbX|yAN{u$(G0ETJp*BpO)lAd`TNd+|G_0pv2Zy+g+65jwQ85MUA zb~vnAJ4(+#MovWMQsy{Euw!4eu~Gt9tGz zN0pLjfv${kz*m=%o3XLSJC2erj~eT+Nm$h3gJG#^=~%}NPruiUb2#J&N1di08duVC z02RK=`y-7n?T=#u+ABUoO(&F2LDw)8OVwWsb4cvJbKY}21A9D<0BF;sPIQEpq{)*p zec`a*7zS8)4M11}k%k$WJrkSB)^b zP~;~r75UjlnDm*5-{bL)CL@|&D0r<#t(f2V8?Q3l>WWyt8IHpkB#g3oN>HjRF_NQ#qK-sN{1|~|U2}^*g(rMEY z$Gk^1oR&j z9)0?&V;&{MIo>em=fqI|FC2BL&T2;4=-Q^Pfmi-7W8pF85|i+IN%Dea!9_hbSJ zfw)`Yc#57`i|^aw`-OFmJa)kJ|IX2z2ChdW&xnjlLe0l=W z7RT>W@voxp)~yxP&Cye~vAW5H2cPU`zD6Xe zNEGY18xi;|l@iIfU=4;yWP| z72!9Gx4+>qB3VXc(-D*krzJ-LeA~XqcdGbK&BAwqj&uNT+#OMK&oQiE_MP(cnW1MK zXN8iAMJMlMqxn1|Qt2cj(SM5^+bKj27?IjJ_`z*L-TKtvG%||+7C&in1{rYUl#7fO zXYrk{;~PJSxho1h`vXd68j;RFB681&Ja-O}lzY6G>1*o0-!T`?Ofk<_MH=-#j{>p( zigsSPfJl}RdHo{(ltiY}`0KEIWQ6}GO1*svkyIn{&Sga4K7!BVge#~5tF=F&%9N}4 z&eri=nb{POQF8oVjGn9VN*wzInLQ8Po8I79hTjUS1A9sgGnY;|I_g< zIFhsebVLCOKY$kU@iODMX^PSPi?I)-%m~r>)_*_P-@X4h-jfPB`iwGx6?V+;V*{Ih zEFCc7MZXJgAh-W@tdKHqh(g$kyl_I12(yf^*a#DEiu7zFyk~?-e~9!P5kltN;-#g7 zApoSx9FPpGr2P$L!@oqSG$Xufgwc0Idb$x7h!6u!@Yiaaq{3pBA7ug=%tiu$=V6f% z#{DDWnMQcq2ovs#^eiJRHp0YvB0bv(?}-q=I=qG!#a{mrFmUC6NjAbiFgoz79dbSbX!)mC8Krn=h4 z`u2L-VccjaWUw}hdxJ5>EyoM3lzdB&Ah|}Ea$Cgnj4<*~5l=P3e0Vx!FT2G&8I#+o z5n2iVh}?~!wFgJiEHveQ)mVG3x)dJ6eV*y>wAXHW%lRigS2Cso;^j`FahpZ@Nu9djjR zdz#1IET`I$PkY8RZcDE28W((gy1Ui~P0s7C4X;_Qk~?)a*Yv0)_+w^wKAE4>Mze0b z`*VPRm2p-+mK?QjJ1?zNuX@O9f>csWl4u`9}ViqqO1h*K$TE z=;J3owC0T3tjq;%-WZHCiuNtgM(NGp(Z2G={wSEBeTraen06KYUp@n5Wca-NM&`)V zF|=)7ei${YF8h#Wf%YWzo}_&OWO#0p#w0SlC!+8O(OL7 zE8032_GVsQpxMm_<}VleGqDS>>=5={pq+aJX^lqZNNpXj((z@-P>P-gO8ujcwCDZM zia~Z(p^jErqdz~=UWFu3??u|#DxS=W?!O0U*vHzcNBuBc4~x=@A9aTSLO^ztGQh%a z^LprF?OUd856Zt0S(ji`SJ|k-=)$4U0d#+f1~Koy*?#FwZ!XokOVOVQfVO<5{fwjV z?1THE)iMAq{9|*d|8AKE;e`U-6svvb`>1XgQ2X`TU%=p{EP)RmRW@4hvq76wnazB% zHb9DjHGk|b8n)fmlKMq!F3KOK`P08gExt7D4;Uybpx?KkT!vAu-=(*_XzNyBmkj!M zD>4d=jIBj}l__JJ))!1TONw?G_)_aD#YKxgo%&K+XiodVc*Y4!)v7RA`su0K2`LjY!VKpWwX=KEv}ueJ-1&)fHFp)?^w>yMG{%g{7dH!nlu zPIRj6)A-Bm3;VPZ?f#4Vv=g}eq1rNY+KbO7AhWc9xlD_pvHwcj`vV&(ob_$r4rZF`izDzgR+wMq%Umr{C8U8 zfY={B|AC|oJ8PK!AAkG7FqV8LhVkup8rS7E9b&`Kryc?rO1VEWkT#qWtvsx~BSF5& z9pn6(0o@Vp2Ly9sU4blhyEU*E1^rVqh-znPFwg`)1X#qcj%pdOEx6dz0X9%GOm&?& zrhV>_&F}&*GCW%wRU!hCOhwt+cq58jebfo9m*mGi6*HRk946EeqUa}1fl4r^Av*l! zgHGz?|7o$l?TofVLbtey%tk+I%-~x8w&-HoISR>gt)cuDeqMC^1=oK5rDvZ5vXyc~ zZ|Rfs+P^Xk0+(Eb*~uTJuezYYV?xnfx>+}{fqp7qTPc|nzXlq8!{u0BGssJix}v=f zJ1sv_c)fr?z0yzG9Fvsx8#Q~wrBR!PfdLdB9O_ST?>lY!#cP_?WR7M?7_}=K6GHpi zxtw@O2&$(KDA2ZeriLBrzQ1U-jJfc37gDQVv=8L$GoO{|qS;-bXZ)g_H3Q_9RE8Uc zVZR4ernKKRn6}KI`~EJKw%*YEFcWJRyYNgm)>)Z$zvFBprCg)?=^>$IGyI~wP2R#& zLYkg%Q~QQJ;c?SfwQg%|ftUv0*6M-*{hz;!DH)?dC+)wj<>GtQpEyO*DE&|Eu#^oA zqIQ8JJar2{3TPu`TzEuZjuvYTeZ}f}xr-q&_qSHFgfAPRH~3p4vk_-<4TtY(!A7)_ zJ3{~Cp4QVdUzPA?+5JDwBTWQbBsB3qt(8%_iaU-{{?ob}Q6F~%-TzPPYDE1Y%hBt; zR@aDD#az$0uie11?;Pi>t#;Oi=l~an$(~np+SG>zWz=;cN^9LFIRQm!Z(N0RM_Cnay%Pvq9Y%d3GDh83XYKbhzzK zndz;(q&e+==A4LSbg5n7Tdbvxeh2ksb(~*$anB%LLgLCR*cU<*5W>rU(y8fF8#-SR z{y&h-M4`%NFW@p#W>L=!wsg^{?>s_hvm2H60v>hsO^uzeN=C1kNUv`*XLsYNt`c_H zpk_`l$sBt=CVtM$4kicP*!jWVG+~CzPoLSs`Buqf6^-)srcEuKB|AIzJcYG&h3ZvW zVHTyRWdg+qwQ;tV(w5PjzOEW%d8MW|g|)#l0&lUM7JkvSj#{*Jj%*?PpL+%SxYIvk zl!)+uUI_wiEG;gwG)*?r!YQk*vscONW>Cm8P7lOY#;|%lyJAE|;r+^^6m` zNNIX{2WM?&{^C+cC)+iiUe(jPbaD>i*aNsk)6?C~SkIjKy3=WJSEmQ~eeg!RpsVw9 zV+cN2{<1@`z|av(D?5bhMp`%x?dJT+7y@1a_1@i``DUQ~COw>)Y^LEIx(P-99Y~bk z%h??X3^tJ;(%ZR0l5$DR@%g^aXQiuqC}c#l0Q&SyGd8{buLtd1em$s)zD*CPXQJ== zxK`3PFFJcN^trZqpo;>%1FGnaUvk1i23D?L&%m1cwE@nN5Jk~@zv8@(`#NyegIMV+ ze-Bp5(Q6HIj$)=)OZ(VwD3BRLFAr3sal@PrW0cI)Vcbjp+wPIs+R`+7_y0%#`Pb7a)u@x1(HG`vbs5PHcLRtLBpG|`!n z&b>&%$~V@(9pzLdb5=|Yt^QME}P7_-*jy^C89DUrc(kx`YBJ}=CQ!5An`!=D zmi@s@Dz2nWz3m6ivtDwfOHrea%tx zN|2oUl>Z@`yU^JRm+xH*oi$NTz8JEXVk4amOZGqkeIMyuYhZPM_w5V%`yV;ey^REK zhUVKZcFytaMP?BEyCu#K7u|)Knx;F-Jl@azX}Z%7!9q7bM`PN?1QPydI14? z&$cz2nW*&|X9$P@H0tnzey4#}7O!!BW3*?^z8E8%y?zq!gnSpQm@`T_Fv0n*HT#|3>Em$&B&D53|^D8b!Oh zJO_VS?gLCV*Np=AzW_7n3wTekn-4KqJQ=+`z0~80Y)8ZBAxdm@jAoOwU>a zZF=!G5CE`8$e}`SyxrMQGN*%|D>n)Xq^Vyz!9b<~sTft7J}cGPU1WNIz6UkXooQ&2 z!~4cG=S~BT&F)P7?OjfXhh8$fb7(=jvrbKM%=y5jLViA5331F-g>)oKE2Jao&Sgd$ zmEAe|=x>}8C8;>ygB$sOUf)+b3}j&#W2kta^MDk)O2GET{mx5xt>5>pa|LE38$wn+ z167)G5Y&($@2Y^9-+9p4+Kj>dmg#&4{Jyb^LY=gET_=D2!^6%lFz|5kAvErH+1G>p zbM=((ou4s_ujo+|8dA%j{O(ovX>_OO5OdcE=wWw2xNr4r&QKo9@X zxymdZF#6u%f^(&u|GfuFm{baIkN)!oXE!f7e~t&NS$ZX;cf8_E<)`%8Il(pc8b1N< z@GAJ)HD@i8bT2}mech>;q~xU(@|ROxUg%`RH>299(H&RssELY7$pRjKlC&P(*` zpH787|Hat}g>J@%)S$b+I14c~HLcD-N-5w}OG#xNm8(D$TYu$uC#?00dG!YQwCe^a z1u6L_;ys%52kTLqo_5PQN&-p<{>ypNT(l~I25%2>!l8%gj*jk(t^{|f_kChV0N z_c>h^d*6A-6tyhcL*t7}gWr}ao|%r*KQy_9FpYweb@1Ql? z0M^Os(u^7Lap&uAT3wY*Pl_4xbLXBff&2Q>^PzrBYXLGAq1D`?L^afiQCx1blyk}R zm$E1wsih>rpAOe9<~o`mtS2{?i79dlP(yJOn*e*oapS@t{{<0JJNza zXzE%bB|(XkQCf|gxz0Qrmn~3!C^vwH?zEDk#8oGHjYl#iP9zi^_iWxskpM3M&0RIX z>VCPoYq6<}Lx=jbWXY>8@@?UQ^2JWQV+&Uu4;aCzs{U?E*9#^X5~Q?Nu2bk{2{Iud z69}xgbukiRq8g0O>$rMc00Y73^Tc+pCvl>!ZpU_x4%%-W+f|4LR`%tS$&chTy;BF* z_Z}Qw$sJ2II=i|z_Tb3GD5rNbjEBO zO;mQLKiouR(L`mViOTM)^nBNnCMx6LSk~1wjiFXfNakE&03!G$I`}1{Bq<|aEX<%@ zuGZ$FEby61NnCcLTCI=i?do7EA(`%7q3wNK$G~U~@5`smbIDnyzueEY%mXWx-I4mO z{;roH=nXy$=ZY`_fn8=j71mIzcU%^-ta8<*PBnx4>9;)r*Qkj(AdarR>^fbhs}(j|PmdYsvf!L6;;b5d?`y6J>>kqe4Xm4#Q^43c4*l1` zF4%)iUQ27*fs@i>sEZ+UPS%GFb%lBWrwRO!LThimP@>ZUnWS;)*JX zCQ#NC*YJ|U$<*q-GIbBosrOt__$#M(zzG7{Gzi$;?*nZ{trK8GQ(fK5A$_*y`4l{& zS>QvL$>Y;pz3@_gn!*({t=@0N?NPJiq6U_x)?PkLjbjs=B(Wy4r?F zmPO`zh3wOugkQDOZWSd*aT?+YdaI%d|oosuoPQh7= zRWVUJAowHcnGPHi(ru~u`k{1NcPZ0mmiad#L*3TFbQ zb=0+zZ@kZlDl=X08Bk-F0d$JW@+Jq> zKK+kXig%hlQ79u}KwC}rX4!DpCJSGRp}{bEGVDf~lcdbBZ85Qysg)~d*fN;PLdR2x z7XIx$Vh-@M+{BENb8HXr1wY?Y%Rzvcxpcui8x+2k6;xSZyUFookWxye;Ux9FeovBu z)Ttp@lB5tac(nQ%`Rd8(ZZhh!+Jqd=vlXFppZr8#{ls<>89Mhx6F}IPN$N{tI6e2N zZ49ox(!rnG;4oA6D^mlCKFzT%85VzGTSz@iZ9O?*)2Devt(lZSWD z4>Gw5ZhD?11<%X1NbVY2b+b}10KIaJEjq~e(E+k+z0F}J+3@~cZ)@k%17?vn8*H*K znNA07zy|AUte8B!$yUI^X@qUIJ&#}d+GbmY)i{S!`HS0aj|%Jtv3Ud8oAQ2NZlj)& z{3W|uoHM0SPjcfs8!Tcpw9poZLmas@MchTp_SoQqZ>#{ylp>kr#%n$txsABSvC`W}H8cKUOJO-CQKwGs+2(SY5aDYTBmcWVjT6Gf7C%*NV zyRPV>kDjt|{2lu!j2&zrZAF^Y7weH8Uw1)J#3z%25tm*%NtT?2{9$O=$eO)!4O;h{ ztvZVmlJZB@qYSyvivyZL`a;<$Qz!EL1)Cd{XI!v-%2&W%bhlbFg)1Vd6}Ec#bo#Se zBKhi<arzGRO>FCA8C==g{OqLgvTYqcpZKTkTebMNK+M41CZDm7?f$q- zL}rXnP9l@8*apW|lmymgPi4sOCOb&tU$*r%(+&of;T6YR(tQlG0Bx0n*8U9{-KXEK z=E*oiRcT!W?#yX*VI>SF+)2Bx|ks0G|g- z#oZ9n6~DFkxWdcU$e7{}2UKVew;d9bNaHXuY%MRI;_uK6hC)GGu}M@B3S5e!j$m<^ zPfJJ_Y!P2%qEc*_n8NE?(t8@UoROktatg-Zdq#@i^Zbp||AzlJVniSQ-#8tB{|jn} zGx)_{82H~aR%|WgAHEC!zvbwMapE^ztt($xLIN%&d-PY0aQh}+T!<~aB3^U{oT%8X zWzKWu3(_D#d>Dq_(Fvj+d~j}p*g05#v5rJ;oZX&1!Iy5nwTG*TwT()BYx^o~8$C;} zbfB8?P9Gx2nU#_feU&Z^nBAUftm;{H@)M1QeoGV|W?mp_9kC-;SwBkGPZAG606&vW z7xf$%&5;h;)TLFFsuN|Ax#jC9k$;AvL~Z(mEG~n_#sCzZtBAXJY`=r+ij8@^G{@u+ zeV4K%c?zQDd8TpKh4ZrxF`Gj;un8`4EC&?@OqYFUcakoXhZ=}S`SdM!SqpO-iA~Mp zyx=K07h~sE+MUszui}7SwFYzC~JtYl6PX%UA%Z7+g-yu4Lc&_B@CL$YYG89x< zl&wqG*z4ilojk01rI?BlTQYZ5Fe^?-;F)wTS(T75cT_R zhev>i>MEgqTn3GOPTa_F&Ho-9c~SHkQ8UgnfvUGgj9Nk0FUuGu0* z<6*eF|5dQO*tC-ta2RuEoA&KdqGejc`>M46XmJV`TX3pswQ_ppHF5O6e4a$J#)u0b z-+o9|jTdW^{12pHGQFQ1N}qUB+{d-CG(l#(msY%?o${-J40BQ0;lMtF5Mkk&u>hA) zl95A>y`E$vKa3Yc>GpBrV2N_IN{be+Nyf}^X&9`ELs1W)0I`!zn_r#W* zQ28ZfO4dU0grrbfIYImY4D%KOS$`3;+5od@GQB=Yj9}9k)uu^2g|$DG4`IXuC^6Va z-ry`fX$fief!G+|G8P>9vF|0!og{gRSb%(Rs(si+wq=MT%vwZur6}7QaJn)*I>J5@ zEz7XrNh2x#B zjclU=GdAf}*tvH5XJQu?V0|2Ic1(D>xEng*&4kzVcdTG6Q;T{4Og@BcHPqFGBj_}(>%N!cyDI+bn z`zFLL0}b3Rw$a&#?(e0K{B4r_t@taS`IW&e8hj^S?O@$xHTAWgHtg1cb)8Pr->ZN$ zXb>+{{HFtnl~KsxLJ<)z>8?U?E(eF&!F$A34gTAo6UX;HY{&VNq<`;Qs!$}?d@r7W zm_K2Pq>+t9qROxP%P=v2wLdwGazBWjVA=W066YChlGpYH03(mi+b4!{!io!ikDl)2 zs~OQtDU9>DDq;{cdG{xu$i%Int9}yU+_2677Tx$WAjju@N6LN^o0IQKM2*k-mho8? zUswN4+z&1C(ci@3u@&D2f{3}zY&|5_C2t)RwJHh~Mh6AH7JfJ=9*fN{yvL_c#+FXD z$cHg+UyBcyVhk%LGf2pWt|+rq{0YMtd{|^kn#qU7i#6x_NYD88$^w#pL>$N$tYMtg zMwF}i{uOc*UzV{i#V|Ee?*$A21`e87CLZH(Q}fy}FlDsb;RIy8vh!@_GRZ0zgGk46 zu?gHPN0*DQ3Hdl1`u!uelAXVcADP4i35@hPDSl@r1z@cEl-SglJWmFn5}WyqCzTh- z{8QpEKKKx_Ih+RuU#%guGVepZ~#)yzL12uZA#8yNvUao-QI6E{M#tJn^D98TW$bUlex(9!$O#R$Md%md`67 zMr7f+G$ydLx+L!9^DgL2L6@tUh^bqRI$Ra!kt3JI6htfJ{uUG2-Wfz**8zHFdPYlZ-K*rkK@R>c;;ygmMZ!>3KLw-pUxWh~ zwB_G+FKVc`=A#DwfDZ541P6$dP153qc#PkaZ*UTvBz~k3x5S=;uz2%593|O7 z0{%4p1u5FMz&9?EF@n@WC@Z|j2LvA+pzDGp2^ndQLVB zmwpqnc2`Bc-yVK0dxPB zX&PebOLe6fXqfPx0kZ`ztS5C4Dk@BETV*}zDhza!DEx6@+B6kDZxtrT(Isx_O>kMm z_m;xu`y)X58?-8X%ophzA)SIu_jV`-#(p3-A$#YtYw29FPZe1n=COmlWob; z5e~CYksjd>q#K;CphOHMko)YNcgIr5TB$JO@ zNQgUaPWr``(trSWD7Vf>Gp?9Y0h5exwv-U@92ekBXWPJbk?U{wbQ`pr`?Uego%c!U z>bffyb{L%8j~vhI{S?!YZ5ePElcV=bO!^FLd-3Ifw#Pkyws)FsKh<6ut5*JHwQZO; z{B1vEwtb^ zgBfFR9{NkKK@UDC^}(s>G6^fRH72QFM31I7$5s#JN!GF$c2e}a6Be{pg2^i_aR=(_ z&XP|uFFj&TUM zp+tDhEpSd(umpw-`d6L0Nq_P4|Fl+cQFqDb`-NPr;Qi!44{0aA6g18#VPj8e8+MI% zpOB>3w8}s@L(ZbhpOD_>bl021v+YTwV=s(9jXc#0Xu0#xJ9fUF&FnI#cVTXPpFRy} zA29l%6MBQsOjx?v(t0r67KAxi4mSm6;q5ZsQ(Pqr&ub#G*0z9JNS9sr54D=-1|A{f zJqM~ZUZUsu%v%uMt0`n`Unx1h$j7(XAoB678H?Ptxv!K8?7Y=i@<4f%+D~c$cKAj= zX(H|oUhO9>!k#*(zl3)j$-4g1Q&6`@4?q<>_BsF%#%X?_v_2`*r*=ilk*j&@V0Qjb za_sxYLkt(LfFR#$voOL>hI+^_*bOPI7SwI$TOS4V5xE+$H{TnDic( zPkRoR5*bT@e%nr_j*yn1DCJpcB(h+jvC|FDO4B%D{^W&$&e@UcL##n%)AvS7cnI9w zG*-SO`4n>5R~V+~I@(wQ&iMq1d__9WuP}y5YrKk{c_?8TjKZE*PTw9SMZ%namMCMS z#(+h)F_KJwdX4Q&WyC&4!W|TfyqPQs6J{5`_42Vdfk~!~kMsI|9ethGVDERgvpb`AnqY= zn3;^gcA{4qJVCPb4tOR&&!c4%q#lAP7=(H%uaKjYB@cOLvSb}oLvd~3$YiOXkHKgC zWit4;-bNgx<#)poNao3$f> zQA0LM<-X*3(rt^>$4oN+v9GpBHLSL9Zlr}Y<)&8nOd`@TK!e z!#$GIhlLrLBzmxtuw?We$=_r)dHZ{5sBCCtIqYVuZ!%iaeKVQ656dbb*S?oFn$5CT zLAMl1ZmS!10=W2-RA?5P5dX`UEMP%zts5=Oo$-&KrN?-)7+WJvEs=U#urQWISNxp++fZiX z8Vl@$2a{4L6hE=d>N(@MbfMX%Qfqri1r6bq%0pHVUNJhvx($XNV?T#YlWmg85Mp>>WXdV z=}SiTgiDfT%;6T!(M>S5n9uNmHL!rWVpy0ZhPhFzf-KH{;2MeD9y^E@ykkS8AX7!l zyx94IN=q=%kzLPQ`cGh9AyEm|$g+*QUYb?uT&x`fK>u?^|NafQjPv8^xq zRAvs7%udV<(S;o8;Yo@juSDR$Rr(K8q~qR9gj~Q4vz|}Yb;eA53HDfTry5yI5W)2g z^RZJS57C#A=eNkRZ4JKWhEH0d&+CvGYFU`Xqfv7G`qnF_Mhn?^EH&6;y@zV#rRjP3 zBn7W-$6N2H8bwT^VL=$5sV>V^(2aFaOf#y>!|{aOKUK|``sJLhHRK4s;;IGgKzCK- z0*Iz$cc!KczboJclOT7+$piS@N&`+0)RI4jNv^W0Tkf?)eKFYK2dbD$4%tq!R!AQj zHvB7f(AYY&vEn3|+~N0tnSWpr9)lf&C3)p3r4IeXCc~_D`lN9Hhj2EP<1=sShQhUW z`F*ZtruVK7;V@B)E?4CF@MOAaXc(AIeIDDRbW?`XLdRx(ta#hdA^**n8-t?}E*WNH z{gQ>9%y!GexDxV@TOQ-PN_x67n{4?cq8%x2Dc2{5>thVYkqkYsy zZYaNi*p4xcWE?T`ii!NXR-1f0MGH+_5SrxS)L>}3KWu)L~*A z9oANcp=sx>d*K&I+>c-1Jpdv__>A`Qvo-y!T+tW*#$2XStW9ckfQPa!+Zgx5;5p^y z$fo(WhUC_3N+|gyMT%x|?J#z|KC}POp&l6_5?0W!I?7Q##^!TxCet61edn_k*8=9; zw39poo5HqE@@HIt>5Z9)U>w=6-%OAxc|`t*OYsl5g|3-f;X7_9dV2l>-+Jola{A<> z@`FBDgLzx9X1;}|An5=O8j0vCzoq%xX6z!!Qxwn^OXtrbkIzm9yXq=W$35wV{+{$w z+OM0uf{VLher3EGpqG%O9edUsnI*TbCYj*~yA=mo{AMqi`kZVH z8D3Xp=JT>8kg}%_wmvUwekJ8~a_)KA&T>$a*D4q z)LbKF%Wp0S$IP=M<@-$&c#x-2Kl_+#v*(T~Q;n|-Jc-mRlPguF(i_-*+Vic@hjH*Gxw8+Pm_%cY3UW6V44pcPux3W`g`OCu9SGbpBJCCeK6=IUhYTO}c7aCQ1fQO^syxlKlnCq$HwN6D(3g*ccs>7p+45UpAdme( zZel{QI(GNYAIMfj;%IEq@A{K5SnIDpkQ_)o{SzD2aYUmTiNp`^n_Q|oeyi9kI0lTGMMj7iz*Az4*Y0J?M-fq>!g8nPyp0Oog z1TG1CdT`4M>~?YU-w(`(FMD9CdZ^PG@{BQW!@rzgL{Fyc0)|4Z$+RxwfL ze0l%@U;A2~=*PJ1+f{G>=aDa0`^X7`8a=ogTROk)_C4hl{g{25O;C3?{FPmq*XQ== z2F$JM956S6xyf|*2DuORh|GT(a*s_w$=HG$e)SckLBM72X8EmviNoP8(?5;8+f}W_ zD~P z6hjbWaw0@|iMIVw#+~!Z+Xm8HI3SxIGD#HiGA?s^I0J@!y3f1vE7k#uwJ%HL-uMar z4f~0yDY);TZwZ)R)C&iFh=moQIYNbtsh8?DU*UWlAByS0-~ujr~Um= zdB+_-^laMjp+D&B5H!U zv)-JX97%4M%k0{ejv%=c%~t#Vj#lw3w%+R5-{p3EY398ot`yW4Q^Ut7m+2KVLA>SmzFB<(?c@N@tvt*RY#}R)mpZ_;}|9IWow{ZU2i_v0nr@ zSMUG(o&sHdrB9$krDK&c2Pe1!1I2=`$(@CQLnfzr{+bL6!fIM_T~4ufuuxAHt$9=K z!3nDi^6)TB~Uf6_n2z+@P*l)6$N&DoinX{v^VUP&$$1Ber0YdQ9p7_XA}( zxp2P{N#Ee@8qZ(ZX7s%w$ljX2F+EUhHvH}O1lyAZM1G++!t7BTu6`0+>#0rE2>a_S zMROwUP`&2it;6oNL{hL<4lLT?@>~G9iX5G@eh}aW6N% z<8k(%BYYcs2`P~6eqK^c&&c+dt)_4kBZE}CUrU8s*8XG&BA)C}?d{CAcH3yp8=O z{``jq>%p!1XUr|OAt`Qaj}TU*&-V6Q-jUt9S|a0epGi0YTP#j1Gaj(7FW1deVQK`pHsedMw>xQ#2kp2>VptN*kQvQ7 z*=NB;3hECQMT2=!)3XoTm-=Rmr#?H||K>OCGGM#sQTyuwuw}L|h)%PNdA;=3EPpxNUMZuuiB5nSpKcC^v==thj{n`!4J6>NgHkN?vsxX(2~*iH+h(_yN|K6m=#Q` zNQ>XFzi#QZBRu(}>o~i0f75{^em*8Vx(=6za)%1U%(-z+1vmLo0Qbs~z>7mJXD09o`WAEEn zFnI>5Q5Tgn>~&bexNG%3!*BhrRW$waL;LdrpZ%Q<$t44(+u5~)fgjs(izJ`EG{fG} zA`{%1B6OzxrAX_*&Q_35X4zll(-)DLYOip?$bNNt=3s zaz4yCO-LS?vN6aAkaj_yomj>AnhyTNo@60bICh@Ni|sb6GweiU$rAe_vo$Cq@dS^3 zeLynq3;SZTakkeKd|__`uSat23;Uis{Xzm>BRss!{v97~d4RSesy9837JO-M6nJk- ze>sw_TV+4Q{3Y2Q0@DxuX082W?5BkWrjJ->f6cIEH6dX;?eXTwBC$5kow$e8Wxd_* z^F^IMMc?h|zHRn5z-G)Qp4;(nO;9vpx59cw0yN#ewZnJU91CLDGBKD8K7l>_vqJk$ zzS3+lbGN-ayAGuD>B`;q=lIGgWXK-uBxQ8t9y{(*B0bTe#FMi0a%<3~HL#Lo|uOqf!907nKNu;&OFFvsF7 zod8)G0}wXNHdGg2`N9_wtK;sD-YAdt* z;;(U@b>!7!c9)@G)vCjOl}{EOv&Y2;UNnlrF`g9_(%r}GMb?dTM1UDxY=4+uJISV( zzsH!~y3_Wr>Xt4FJe7G`5t3JK^TZGV&V41pS00=`%p`Y zVOB75$^NEwSVI7}3{v|~`+0LphzdueuGnh?30YHTlb&NB6rd@8tV1}b?*GSLkK;Fe zuaA%>UbhR3m*_VQ@QE(!_rGa(^QXTzq?PkG?R^8bVkYK5*E7}FVn*MxKX^wWWT#Jz z!lSn!(wG7i4Br3PO-1pT+xGSBp?fAp&F-N*9?*aRkNKbKLe!cS^w(fzEaO!@ zLY49S(k~2g?Nq4pa!_2^t-y1#eu0_{IAfm8CPyi6aj{kIOhYCq%$a0Mpm>igffEWQ z1;)eLN)l@*Zl5@c=)^t7Du|y~L$NNGvYl`Y>X>WCEWDr9P%LRU#B+e|t)YCvqzpz- zpudl6EA^p(Fd#<{B`O-IaXGzRN7-R9MKnUcw<(uljqoX+Rxp1#*fGdHNpXNZ|0O9+ z`6Pe&YLv6<-%E{p*|fc)c!D{+I_OZEF?z;6tH+~RO5Sy`7T9=ff&l8;=2B({@wq=3 z=svCy7Hl!y+eiuHh4kq_Kt#}?6-^ZEJC@3-gxsI34T-6FDnl-)0nOjon|N?@Qiowr&8fi36Y2U;ky=tEGnLYttgY2GoFO4!_n>$Xibo>IglfrRIk|k{dFS+qb zLyk`?Hs;g)UF88j{c9GrNdsqrCs6RYlCO3e_Vboy+Xe^pw=5Jl%bu-#F% zzKk8?F^uub11!?1NZ@*~mS17Q#644K$7g?YFD+IW)kA>@CB^1tto&?!2skybC!=O7 zeo1%*IXqjjq6jk!X|Eh`Uh|4!kSG0P|565#?hi*kNcR(^k9AnX6sG$ss6pmoEzExt z(r-d2rv2t9gK(0cMlQ}*T;#-DMGjA&4yFVdCzD3ZQ$E6t2a+>i>5X&dh55?EaCF9x zn+#Z>?=)9H66Tw2( z$Fsecr0SeR%61HVi1b{oJPz%HcQvRri-fLG+CxwF@EWBu+JwBYbcVjM$AyJ`Fo{0JYTk3n>n-O;!Y5Kwn%|aCWF@63zFmtN!mUgmV*3$vS zN(*MHow;9udAzcmM*O5WIj)$d98iAX!C7zr0?xXQ%D;lUu>ipn_krgXlqipIQ1yi! zRNiLCw8@8*b)0J5B5K7mhhbQ3eU7edBye;k{SPZI@Nm ziF(rnO$U>-G95ki5vCqf9^jyldGENAg4107ab=8ggD>?o;$sXvpoGy!%a!|qtMvWf zl^I;kqAwW=gyAh|qg%X#=su;yV|HJX4yTnTYF7ASE?5<01_>`q|~s^a=3v{{<)$&;bV1awAWwCPKy%?IK8P? z73 zJ}&oLW1ZN2KlaLn;F(Vz4OSHhHZKILO@Z|YO6?>C!Rqq3QlAr;;m(CMCTdO-J4wD2 z8O(0QcOMtq5nt&3R{CYj)64F>8b}Mn)ZTu;<`Q?5+QOV(7?i3bqSPj4l0`I{AEjCn zDk61}AEH#hgu03R9i{FuD?=D2yQ{0eGsQrDw5lrxzKd2bhWpBM$<{=*yHDeOM@&1P zebXQ0tBl-NM;&8+UkzLN+B&}81*pr9)=?j};2q@2B~3)No1$-b8jBB+d4%DVVFQn1 zhHsX6fXqiNQ>zu@Nz3vvN(~XB@no@^Pd5KStK~P9ml09&0fwE!o|M$wFmr6I^D7S3 zGKS+wM_M>lYiDM+y#_f|E3R?`_U(mEHP!rnkP) z3_G1ZlC1WKGK)p%TJzeegZzD;r(vmTeTxd&tlN52n^~PXJrDHw`ogT~6pz}*`kDof zD||@Rj2ItSn9@nUl~DD|`vR6s4-NL$U5HNyugEu=aZsQ^^N8L03oZWT~vk?XzHD`qp*AZ=ClQA7Mt zC?TQ!)s|*4^DFPvU(K?B5)7am8K7D&9O#uK4pbNUYG>2!167~(icR&#AhoV<$eF}F zSbfY)GBkZ>uv*7=9Iniw3kRzZ{IbZ35vr3UA5W@ImJC&!Amf*zYDet(b%v=Cu#u5^ z!_^JQJvv-1GHMUOPxQ0u{V03vS@l<=OeOEpv8g0=gc?ddd`^wR)=i#Mr6@2%zm8zS z7}e))UOeO93NQ-~Pv3;g_#3>mUwf*MM%k5|9r zYnJ_BM)y1zSJeGJnmoUV4_)Aru8>-F^9 z$EwT1M-ljGn*nwco6QUjx@2QDRyIqmOUBMrljDldRV^#{W;VGnSyf5tObn-t+?=Vt z5}WpG)k=td#2WC)<$b#QEk?`}zz zPd>^~HGY0Zl?C6Qqwax7HJ_+(m@H#)bXipO8gsB{m7kH{=cq3NR6Xaaf5JM{X`bpt zA+YB;`qMnME)zVj&R0ipup$mvsD?4w>{+kcm)V!M<*7Z`>80i;>P1_YPu?@elbvg+ z9@>#(Ql9@wNpT*p+i4Y-+|?T99e=@$Rr_4)&4cJd~r&RMzV;p+Br*Amrw=` zq8`1C;XFOQ6rGz4zz${6{maxTLfxvNXl!?cqOp03kI!OZe(R81U#cy%(s_n(WXRGs zPrfhR&LFZK|AINmUopBW_|Yi#6T*~y^(QWa^joDv`0Z8d5hy2~`5K|q1m^01o*9RD z`y2IOfCkMZ=u>w#ma!TOR95*fL%46P+5(%zW%?>rXRw0@w_Y7)0Yrol`0@sIZooOk z0B9LW+^F7fGD@2VkNynUsD8v(E+yk{CowNXgg0JCwro;6fbrehg!MOl$@G^|j%`-0 zQ)3ha&^}vKOEnycXQ?S6eZEs0o25~xJpDVLAW+@2j?(Yc&n&Hc7&Mb3_WFwPlm(f-S0z3* zM#W6pbf4P8Qh~EeB^d{N)kD$RssrjI3$77hE$x0mv1K&Mpd)@!i}0M6_J&v6-V8v*!5}SmVD8FmlfkbTw&@tHc4W0!p&ARX z$xeK|Vl)r=CP@2UM%Rzu-DzaJ*3dY{zAI`9eI`Mh%241$ZLMx>@fM5ekI`qA zMr$W(eK{6ykPVb#psP6D(4c=i+@>Yy$^#6!0ejPaiKKP1NQSw74nBqO2GteqNk}I{ z6m2V5Hc>S#ASfhJY&$@@Pum+86q6tBORZKI@%^rAZ(^C7DM~wa&ZGc+9rt-F$Eto4`o2q4m z-rdQQoi$6^yPE>aXQyb0GsY}J{T|hpK%)EE(Ed6e*Ia?xBgXp$5W|3O+F>C!+k6Sa z*pFB^!!A!~9t>^T6X*=rW|uvwjR>R}_BnI@R-V!lK{NL~g~eY%r#+?3#_n{8EE=b^ zpnZC4(A#7np0n1HsnGX4gEhhQp6{=%?cD){%kl0-$9y`8{n8m^*aV z+9P~TKhYY~&;OqEo}$^cqD2;cWHOS(>nopH8RPZzd@_6zI8)^!GJTTP0r6z^PQt7M z}%FF&sIz&y^6h_m4SzGdMx^^%?qc+^Yv9;C;_R-UR&d@_o7txIOwar}Yox?65 zPfyVlaH6-SXdMtZp01msjWakR*1$oZnX1Jy&Vif3@0##tp*${qs42!l7vxcxJ)0=o z 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