From 50159758a2990aca57f551cd92408d22eb4a88fd Mon Sep 17 00:00:00 2001 From: lxsang Date: Thu, 25 Jun 2020 16:23:33 +0000 Subject: [PATCH] Add OpenPage release --- OpenPage/README.md | 6 +- OpenPage/assets/blank.odt | Bin 133914 -> 133051 bytes OpenPage/assets/scheme.html | 2 +- OpenPage/build/debug/blank.odt | Bin 133914 -> 133051 bytes OpenPage/build/debug/main.css | 29 +- OpenPage/build/debug/main.js | 2813 +------------------------ OpenPage/build/debug/package.json | 2 +- OpenPage/build/debug/scheme.html | 2 +- OpenPage/build/release/OpenPage.zip | Bin 0 -> 581961 bytes OpenPage/coffees/dialogs.coffee | 241 ++- OpenPage/coffees/main.coffee | 407 ++-- OpenPage/css/main.css | 29 +- OpenPage/javascripts/EditorSession.js | 2 +- OpenPage/package.json | 2 +- packages.json | 9 + 15 files changed, 407 insertions(+), 3137 deletions(-) create mode 100644 OpenPage/build/release/OpenPage.zip diff --git a/OpenPage/README.md b/OpenPage/README.md index d9dfca7..b0c808a 100644 --- a/OpenPage/README.md +++ b/OpenPage/README.md @@ -11,4 +11,8 @@ * Save documents as ODF format so that it can be compatible with desktop applications like Open Office **Credit:** -OpenPage is heavily based on the WebODF javascript library: https://webodf.org \ No newline at end of file +OpenPage is heavily based on the WebODF javascript library: https://webodf.org + + +## Change logs +- v.0.1.3-a adapt the code to the new AntOS API \ No newline at end of file diff --git a/OpenPage/assets/blank.odt b/OpenPage/assets/blank.odt index 90a60002d1c93e1480649a9520a0c56a53effae3..34face29e8fd37eb5aef06b871e0b94fb4d34518 100644 GIT binary patch delta 1515 zcmZwHc{tPw7zgm*j4R{FMoq?@`%H3Ot{5RVYsNj3Y}R6T|LA%4{pWq3_xV20`_Jcjvog=LrkqK&W%kBSA|E+4IDkOP z*pvDDOxsW?7y$So0KfqNfCt(iT03iICjyXAh#lfJD6=_&`s~0F?Y&!GgfLF5u^Spee3KydJXZ?PsJU3ie~ztQe~5BPv>QaD z(W|_$u7$PQ-r%#f-f9zbcPivGKL3Tdt%((MX{egCdtx1bcE2YmF*M0-gg;QufQ*#a zgvtkn@;0SxD8@PW=`bwYI6yk?y9OAV`h?imA-=Tiik$ATvDn6CVTJgIM5I@fs$GPS zY-x;3p72x}ryk5z2WyF#6#9)|M6qfBC-Tekm;{lF94=2W?@gJt`Y)o^*yOL1N0^zW z#mvQ0qz$r?nsM>Ign87Lq#%=(aIM&jbNq}^;nbv`O!8K(5|1d^5tT-{I*)_;nM?^F z27Hd9txO^2bu=a%(e^yL4Y~VGIOJBK(?YM@1*_tN(@8^Ei*P-f!IBzTz0)+G!NQX( zK6q^~0*WBPYHAu>Ltlb4vY?)JshM=@HpF$eo_E9Sy&Y9#o#hv^R|X3_sqW9t4}fVZpXHk&{N<{|ag6I2d|~ zmU5GalCh?m=bXZQZzCjTgQ>T2SUNwmE~ft)CL&Pcxo||75E0%Q9$T8V?P)(U+$SBn zHW%sEPI`6Lt8_i>g41M{71#XWYceBy@9@(HY)A_x=3~LY8Q=u9!BZz&^<&gAtS1`) z@bkjBoruoJxQV7H^Ypeq%_v3LW9KE9A^xTset$@vZ%n)rLdgzPa#gDppHi*Qi$;JI zd~J4|dER1=T6d>s5f7W*nD23#2g@!y^Ti2+J3YzWcQ+30rvJ3wRI>288Ne!m_qBbb z9L4q4H@Ynp=e8=K@Z(E<2~dYW=^oo@a4U@k5>7 z_b0R?n!FMzQ4b`d`n3Wt_B7AxbxK05(9OOHt<${r8TgL84@T(z>Ygl>ts%FT$0kY) zgq8g|QGq7d$A_ugttu3K)+NIz>^m!6>0@3H7pEah>L}I{XT$0X+EY?`D}4-mtW{ua zW;x%@x1X<$TqonAgd!R5%!ekaJoGn9xzjO#5zb~({B?U&ORt+U_gx=Zm+(8cbhvL| z=zTO!7>-npevEV)aiS#yO zktTCgOlfEUT>qSu8Bh0>0|ZCKzJ6%gj+H)*(2AHi${4osof&K?6oy(yj=M*$38Wpe z{s^pTSrcRpI(?>1x^NKd;OU4rVFzQmfBdTWQFgGr=>MTScKL5zx{4QpfG?b;B3K5X y5+DFLU;=>i{{>Eav>N_41T6l~rAP=E1|Cz#zkq<%!I10tAqe;yYbndIdEjqn=)Exj delta 2377 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 diff --git a/OpenPage/assets/scheme.html b/OpenPage/assets/scheme.html index 3f16689..d3c7590 100644 --- a/OpenPage/assets/scheme.html +++ b/OpenPage/assets/scheme.html @@ -22,7 +22,7 @@
- +
diff --git a/OpenPage/build/debug/blank.odt b/OpenPage/build/debug/blank.odt index 90a60002d1c93e1480649a9520a0c56a53effae3..34face29e8fd37eb5aef06b871e0b94fb4d34518 100644 GIT binary patch delta 1515 zcmZwHc{tPw7zgm*j4R{FMoq?@`%H3Ot{5RVYsNj3Y}R6T|LA%4{pWq3_xV20`_Jcjvog=LrkqK&W%kBSA|E+4IDkOP z*pvDDOxsW?7y$So0KfqNfCt(iT03iICjyXAh#lfJD6=_&`s~0F?Y&!GgfLF5u^Spee3KydJXZ?PsJU3ie~ztQe~5BPv>QaD z(W|_$u7$PQ-r%#f-f9zbcPivGKL3Tdt%((MX{egCdtx1bcE2YmF*M0-gg;QufQ*#a zgvtkn@;0SxD8@PW=`bwYI6yk?y9OAV`h?imA-=Tiik$ATvDn6CVTJgIM5I@fs$GPS zY-x;3p72x}ryk5z2WyF#6#9)|M6qfBC-Tekm;{lF94=2W?@gJt`Y)o^*yOL1N0^zW z#mvQ0qz$r?nsM>Ign87Lq#%=(aIM&jbNq}^;nbv`O!8K(5|1d^5tT-{I*)_;nM?^F z27Hd9txO^2bu=a%(e^yL4Y~VGIOJBK(?YM@1*_tN(@8^Ei*P-f!IBzTz0)+G!NQX( zK6q^~0*WBPYHAu>Ltlb4vY?)JshM=@HpF$eo_E9Sy&Y9#o#hv^R|X3_sqW9t4}fVZpXHk&{N<{|ag6I2d|~ zmU5GalCh?m=bXZQZzCjTgQ>T2SUNwmE~ft)CL&Pcxo||75E0%Q9$T8V?P)(U+$SBn zHW%sEPI`6Lt8_i>g41M{71#XWYceBy@9@(HY)A_x=3~LY8Q=u9!BZz&^<&gAtS1`) z@bkjBoruoJxQV7H^Ypeq%_v3LW9KE9A^xTset$@vZ%n)rLdgzPa#gDppHi*Qi$;JI zd~J4|dER1=T6d>s5f7W*nD23#2g@!y^Ti2+J3YzWcQ+30rvJ3wRI>288Ne!m_qBbb z9L4q4H@Ynp=e8=K@Z(E<2~dYW=^oo@a4U@k5>7 z_b0R?n!FMzQ4b`d`n3Wt_B7AxbxK05(9OOHt<${r8TgL84@T(z>Ygl>ts%FT$0kY) zgq8g|QGq7d$A_ugttu3K)+NIz>^m!6>0@3H7pEah>L}I{XT$0X+EY?`D}4-mtW{ua zW;x%@x1X<$TqonAgd!R5%!ekaJoGn9xzjO#5zb~({B?U&ORt+U_gx=Zm+(8cbhvL| z=zTO!7>-npevEV)aiS#yO zktTCgOlfEUT>qSu8Bh0>0|ZCKzJ6%gj+H)*(2AHi${4osof&K?6oy(yj=M*$38Wpe z{s^pTSrcRpI(?>1x^NKd;OU4rVFzQmfBdTWQFgGr=>MTScKL5zx{4QpfG?b;B3K5X y5+DFLU;=>i{{>Eav>N_41T6l~rAP=E1|Cz#zkq<%!I10tAqe;yYbndIdEjqn=)Exj delta 2377 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 diff --git a/OpenPage/build/debug/main.css b/OpenPage/build/debug/main.css index 2dc7edf..9482ded 100644 --- a/OpenPage/build/debug/main.css +++ b/OpenPage/build/debug/main.css @@ -8,10 +8,16 @@ afx-app-window[data-id="OpenPage"] div[data-id="container"] padding-top: 10px; padding-bottom: 10px; text-align: center; - background-color: #f2f1f0; + /*background-color: #f2f1f0;*/ /*position: relative;*/ } - +afx-app-window[data-id="OpenPage"] office|body, office|document { + background-color: white; + color: black; + background-image: none; + user-select: text; + overflow: visible; +} /* @media screen, print, handheld, projection { @@ -37,7 +43,8 @@ afx-app-window[data-id="OpenPage"] div[data-id="odfcanvas"] { cursor: text; margin:auto; - box-shadow: 1px 1px 3px 3px #9f9F9F; + /*box-shadow: 1px 1px 3px 3px #9f9F9F;*/ + border: 1px solid #2c2c2c; /*added*/ transform-origin: top center; -webkit-transform-origin: top center; @@ -48,24 +55,28 @@ afx-app-window[data-id="OpenPage"] div[data-id="odfcanvas"] afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] { - background-color: #f5f5f5; + /*background-color: #f5f5f5; border: 1px solid #eaeaea; - box-shadow: 3px 3px 3px #9f9F9F; + box-shadow: 3px 3px 3px #9f9F9F;*/ } afx-app-window[data-id="OpenPage"] afx-hbox[data-id="status-bar"] { - background-color: #f5f5f5; + /*background-color: #f5f5f5; border: 1px solid #eaeaea; - box-shadow: -3px -3px 3px #9f9F9F; + box-shadow: -3px -3px 3px #9f9F9F;*/ } afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button, afx-app-window[data-id="OpenPage"] afx-button[data-id="btzoomfix"] button { - border: 1px solid #f5f5f5; - background-color: transparent; + /*border: 1px solid #f5f5f5; + background-color: transparent;*/ width:100%; height: 100%; } +afx-app-window[data-id="OpenPage"] button.selected { + color:chocolate; +} + afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button:hover, afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button.btactive, afx-app-window[data-id="OpenPage"] afx-button[data-id="btzoomfix"] button:hover { border: 1px solid #759DC0; diff --git a/OpenPage/build/debug/main.js b/OpenPage/build/debug/main.js index df39f39..1af1e8d 100644 --- a/OpenPage/build/debug/main.js +++ b/OpenPage/build/debug/main.js @@ -1,1289 +1,4 @@ -(function() { - void 0; - var FormatDialog, HyperLinkDialog, OpenPage; - - OpenPage = class OpenPage extends this.OS.GUI.BaseApplication { - constructor(args) { - super("OpenPage", args); - } - - main() { - var me; - // load session class - //if not OpenPage.EditorSession - // require ["webodf/editor/EditorSession"], (ES) -> - // OpenPage.EditorSession = ES - me = this; - this.eventSubscriptions = new core.EventSubscriptions(); - this.initToolbox(); - this.userid = `${this.systemsetting.user.username}@${this.pid}`; - //file = "home://welcome.odt" - //file = "#{@_api.handler.get}/home://welcome.odt" - //@canvas.load file - //odfContainer = new odf.OdfContainer file, (c) -> - // me.canvas.setOdfContainer c, false - this.currentStyle = ""; - if (this.args && this.args.length > 0) { - this.open(this.args[0]); - } else { - this.newdoc(); - } - this.resource = { - fonts: [], - formats: [] - }; - this.bindKey("ALT-N", function() { - return me.actionFile(`${me.name}-New`); - }); - this.bindKey("ALT-O", function() { - return me.actionFile(`${me.name}-Open`); - }); - this.bindKey("CTRL-S", function() { - return me.actionFile(`${me.name}-Save`); - }); - return this.bindKey("ALT-W", function() { - return me.actionFile(`${me.name}-Saveas`); - }); - } - - menu() { - var me, menu; - me = this; - menu = [ - { - text: "__(File)", - child: [ - { - text: "__(New)", - dataid: `${this.name}-New`, - shortcut: "A-N" - }, - { - text: "__(Open)", - dataid: `${this.name}-Open`, - shortcut: "A-O" - }, - { - text: "__(Save)", - dataid: `${this.name}-Save`, - shortcut: "C-S" - }, - { - text: "__(Save as)", - dataid: `${this.name}-Saveas`, - shortcut: "A-W" - } - ], - onmenuselect: function(e) { - return me.actionFile(e.item.data.dataid); - } - } - ]; - return menu; - } - - actionFile(e) { - var me, saveas; - me = this; - saveas = function() { - return me.openDialog("FileDiaLog", function(d, n, p) { - me.currfile.setPath(`${d}/${n}`); - return me.save(); - }, __("Save as"), { - file: me.currfile - }); - }; - switch (e) { - case `${this.name}-Open`: - return this.openDialog("FileDiaLog", function(d, f, p) { - return me.open(p); - }, __("Open file"), { - mimes: me.meta().mimes - }); - case `${this.name}-Save`: - if (this.currfile.basename) { - //@currfile.cache = @editor.value() - return this.save(); - } - return saveas(); - case `${this.name}-Saveas`: - return saveas(); - case `${this.name}-New`: - return this.newdoc(); - } - } - - newdoc() { - var blank; - blank = `${this.meta().path}/blank.odt`; - return this.open(blank, true); - } - - open(p, b) { - var me; - me = this; - return this.pathAsDataURL(p).then(function(r) { - var OdfContainer; - if (me.editorSession) { - me.closeDocument(); - } - me.initCanvas(); - return OdfContainer = new odf.OdfContainer(r.data, function(c) { - me.canvas.setOdfContainer(c, false); - if (b) { - return me.currfile = "Untitled".asFileHandler(); - } - if (me.currfile) { - me.currfile.setPath(p); - } else { - me.currfile = p.asFileHandler(); - } - me.scheme.set("apptitle", me.currfile.basename); - return me.notify(__("File {0} opened", p)); - }); - }).catch(function(e) { - return me.error(__("Problem read file {0}", e)); - }); - } - - save() { - var container, me; - me = this; - if (!this.editorSession) { - return; - } - container = this.canvas.odfContainer(); - if (!container) { - return this.error(__("No document container found")); - } - return container.createByteArray(function(ba) { - // create blob - me.currfile.cache = new Blob([ba], { - type: "application/vnd.oasis.opendocument.text" - }); - return me.currfile.write("application/vnd.oasis.opendocument.text", function(r) { - if (r.error) { - return me.error(__("Cannot save file: {0}", r.error)); - } - me.notify(__("File {0} saved", me.currfile.basename)); - me.scheme.set("apptitle", me.currfile.basename); - me.currfile.dirty = false; - return me.editorFocus(); - }); - }, function(err) { - return this.error(__("Cannot create byte array from container: {0}", err || "")); - }); - } - - initToolbox() { - var el, fn, me, name, ref; - me = this; - this.basictool = { - undo: this.find("btundo"), - redo: this.find("btredo"), - bold: this.find("btbold"), - italic: this.find("btitalic"), - underline: this.find("btunderline"), - strike: this.find("btstrike"), - note: this.find("btnote"), - link: this.find("btlink"), - unlink: this.find("btunlink"), - image: this.find("btimage"), - ac: this.find("btac"), - al: this.find("btal"), - ar: this.find("btar"), - aj: this.find("btaj"), - indent: this.find("btindent"), - outdent: this.find("btoutdent"), - fonts: this.find("font-list"), - fontsize: this.find("font-size"), - styles: this.find("format-list"), - zoom: this.find("slzoom"), - format: this.find("btformat") - }; - fn = function(name, el) { - var act; - if (name === "fonts" || name === "styles") { - act = "onlistselect"; - } else if (name === "fontsize" || name === "zoom") { - act = "onchange"; - } else { - act = "onbtclick"; - } - return el.set(act, function(e) { - if (!me.directFormattingCtl) { - return; - } - if (!me[name]) { - return; - } - me[name](e); - return me.editorFocus(); - }); - }; - ref = this.basictool; - for (name in ref) { - el = ref[name]; - fn(name, el); - } - (this.find("btzoomfix")).set("onbtclick", function(e) { - return me.zoom(100); - }); - return this.basictool.zoom.set("onchanging", function(e) { - var zlb; - zlb = me.find("lbzoom"); - return zlb.set("text", Math.floor(e) + "%"); - }); - } - - initCanvas() { - var el, me; - el = this.find("odfcanvas"); - me = this; - el.setAttribute("translate", "no"); - el.classList.add("notranslate"); - this.canvas = new odf.OdfCanvas(el); - this.documentChanged = function(e) { - if (me.currfile.dirty) { - return; - } - me.currfile.dirty = true; - return me.scheme.set("apptitle", me.currfile.basename + "*"); - }; - //console.log e - this.metaChanged = function(e) { - if (me.currfile.dirty) { - return; - } - me.currfile.dirty = true; - return me.scheme.set("apptitle", me.currfile.basename + "*"); - }; - //console.log e - this.textStylingChanged = function(e) { - return me.updateToolbar(e); - }; - this.paragrahStyleChanged = function(e) { - var i, item, items, j, len, v; - if (e.type !== "style") { - return; - } - items = me.basictool.styles.get("items"); - for (i = j = 0, len = items.length; j < len; i = ++j) { - v = items[i]; - if (v.name === e.styleName) { - item = i; - } - } - me.currentStyle = e.styleName; - return me.basictool.styles.set("selected", item); - }; - this.styleAdded = function(e) { - var dtext, item, items, j, len, stylens, v; - if (e.family !== 'paragraph') { - return; - } - items = me.basictool.styles.get("items"); - for (j = 0, len = items.length; j < len; j++) { - v = items[j]; - if (v.name === e.name) { - item = v; - } - } - if (item) { - return; - } - stylens = "urn:oasis:names:tc:opendocument:xmlns:style:1.0"; - el = me.editorSession.getParagraphStyleElement(e.name); - dtext = el.getAttributeNS(stylens, 'display-name'); - return me.basictool.styles.push({ - text: dtext, - name: e.name - }, true); - }; - //me.resource.formats.push {text: dtext, name:e.name} - this.updateSlider = function(v) { - var value, zlb; - value = Math.floor(v * 100); - me.basictool.zoom.set("value", value); - zlb = me.find("lbzoom"); - return zlb.set("text", value + "%"); - }; - //me.canvas.enableAnnotations true, true - return this.canvas.addListener("statereadychange", function() { - var op, viewOptions; - me.session = new ops.Session(me.canvas); - viewOptions = { - editInfoMarkersInitiallyVisible: false, - caretAvatarsInitiallyVisible: false, - caretBlinksOnRangeSelect: true - }; - me.editorSession = new OpenPage.EditorSession(me.session, me.userid, { - viewOptions: viewOptions, - directTextStylingEnabled: true, - directParagraphStylingEnabled: true, - paragraphStyleSelectingEnabled: true, - paragraphStyleEditingEnabled: true, - imageEditingEnabled: true, - hyperlinkEditingEnabled: true, - annotationsEnabled: true, - zoomingEnabled: true, - reviewModeEnabled: false - }); - me.initFontList(me.editorSession.getDeclaredFonts()); - me.initStyles(me.editorSession.getAvailableParagraphStyles()); - //fix annotation problem on canvas - //console.log $("office:body").css "background-color", "red" - // basic format - me.directFormattingCtl = me.editorSession.sessionController.getDirectFormattingController(); - me.directFormattingCtl.subscribe(gui.DirectFormattingController.textStylingChanged, me.textStylingChanged); - me.directFormattingCtl.subscribe(gui.DirectFormattingController.paragraphStylingChanged, me.textStylingChanged); - me.editorSession.subscribe(OpenPage.EditorSession.signalParagraphChanged, me.paragrahStyleChanged); - - // hyper link controller - me.hyperlinkController = me.editorSession.sessionController.getHyperlinkController(); - me.eventSubscriptions.addFrameSubscription(me.editorSession, OpenPage.EditorSession.signalCursorMoved, function() { - return me.updateHyperlinkButtons(); - }); - me.eventSubscriptions.addFrameSubscription(me.editorSession, OpenPage.EditorSession.signalParagraphChanged, function() { - return me.updateHyperlinkButtons(); - }); - me.eventSubscriptions.addFrameSubscription(me.editorSession, OpenPage.EditorSession.signalParagraphStyleModified, function() { - return me.updateHyperlinkButtons(); - }); - - //annotation controller - me.annotationController = me.editorSession.sessionController.getAnnotationController(); - - //image controller - me.imageController = me.editorSession.sessionController.getImageController(); - //imageController.subscribe(gui.ImageController.enabledChanged, enableButtons) - - //text controller - me.textController = me.editorSession.sessionController.getTextController(); - - // zoom controller - me.zoomHelper = me.editorSession.getOdfCanvas().getZoomHelper(); - me.zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, me.updateSlider); - me.updateSlider(me.zoomHelper.getZoomLevel()); - - // format controller - me.editorSession.subscribe(OpenPage.EditorSession.signalCommonStyleCreated, me.styleAdded); - me.editorSession.sessionController.setUndoManager(new gui.TrivialUndoManager()); - me.editorSession.sessionController.getUndoManager().subscribe(gui.UndoManager.signalDocumentModifiedChanged, me.documentChanged); - me.editorSession.sessionController.getMetadataController().subscribe(gui.MetadataController.signalMetadataChanged, me.metaChanged); - op = new ops.OpAddMember(); - op.init({ - memberid: me.userid, - setProperties: { - "fullName": me.userid, - "color": "blue" - } - }); - me.session.enqueue([op]); - me.editorSession.sessionController.insertLocalCursor(); - return me.editorSession.sessionController.startEditing(); - }); - } - - //console.log me.editorSession.getDeclaredFonts() - - initFontList(list) { - var j, l, len, len1, v; - for (j = 0, len = list.length; j < len; j++) { - v = list[j]; - v.text = v.name; - } - for (l = 0, len1 = list.length; l < len1; l++) { - v = list[l]; - this.resource.fonts.push({ - text: v.text, - name: v.family - }); - } - return this.basictool.fonts.set("items", list); - } - - initStyles(list) { - var j, l, len, len1, v; - list.unshift({ - name: "", - displayName: 'Default style' - }); - for (j = 0, len = list.length; j < len; j++) { - v = list[j]; - v.text = v.displayName; - } - for (l = 0, len1 = list.length; l < len1; l++) { - v = list[l]; - this.resource.formats.push({ - text: v.text, - name: v.name - }); - } - return this.basictool.styles.set("items", list); - } - - updateToolbar(changes) { - if (changes.hasOwnProperty('isBold')) { - // basic style - this.basictool.bold.set("selected", changes.isBold); - } - if (changes.hasOwnProperty('isItalic')) { - this.basictool.italic.set("selected", changes.isItalic); - } - if (changes.hasOwnProperty('hasUnderline')) { - this.basictool.underline.set("selected", changes.hasUnderline); - } - if (changes.hasOwnProperty('hasStrikeThrough')) { - this.basictool.strike.set("selected", changes.hasStrikeThrough); - } - if (changes.hasOwnProperty("fontSize")) { - this.basictool.fontsize.set("value", changes.fontSize); - } - if (changes.hasOwnProperty("fontName")) { - this.selectFont(changes.fontName); - } - if (changes.hasOwnProperty("isAlignedLeft")) { - //pharagraph style - this.basictool.al.set("selected", changes.isAlignedLeft); - } - if (changes.hasOwnProperty("isAlignedRight")) { - this.basictool.ar.set("selected", changes.isAlignedRight); - } - if (changes.hasOwnProperty("isAlignedCenter")) { - this.basictool.ac.set("selected", changes.isAlignedCenter); - } - if (changes.hasOwnProperty("isAlignedJustified")) { - return this.basictool.aj.set("selected", changes.isAlignedJustified); - } - } - - updateHyperlinkButtons(e) { - var selectedLinks; - selectedLinks = this.editorSession.getSelectedHyperlinks(); - return this.basictool.unlink.set("enable", selectedLinks.length > 0); - } - - selectFont(name) { - var i, item, items, j, len, v; - items = this.basictool.fonts.get("items"); - for (i = j = 0, len = items.length; j < len; i = ++j) { - v = items[i]; - if (v.name === name) { - item = i; - } - } - return this.basictool.fonts.set("selected", item); - } - - editorFocus() { - return this.editorSession.sessionController.getEventManager().focus(); - } - - bold(e) { - //console.log @, e - return this.directFormattingCtl.setBold(!this.basictool.bold.get("selected")); - } - - italic(e) { - return this.directFormattingCtl.setItalic(!this.basictool.italic.get("selected")); - } - - underline(e) { - return this.directFormattingCtl.setHasUnderline(!this.basictool.underline.get("selected")); - } - - strike(e) { - return this.directFormattingCtl.setHasStrikethrough(!this.basictool.strike.get("selected")); - } - - fonts(e) { - return this.directFormattingCtl.setFontName(e.data.name); - } - - fontsize(e) { - return this.directFormattingCtl.setFontSize(e); - } - - al(e) { - return this.directFormattingCtl.alignParagraphLeft(); - } - - ar(e) { - return this.directFormattingCtl.alignParagraphRight(); - } - - ac(e) { - return this.directFormattingCtl.alignParagraphCenter(); - } - - note(e) { - return this.annotationController.addAnnotation(); - } - - aj(e) { - return this.directFormattingCtl.alignParagraphJustified(); - } - - indent(e) { - return this.directFormattingCtl.indent(); - } - - outdent(e) { - return this.directFormattingCtl.outdent(); - } - - link(e) { - var data, linkTarget, linksInSelection, me, selection, textSerializer; - // get the link first - me = this; - textSerializer = new odf.TextSerializer(); - selection = this.editorSession.getSelectedRange(); - linksInSelection = this.editorSession.getSelectedHyperlinks(); - linkTarget = linksInSelection[0] ? odf.OdfUtils.getHyperlinkTarget(linksInSelection[0]) : "http://"; - data = { - link: linkTarget, - text: "", - readonly: true, - action: "new" - }; - if (selection && selection.collapsed && linksInSelection.length === 1) { - // selection is collapsed within a single link - // text in this case is read only - data.text = textSerializer.writeToString(linksInSelection[0]); - data.action = "edit"; - } else if (selection && !selection.collapsed) { - // user select part of link or a block of text - // user convert a selection to a link - data.text = textSerializer.writeToString(selection.cloneContents()); - } else { - data.readonly = false; - } - return this.openDialog(new HyperLinkDialog(), function(d) { - var selectedLinkRange, selectionController; - selectionController = me.editorSession.sessionController.getSelectionController(); - if (d.readonly) { - // edit the existing link - if (d.action === "edit") { - selectedLinkRange = selection.cloneRange(); - selectedLinkRange.selectNode(linksInSelection[0]); - selectionController.selectRange(selectedLinkRange, true); - } - me.hyperlinkController.removeHyperlinks(); - return me.hyperlinkController.addHyperlink(d.link); - } else { - me.hyperlinkController.addHyperlink(d.link, d.text); - linksInSelection = me.editorSession.getSelectedHyperlinks(); - selectedLinkRange = selection.cloneRange(); - selectedLinkRange.selectNode(linksInSelection[0]); - return selectionController.selectRange(selectedLinkRange, true); - } - }, "__(Insert/edit link)", data); - } - - unlink(e) { - return this.hyperlinkController.removeHyperlinks(); - } - - undo(e) { - return this.editorSession.undo(); - } - - redo(e) { - return this.editorSession.redo(); - } - - pathAsDataURL(p) { - return new Promise(function(resolve, error) { - var fp; - fp = p.asFileHandler(); - return fp.read(function(data) { - var blob, reader; - blob = new Blob([data], { - type: fp.info.mime - }); - reader = new FileReader(); - reader.onloadend = function() { - if (reader.readyState !== 2) { - return error(p); - } - return resolve({ - data: reader.result, - fp: fp - }); - }; - return reader.readAsDataURL(blob); - }, "binary"); - }); - } - - /* - if not isText - - else - fp.read (data) -> - * convert to base64 - b64 = btoa data - dataurl = "data:#{fp.info.mime};base64," + b64 - resolve { reader: {result: dataurl}, fp:fp } - */ - image(e) { - var me; - me = this; - return this.openDialog("FileDiaLog", function(d, n, p) { - return me.pathAsDataURL(p).then(function(r) { - var hiddenImage; - hiddenImage = new Image(); - hiddenImage.style.position = "absolute"; - hiddenImage.style.left = "-99999px"; - document.body.appendChild(hiddenImage); - hiddenImage.onload = function() { - var content; - content = r.data.substring(r.data.indexOf(",") + 1); - //insert image - me.textController.removeCurrentSelection(); - me.imageController.insertImage(r.fp.info.mime, content, hiddenImage.width, hiddenImage.height); - return document.body.removeChild(hiddenImage); - }; - return hiddenImage.src = r.data; - }).catch(function() { - return me.error(__("Couldnt load image {0}", p)); - }); - }, __("Select image file"), { - mimes: ["image/.*"] - }); - } - - styles(e) { - if (e.data.name === this.currentStyle) { - return; - } - return this.editorSession.setCurrentParagraphStyle(e.data.name); - } - - zoom(e) { - //console.log "zooming", e - if (!this.zoomHelper) { - return; - } - return this.zoomHelper.setZoomLevel(e / 100.0); - } - - format(e) { - return this.openDialog(new FormatDialog(), function(d) {}, __("Add/Modify paragraph format"), this.resource); - } - - closeDocument(f) { - var me, op; - // finish editing - if (!(this.editorSession && this.session)) { - return; - } - me = this; - this.eventSubscriptions.unsubscribeAll(); - this.editorSession.sessionController.endEditing(); - this.editorSession.sessionController.removeLocalCursor(); - // remove user - op = new ops.OpRemoveMember(); - op.init({ - memberid: this.userid - }); - this.session.enqueue([op]); - // close the session - return this.session.close(function(e) { - if (e) { - return me.error(__("Cannot close session {0}", e)); - } - me.editorSession.sessionController.getMetadataController().unsubscribe(gui.MetadataController.signalMetadataChanged, me.metaChanged); - me.editorSession.sessionController.getUndoManager().unsubscribe(gui.UndoManager.signalDocumentModifiedChanged, me.documentChanged); - me.directFormattingCtl.unsubscribe(gui.DirectFormattingController.textStylingChanged, me.textStylingChanged); - me.directFormattingCtl.unsubscribe(gui.DirectFormattingController.paragraphStylingChanged, me.textStylingChanged); - me.editorSession.unsubscribe(OpenPage.EditorSession.signalParagraphChanged, me.paragrahStyleChanged); - me.zoomHelper.unsubscribe(gui.ZoomHelper.signalZoomChanged, me.updateSlider); - me.editorSession.unsubscribe(OpenPage.EditorSession.signalCommonStyleCreated, me.styleAdded); - // destry editorSession - return me.editorSession.destroy(function(e) { - if (e) { - return me.error(__("Cannot destroy editor session {0}", e)); - } - me.editorSession = void 0; - // destroy session - return me.session.destroy(function(e) { - if (e) { - return me.error(__("Cannot destroy document session {0}", e)); - } - core.Async.destroyAll([me.canvas.destroy], function(e) { - if (e) { - return me.error(__("Cannot destroy canvas {0}", e)); - } - me.notify("Document closed"); - if (f) { - return f(); - } - }); - me.session = void 0; - me.annotationController = void 0; - me.directFormattingCtl = void 0; - me.textController = void 0; - me.imageController = void 0; - me.ZoomHelper = void 0; - me.metaChanged = void 0; - me.documentChanged = void 0; - me.textStylingChanged = void 0; - me.paragrahStyleChanged = void 0; - me.updateSlider = void 0; - me.styleAdded = void 0; - me.basictool.fonts.set("selected", -1); - return me.basictool.styles.set("selected", -1); - }); - }); - }); - } - - - cleanup(e) { - var me; - me = this; - if (this.editorSession) { - e.preventDefault(); - return me.closeDocument(function() { - return me.quit(); - }); - } - } - - }; - - this.OS.register("OpenPage", OpenPage); - - HyperLinkDialog = class HyperLinkDialog extends this.OS.GUI.BasicDialog { - constructor() { - super("HyperLinkDialog", { - tags: [ - { - tag: "afx-label", - att: 'text="__(Text)" data-height="23" class="header"' - }, - { - tag: "input", - att: 'data-height="30"' - }, - { - tag: "afx-label", - att: 'text="__(Link)" data-height="23" class="header"' - }, - { - tag: "input", - att: 'data-height="30"' - }, - { - tag: "div", - att: ' data-height="5"' - } - ], - width: 350, - height: 150, - resizable: false, - buttons: [ - { - label: "Ok", - onclick: function(d) { - var data; - data = { - text: (d.find("content1")).value, - link: (d.find("content3")).value, - readonly: d.data.readonly, - action: d.data.action - }; - if (d.handler) { - d.handler(data); - } - return d.quit(); - } - }, - { - label: "__(Cancel)", - onclick: function(d) { - return d.quit(); - } - } - ], - filldata: function(d) { - if (!d.data) { - return; - } - (d.find("content1")).value = d.data.text; - (d.find("content3")).value = d.data.link; - return $(d.find("content1")).prop('disabled', d.data.readonly); - } - }); - } - - }; - - FormatDialog = class FormatDialog extends this.OS.GUI.BaseDialog { - constructor() { - super("FormatDialog"); - } - - init() { - return this._gui.htmlToScheme(FormatDialog.scheme, this, this.host); - } - - main() { - this.ui = { - aligment: { - left: this.find("swleft"), - right: this.find("swright"), - center: this.find("swcenter"), - justify: this.find("swjustify") - }, - spacing: { - left: this.find("spnleft"), - right: this.find("spnright"), - top: this.find("spntop"), - bottom: this.find("spnbottom"), - lineheight: this.find("spnlheight") - }, - padding: { - left: this.find("pspnleft"), - right: this.find("pspnright"), - top: this.find("pspntop"), - bottom: this.find("pspnbottom") - }, - style: { - bold: this.find("swbold"), - italic: this.find("switalic"), - underline: this.find("swunderline"), - color: this.find("txtcolor"), - bgcolor: this.find("bgcolor") - }, - font: { - family: this.find("lstfont"), - size: this.find("spnfsize") - }, - formats: this.find("lstformats") - }; - this.initStyleObject(); - this.preview = ($(this.find("preview")).find("p"))[0]; - $(this.preview).css("padding", "0").css("margin", "0"); - return this.initUIEvent(); - } - - //@previewStyle() - initStyleObject() { - // init the format object - return this.currentStyle = { - aligment: this._api.switcher("left", "right", "center", "justify"), - spacing: { - left: 0, - top: 0, - right: 0, - bottom: 0, - lineheight: 0 - }, - padding: { - left: 0, - top: 0, - right: 0, - bottom: 0 - }, - style: { - bold: false, - italic: false, - underline: false, - color: void 0, - bgcolor: void 0 - }, - font: { - family: void 0, - size: 12 - } - }; - } - - initUIEvent() { - var k, me, ref, ref1, ref2, ref3, set, v; - me = this; - set = function(e, o, k, f) { - return me.ui[o][k].set(e, function(r) { - var v; - v = r; - if (f) { - v = f(r); - } - me.currentStyle[o][k] = v; - return me.previewStyle(); - }); - }; - ref = this.ui.aligment; - for (k in ref) { - v = ref[k]; - set("onchange", "aligment", k, (function(e) { - return e.data; - })); - } - ref1 = this.ui.spacing; - for (k in ref1) { - v = ref1[k]; - set("onchange", "spacing", k); - } - ref2 = this.ui.padding; - for (k in ref2) { - v = ref2[k]; - set("onchange", "padding", k); - } - ref3 = this.ui.style; - for (k in ref3) { - v = ref3[k]; - if (k !== "color" && k !== "bgcolor") { - set("onchange", "style", k, (function(e) { - return e.data; - })); - } - } - set("onchange", "font", "size"); - $(this.ui.style.color).click(function(e) { - return me.openDialog("ColorPickerDialog", function(d) { - me.currentStyle.style.color = d; - return me.previewStyle(); - }); - }); - $(this.ui.style.bgcolor).click(function(e) { - return me.openDialog("ColorPickerDialog", function(d) { - me.currentStyle.style.bgcolor = d; - return me.previewStyle(); - }); - }); - if (this.data && this.data.fonts) { - //font - this.ui.font.family.set("items", this.data.fonts); - } - set("onlistselect", "font", "family", (function(e) { - return e.data; - })); - //format list - this.ui.formats.set("selected", -1); - if (this.data && this.data.formats) { - this.ui.formats.set("items", this.data.formats); - } - this.ui.formats.set("onlistselect", function(e) { - return me.fromODFStyleFormat(e.data); - }); - this.ui.formats.set("selected", 0); - (this.find("btok")).set("onbtclick", function(e) { - return me.saveCurrentStyle(); - }); - (this.find("btx")).set("onbtclick", function(e) { - return me.quit(); - }); - return (this.find("bt-clone")).set("onbtclick", function(e) { - return me.clone(); - }); - } - - clone() { - var me, selected; - me = this; - selected = this.ui.formats.get("selected"); - if (!selected) { - return; - } - return this.openDialog("PromptDialog", function(d) { - var newstyle; - if (!(d && d.trim() !== "")) { - return me.notify(__("Abort: no style name is specified")); - } - newstyle = me.parent.editorSession.cloneParagraphStyle(selected.name, d); - me.ui.formats.push({ - text: d, - name: newstyle - }); - me.ui.formats.set("selected", (me.ui.formats.get('count')) - 1); - return me.notify(__("New style: {0} added", newstyle)); - }, __("Clone style: {0}", selected.text), { - label: __("New style name:") - }); - } - - saveCurrentStyle() { - var odfs, selected; - selected = this.ui.formats.get("selected"); - if (!selected) { - return; - } - odfs = { - "style:paragraph-properties": { - "fo:margin-top": this.currentStyle.spacing.top + "mm", - "fo:margin-left": this.currentStyle.spacing.left + "mm", - "fo:margin-bottom": this.currentStyle.spacing.bottom + "mm", - "fo:margin-right": this.currentStyle.spacing.right + "mm", - "fo:padding-top": this.currentStyle.padding.top + "mm", - "fo:padding-left": this.currentStyle.padding.left + "mm", - "fo:padding-bottom": this.currentStyle.padding.bottom + "mm", - "fo:padding-right": this.currentStyle.padding.right + "mm", - "fo:line-height": this.currentStyle.spacing.lineheight > 0 ? this.currentStyle.spacing.lineheight + "mm" : "normal", - "fo:text-align": this.currentStyle.aligment.selected || "left" - }, - "style:text-properties": { - "fo:font-weight": this.currentStyle.style.bold ? "bold" : "normal", - "fo:font-style": this.currentStyle.style.italic ? "italic" : "normal", - "style:text-underline-style": this.currentStyle.style.underline ? "solid" : "none", - "fo:font-size": this.currentStyle.font.size + "pt", - "fo:font-name": this.currentStyle.font.family.text, - "fo:color": this.currentStyle.style.color ? this.currentStyle.style.color.hex : "#000000", - "fo:background-color": this.currentStyle.style.bgcolor ? this.currentStyle.style.bgcolor.hex : "transparent" - } - }; - this.parent.editorSession.updateParagraphStyle(selected.name, odfs); - return this.notify(__("Paragraph format [{0}] is saved", selected.text)); - } - - fromODFStyleFormat(odfs) { - var cssUnits, findFont, me, style; - me = this; - this.initStyleObject(); - cssUnits = new core.CSSUnits(); - findFont = function(name) { - var item, items, j, len, v; - items = me.ui.font.family.get("items"); - for (j = 0, len = items.length; j < len; j++) { - v = items[j]; - if (v.text === name) { - item = v; - } - } - if (!item) { - return void 0; - } - return item; - }; - // spacing - style = this.parent.editorSession.getParagraphStyleAttributes(odfs.name)['style:paragraph-properties']; - if (style) { - this.currentStyle.spacing.top = cssUnits.convertMeasure(style['fo:margin-top'], 'mm') || 0; - this.currentStyle.spacing.left = cssUnits.convertMeasure(style['fo:margin-left'], 'mm') || 0; - this.currentStyle.spacing.right = cssUnits.convertMeasure(style['fo:margin-right'], 'mm') || 0; - this.currentStyle.spacing.bottom = cssUnits.convertMeasure(style['fo:margin-bottom'], 'mm') || 0; - this.currentStyle.padding.top = cssUnits.convertMeasure(style['fo:padding-top'], 'mm') || 0; - this.currentStyle.padding.left = cssUnits.convertMeasure(style['fo:padding-left'], 'mm') || 0; - this.currentStyle.padding.right = cssUnits.convertMeasure(style['fo:padding-right'], 'mm') || 0; - this.currentStyle.padding.bottom = cssUnits.convertMeasure(style['fo:padding-bottom'], 'mm') || 0; - this.currentStyle.spacing.lineheight = cssUnits.convertMeasure(style['fo:line-height'], 'mm') || 4.2; // 1em = 4,2175176mm - if (style['fo:text-align']) { - this.currentStyle.aligment[style['fo:text-align']] = true; - } - } - style = this.parent.editorSession.getParagraphStyleAttributes(odfs.name)['style:text-properties']; - if (style) { - this.currentStyle.style.bold = style['fo:font-weight'] === 'bold'; - this.currentStyle.style.italic = style['fo:font-style'] === 'italic'; - if (style['style:text-underline-style'] && style['style:text-underline-style'] !== 'none') { - this.currentStyle.style.underline = true; - } - this.currentStyle.font.size = parseFloat(style['fo:font-size']); - this.currentStyle.font.family = findFont(style['style:font-name']); - if (style['fo:color']) { - this.currentStyle.style.color = { - hex: style['fo:color'] - }; - } - if (style['fo:background-color']) { - this.currentStyle.style.bgcolor = { - hex: style['fo:background-color'] - }; - } - } - return this.previewStyle(); - } - - previewStyle() { - var el, i, item, items, j, len, v; - //console.log "previewing" - // reset ui - this.ui.aligment.left.set("swon", this.currentStyle.aligment.left); - this.ui.aligment.right.set("swon", this.currentStyle.aligment.right); - this.ui.aligment.center.set("swon", this.currentStyle.aligment.center); - this.ui.aligment.justify.set("swon", this.currentStyle.aligment.justify); - this.ui.spacing.left.set("value", this.currentStyle.spacing.left); - this.ui.spacing.right.set("value", this.currentStyle.spacing.right); - this.ui.spacing.top.set("value", this.currentStyle.spacing.top); - this.ui.spacing.bottom.set("value", this.currentStyle.spacing.bottom); - this.ui.spacing.lineheight.set("value", this.currentStyle.spacing.lineheight); - this.ui.padding.left.set("value", this.currentStyle.padding.left); - this.ui.padding.right.set("value", this.currentStyle.padding.right); - this.ui.padding.top.set("value", this.currentStyle.padding.top); - this.ui.padding.bottom.set("value", this.currentStyle.padding.bottom); - this.ui.style.bold.set("swon", this.currentStyle.style.bold); - this.ui.style.italic.set("swon", this.currentStyle.style.italic); - this.ui.style.underline.set("swon", this.currentStyle.style.underline); - this.ui.font.size.set("value", this.currentStyle.font.size); - - //console.log @currentStyle - if (this.currentStyle.font.family) { - items = this.ui.font.family.get("items"); - for (i = j = 0, len = items.length; j < len; i = ++j) { - v = items[i]; - if (v.text === this.currentStyle.font.family.text) { - item = i; - } - } - if (item >= 0) { - this.ui.font.family.set("selected", item); - } - } - $(this.ui.style.color).css("background-color", this.currentStyle.style.color ? this.currentStyle.style.color.hex : "#000000"); - $(this.ui.style.bgcolor).css("background-color", this.currentStyle.style.bgcolor ? this.currentStyle.style.bgcolor.hex : "white"); - // set the preview css - el = $(this.preview); - el.css("text-align", this.currentStyle.aligment.selected ? this.currentStyle.aligment.selected : "left"); - el.css("margin-left", this.currentStyle.spacing.left + "mm"); - el.css("margin-right", this.currentStyle.spacing.right + "mm"); - el.css("margin-top", this.currentStyle.spacing.top + "mm"); - el.css("margin-bottom", this.currentStyle.spacing.bottom + "mm"); - el.css("padding-left", this.currentStyle.padding.left + "mm"); - el.css("padding-right", this.currentStyle.padding.right + "mm"); - el.css("padding-top", this.currentStyle.padding.top + "mm"); - el.css("padding-bottom", this.currentStyle.padding.bottom + "mm"); - el.css("font-weight", "normal").css("font-style", "normal").css("text-decoration", "none").css("line-height", "normal"); - if (this.currentStyle.style.bold) { - el.css("font-weight", "bold"); - } - if (this.currentStyle.style.italic) { - el.css("font-style", "italic"); - } - if (this.currentStyle.style.underline) { - el.css("text-decoration", "underline"); - } - el.css("color", this.currentStyle.style.color ? this.currentStyle.style.color.hex : "#000000"); - el.css("background-color", this.currentStyle.style.bgcolor ? this.currentStyle.style.bgcolor.hex : "transparent"); - el.css("font-size", this.currentStyle.font.size + "pt"); - if (this.currentStyle.font.family) { - el.css("font-family", this.currentStyle.font.family.name); - } - if (this.currentStyle.spacing.lineheight > 0) { - return el.css("line-height", this.currentStyle.spacing.lineheight + "mm"); - } - } - - }; - - FormatDialog.scheme = ` - -
- -
- -
- -
-
- - -
- - - - - - - - -
-
-
- -
- -
- - -
- - -
- - -
- - -
-
-
- -
- -
- - -
- - -
- - -
- - -
-
- -
- -
- -
- - - - - - - -
-
- -
-
-
-
- -
- -
- -
- - -
- - -
-
-
- -
- -
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.

-
-
-
- -
- -
- -
- -
-
-
-
`; - -}).call(this); - +(function(){var e,t,n;n=class n extends this.OS.application.BaseApplication{constructor(e){super("OpenPage",e)}main(){return this.eventSubscriptions=new core.EventSubscriptions,this.initToolbox(),this.userid=`${this.systemsetting.user.username}@${this.pid}`,this.currentStyle="",this.args&&this.args.length>0?this.open(this.args[0].path):this.newdoc(),this.resource={fonts:[],formats:[]},this.bindKey("ALT-N",()=>this.actionFile(this.name+"-New")),this.bindKey("ALT-O",()=>this.actionFile(this.name+"-Open")),this.bindKey("CTRL-S",()=>this.actionFile(this.name+"-Save")),this.bindKey("ALT-W",()=>this.actionFile(this.name+"-Saveas"))}menu(){return[{text:"__(File)",nodes:[{text:"__(New)",dataid:this.name+"-New",shortcut:"A-N"},{text:"__(Open)",dataid:this.name+"-Open",shortcut:"A-O"},{text:"__(Save)",dataid:this.name+"-Save",shortcut:"C-S"},{text:"__(Save as)",dataid:this.name+"-Saveas",shortcut:"A-W"}],onchildselect:e=>this.actionFile(e.data.item.data.dataid)}]}actionFile(e){var t;switch(t=()=>this.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.currfile.setPath(`${t.path}/${e.name}`),this.save()}),e){case this.name+"-Open":return this.openDialog("FileDialog",{title:__("Open file"),mimes:this.meta().mimes}).then(e=>this.open(e.file.path));case this.name+"-Save":return this.currfile.basename?this.save():t();case this.name+"-Saveas":return t();case this.name+"-New":return this.newdoc()}}newdoc(){var e;return e=this.meta().path+"/blank.odt",this.open(e,!0)}open(e,t){return this.pathAsDataURL(e).then(n=>(this.editorSession&&this.closeDocument(),this.initCanvas(),new odf.OdfContainer(n.data,n=>(this.canvas.setOdfContainer(n,!1),t?this.currfile="Untitled".asFileHandle():(this.currfile?this.currfile.setPath(e):this.currfile=e.asFileHandle(),this.scheme.apptitle=this.currfile.basename,this.notify(__("File {0} opened",e))))))).catch(e=>this.error(__("Problem read file {0}",e.toString()),e))}save(){var e;if(this.editorSession)return(e=this.canvas.odfContainer())?e.createByteArray(e=>(this.currfile.cache=new Blob([e],{type:"application/vnd.oasis.opendocument.text"}),this.currfile.write("application/vnd.oasis.opendocument.text").then(e=>(this.notify(__("File {0} saved",this.currfile.basename)),this.scheme.apptitle=this.currfile.basename,this.currfile.dirty=!1,this.editorFocus())).catch(e=>this.error(__("Cannot save file: {0}",e.toString()),e))),e=>this.error(__("Cannot create byte array from container: {0}",e.toString()||""),e)):this.error(__("No document container found"))}initToolbox(){var e,t,n;for(t in this.basictool={undo:this.find("btundo"),redo:this.find("btredo"),bold:this.find("btbold"),italic:this.find("btitalic"),underline:this.find("btunderline"),strike:this.find("btstrike"),note:this.find("btnote"),link:this.find("btlink"),unlink:this.find("btunlink"),image:this.find("btimage"),ac:this.find("btac"),al:this.find("btal"),ar:this.find("btar"),aj:this.find("btaj"),indent:this.find("btindent"),outdent:this.find("btoutdent"),fonts:this.find("font-list"),fontsize:this.find("font-size"),styles:this.find("format-list"),zoom:this.find("slzoom"),format:this.find("btformat")},e=(e,t)=>t["fonts"===e||"styles"===e?"onlistselect":"fontsize"===e||"zoom"===e?"onvaluechange":"onbtclick"]=t=>{if(this.directFormattingCtl&&this[e])return this[e](t),this.editorFocus()},n=this.basictool)e(t,n[t]);return this.find("btzoomfix").onbtclick=e=>this.zoom({data:100}),this.basictool.zoom.onvaluechanging=e=>this.find("lbzoom").text=Math.floor(e.data)+"%"}initCanvas(){var e;return(e=this.find("odfcanvas")).setAttribute("translate","no"),e.classList.add("notranslate"),this.canvas=new odf.OdfCanvas(e),this.documentChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.metaChanged=e=>{if(!this.currfile.dirty)return this.currfile.dirty=!0,this.scheme.apptitle=this.currfile.basename+"*"},this.textStylingChanged=e=>this.updateToolbar(e),this.paragrahStyleChanged=e=>{var t,n,i,o,r;if("style"===e.type){for(t=o=0,r=(i=this.basictool.styles.data).length;o{var n,i,o,r,a,s;if("paragraph"===t.family){for(r=0,a=(o=this.basictool.styles.data).length;r{var t;return t=Math.floor(100*e),this.basictool.zoom.value=t,this.find("lbzoom").text=t+"%"},this.canvas.enableAnnotations(!0,!0),this.canvas.addListener("statereadychange",()=>{var e,t;return this.session=new ops.Session(this.canvas),t={editInfoMarkersInitiallyVisible:!1,caretAvatarsInitiallyVisible:!1,caretBlinksOnRangeSelect:!0},this.editorSession=new n.EditorSession(this.session,this.userid,{viewOptions:t,directTextStylingEnabled:!0,directParagraphStylingEnabled:!0,paragraphStyleSelectingEnabled:!0,paragraphStyleEditingEnabled:!0,imageEditingEnabled:!0,hyperlinkEditingEnabled:!0,annotationsEnabled:!0,zoomingEnabled:!0,reviewModeEnabled:!1}),this.initFontList(this.editorSession.getDeclaredFonts()),this.initStyles(this.editorSession.getAvailableParagraphStyles()),this.directFormattingCtl=this.editorSession.sessionController.getDirectFormattingController(),this.directFormattingCtl.subscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.subscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.subscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.hyperlinkController=this.editorSession.sessionController.getHyperlinkController(),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalCursorMoved,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphChanged,()=>this.updateHyperlinkButtons()),this.eventSubscriptions.addFrameSubscription(this.editorSession,n.EditorSession.signalParagraphStyleModified,()=>this.updateHyperlinkButtons()),this.annotationController=this.editorSession.sessionController.getAnnotationController(),this.imageController=this.editorSession.sessionController.getImageController(),this.textController=this.editorSession.sessionController.getTextController(),this.zoomHelper=this.editorSession.getOdfCanvas().getZoomHelper(),this.zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.updateSlider(this.zoomHelper.getZoomLevel()),this.editorSession.subscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.sessionController.setUndoManager(new gui.TrivialUndoManager),this.editorSession.sessionController.getUndoManager().subscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.editorSession.sessionController.getMetadataController().subscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),(e=new ops.OpAddMember).init({memberid:this.userid,setProperties:{fullName:this.userid,color:"blue"}}),this.session.enqueue([e]),this.editorSession.sessionController.insertLocalCursor(),this.editorSession.sessionController.startEditing(),this.fontsize({data:this.basictool.fontsize.value})})}initFontList(e){var t,n,i,o,r;for(t=0,i=e.length;t0}selectFont(e){var t,n,i,o,r;for(t=o=0,r=(i=this.basictool.fonts.data).length;o{var t,n;return n=this.editorSession.sessionController.getSelectionController(),e.readonly?("edit"===e.action&&((t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0)),this.hyperlinkController.removeHyperlinks(),this.hyperlinkController.addHyperlink(e.link)):(this.hyperlinkController.addHyperlink(e.link,e.text),i=this.editorSession.getSelectedHyperlinks(),(t=o.cloneRange()).selectNode(i[0]),n.selectRange(t,!0))})}unlink(e){return this.hyperlinkController.removeHyperlinks()}undo(e){return this.editorSession.undo()}redo(e){return this.editorSession.redo()}pathAsDataURL(e){return new Promise((t,n)=>{var i;return(i=e.asFileHandle()).read("binary").then(o=>{var r,a;return r=new Blob([o],{type:i.info.mime}),(a=new FileReader).onloadend=()=>2!==a.readyState?n(this.throwe(__("Unable to load file {0}",e))):t({data:a.result,fp:i}),a.readAsDataURL(r)}).catch(e=>n(__e(e)))})}image(e){return this.openDialog("FileDialog",{title:__("Select image file"),mimes:["image/.*"]}).then(e=>{var t;return t=e.file.path,this.pathAsDataURL(t).then(e=>{var t;return(t=new Image).style.position="absolute",t.style.left="-99999px",document.body.appendChild(t),t.onload=()=>{var n;return n=e.data.substring(e.data.indexOf(",")+1),this.textController.removeCurrentSelection(),this.imageController.insertImage(e.fp.info.mime,n,t.width,t.height),document.body.removeChild(t)},t.src=e.data}).catch(e=>this.error(__("Couldnt load image {0}",t),e))})}styles(e){if(e.data.item.data.name!==this.currentStyle)return this.editorSession.setCurrentParagraphStyle(e.data.item.data.name)}zoom(e){if(this.zoomHelper)return this.zoomHelper.setZoomLevel(e.data/100)}format(t){return this.openDialog(new e,{title:__("Add/Modify paragraph format"),data:this.resource}).then(e=>{})}closeDocument(e){var t;if(this.editorSession&&this.session)return this.eventSubscriptions.unsubscribeAll(),this.editorSession.sessionController.endEditing(),this.editorSession.sessionController.removeLocalCursor(),(t=new ops.OpRemoveMember).init({memberid:this.userid}),this.session.enqueue([t]),this.session.close(t=>t?this.error(__("Cannot close session {0}",t.toString()),t):(this.editorSession.sessionController.getMetadataController().unsubscribe(gui.MetadataController.signalMetadataChanged,this.metaChanged),this.editorSession.sessionController.getUndoManager().unsubscribe(gui.UndoManager.signalDocumentModifiedChanged,this.documentChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.textStylingChanged,this.textStylingChanged),this.directFormattingCtl.unsubscribe(gui.DirectFormattingController.paragraphStylingChanged,this.textStylingChanged),this.editorSession.unsubscribe(n.EditorSession.signalParagraphChanged,this.paragrahStyleChanged),this.zoomHelper.unsubscribe(gui.ZoomHelper.signalZoomChanged,this.updateSlider),this.editorSession.unsubscribe(n.EditorSession.signalCommonStyleCreated,this.styleAdded),this.editorSession.destroy(t=>t?this.error(__("Cannot destroy editor session {0}",t.toString()),t):(this.editorSession=void 0,this.session.destroy(t=>t?this.error(__("Cannot destroy document session {0}",t.toString()),t):(core.Async.destroyAll([this.canvas.destroy],t=>t?this.error(__("Cannot destroy canvas {0}",t.toString()),t):(this.notify("Document closed"),e?e():void 0)),this.session=void 0,this.annotationController=void 0,this.directFormattingCtl=void 0,this.textController=void 0,this.imageController=void 0,this.ZoomHelper=void 0,this.metaChanged=void 0,this.documentChanged=void 0,this.textStylingChanged=void 0,this.paragrahStyleChanged=void 0,this.updateSlider=void 0,this.styleAdded=void 0,this.basictool.fonts.selected=-1,this.basictool.styles.selected=-1))))))}cleanup(e){if(this.editorSession)return e.preventDefault(),this.closeDocument(()=>this.quit())}},this.OS.register("OpenPage",n),(t=class e extends this.OS.GUI.BasicDialog{constructor(){super("HyperLinkDialog",e.scheme)}main(){var e,t;return super.main(),t=this.find("txtText"),e=this.find("txtLink"),this.data&&this.data.data&&(t.value=this.data.data.text,e.value=this.data.data.link,$(t).prop("disabled",this.data.data.readonly)),this.find("btnCancel").onbtclick=e=>this.quit(),this.find("btnOk").onbtclick=n=>{var i;return i={text:t.value,link:e.value,readonly:this.data.data.readonly,action:this.data.data.action},this.handle&&this.handle(i),this.quit()}}}).scheme='\n \n \n
\n \n
\n \n \n \n \n
\n \n
\n \n \n
\n \n \n
\n \n \n',(e=class e extends this.OS.GUI.BasicDialog{constructor(){super("FormatDialog",e.scheme)}main(){return super.main(),this.ui={aligment:{left:this.find("swleft"),right:this.find("swright"),center:this.find("swcenter"),justify:this.find("swjustify")},spacing:{left:this.find("spnleft"),right:this.find("spnright"),top:this.find("spntop"),bottom:this.find("spnbottom"),lineheight:this.find("spnlheight")},padding:{left:this.find("pspnleft"),right:this.find("pspnright"),top:this.find("pspntop"),bottom:this.find("pspnbottom")},style:{bold:this.find("swbold"),italic:this.find("switalic"),underline:this.find("swunderline"),color:this.find("txtcolor"),bgcolor:this.find("bgcolor")},font:{family:this.find("lstfont"),size:this.find("spnfsize")},formats:this.find("lstformats")},this.initStyleObject(),this.preview=$(this.find("preview")).find("p")[0],$(this.preview).css("padding","0").css("margin","0"),this.initUIEvent()}initStyleObject(){return this.currentStyle={aligment:this._api.switcher("left","right","center","justify"),spacing:{left:0,top:0,right:0,bottom:0,lineheight:0},padding:{left:0,top:0,right:0,bottom:0},style:{bold:!1,italic:!1,underline:!1,color:void 0,bgcolor:void 0},font:{family:void 0,size:12}}}initUIEvent(){var e,t,n,i,o,r;for(e in r=(e,t,n,i)=>this.ui[t][n][e]=e=>{var o;return o=e,i&&(o=i(e)),this.currentStyle[t][n]=o,this.previewStyle()},t=this.ui.aligment)t[e],r("onswchange","aligment",e,e=>e.data);for(e in n=this.ui.spacing)n[e],r("onvaluechange","spacing",e,e=>e.data);for(e in i=this.ui.padding)i[e],r("onvaluechange","padding",e,e=>e.data);for(e in o=this.ui.style)o[e],"color"!==e&&"bgcolor"!==e&&r("onswchange","style",e,e=>e.data);return r("onvaluechange","font","size"),$(this.ui.style.color).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.color=e,this.previewStyle()))),$(this.ui.style.bgcolor).click(e=>this.openDialog("ColorPickerDialog").then(e=>(this.currentStyle.style.bgcolor=e,this.previewStyle()))),this.data.data&&this.data.data.fonts&&(this.ui.font.family.data=this.data.data.fonts),r("onlistselect","font","family",e=>e.data.item.data),this.ui.formats.selected=-1,this.data.data&&this.data.data.formats&&(this.ui.formats.data=this.data.data.formats),this.ui.formats.onlistselect=e=>this.fromODFStyleFormat(e.data.item.data),this.ui.formats.selected=0,this.find("btok").onbtclick=e=>this.saveCurrentStyle(),this.find("btx").onbtclick=e=>this.quit(),this.find("bt-clone").onbtclick=e=>this.clone()}clone(){var e;if(e=this.ui.formats.selectedItem)return e=e.data,this.openDialog("PromptDialog",{title:__("Clone style: {0}",e.text),label:__("New style name:")}).then(t=>{var n;return t&&""!==t.trim()?(n=this.parent.editorSession.cloneParagraphStyle(e.name,t),this.ui.formats.push({text:t,name:n}),this.ui.formats.selected=this.ui.formats.data.length-1,this.notify(__("New style: {0} added",n))):this.notify(__("Abort: no style name is specified"))})}saveCurrentStyle(){var e,t;if(t=this.ui.formats.selectedItem)return t=t.data,e={"style:paragraph-properties":{"fo:margin-top":this.currentStyle.spacing.top+"mm","fo:margin-left":this.currentStyle.spacing.left+"mm","fo:margin-bottom":this.currentStyle.spacing.bottom+"mm","fo:margin-right":this.currentStyle.spacing.right+"mm","fo:padding-top":this.currentStyle.padding.top+"mm","fo:padding-left":this.currentStyle.padding.left+"mm","fo:padding-bottom":this.currentStyle.padding.bottom+"mm","fo:padding-right":this.currentStyle.padding.right+"mm","fo:line-height":this.currentStyle.spacing.lineheight>0?this.currentStyle.spacing.lineheight+"mm":"normal","fo:text-align":this.currentStyle.aligment.selected||"left"},"style:text-properties":{"fo:font-weight":this.currentStyle.style.bold?"bold":"normal","fo:font-style":this.currentStyle.style.italic?"italic":"normal","style:text-underline-style":this.currentStyle.style.underline?"solid":"none","fo:font-size":this.currentStyle.font.size+"pt","fo:font-name":this.currentStyle.font.family.text,"fo:color":this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000","fo:background-color":this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"}},this.parent.editorSession.updateParagraphStyle(t.name,e),this.notify(__("Paragraph format [{0}] is saved",t.text))}fromODFStyleFormat(e){var t,n,i;return this.initStyleObject(),t=new core.CSSUnits,n=e=>{var t,n,i,o,r;for(i=0,o=(n=this.ui.font.family.data).length;i=0&&(this.ui.font.family.selected=n)}if($(this.ui.style.color).css("background-color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),$(this.ui.style.bgcolor).css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),(e=$(this.preview)).css("text-align",this.currentStyle.aligment.selected?this.currentStyle.aligment.selected:"left"),e.css("margin-left",this.currentStyle.spacing.left+"mm"),e.css("margin-right",this.currentStyle.spacing.right+"mm"),e.css("margin-top",this.currentStyle.spacing.top+"mm"),e.css("margin-bottom",this.currentStyle.spacing.bottom+"mm"),e.css("padding-left",this.currentStyle.padding.left+"mm"),e.css("padding-right",this.currentStyle.padding.right+"mm"),e.css("padding-top",this.currentStyle.padding.top+"mm"),e.css("padding-bottom",this.currentStyle.padding.bottom+"mm"),e.css("font-weight","normal").css("font-style","normal").css("text-decoration","none").css("line-height","normal"),this.currentStyle.style.bold&&e.css("font-weight","bold"),this.currentStyle.style.italic&&e.css("font-style","italic"),this.currentStyle.style.underline&&e.css("text-decoration","underline"),e.css("color",this.currentStyle.style.color?this.currentStyle.style.color.hex:"#000000"),e.css("background-color",this.currentStyle.style.bgcolor?this.currentStyle.style.bgcolor.hex:"transparent"),e.css("font-size",this.currentStyle.font.size+"pt"),this.currentStyle.font.family&&e.css("font-family",this.currentStyle.font.family.name),this.currentStyle.spacing.lineheight>0)return e.css("line-height",this.currentStyle.spacing.lineheight+"mm")}}).scheme='\n \n
\n \n
\n \n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n
\n \n
\n \n
\n \n
\n \n \n
\n \n \n
\n
\n
\n \n
\n \n
\n
\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.

\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n
'}).call(this); /* This is a generated file. DO NOT EDIT. @@ -1326,672 +41,8 @@ @source: http://www.webodf.org/ @source: https://github.com/kogmbh/WebODF/ */ -var webodf_version="0.5.9";function Runtime(){}Runtime.prototype.getVariable=function(g){};Runtime.prototype.toJson=function(g){};Runtime.prototype.fromJson=function(g){};Runtime.prototype.byteArrayFromString=function(g,k){};Runtime.prototype.byteArrayToString=function(g,k){};Runtime.prototype.read=function(g,k,d,b){};Runtime.prototype.readFile=function(g,k,d){};Runtime.prototype.readFileSync=function(g,k){};Runtime.prototype.loadXML=function(g,k){};Runtime.prototype.writeFile=function(g,k,d){}; -Runtime.prototype.deleteFile=function(g,k){};Runtime.prototype.log=function(g,k){};Runtime.prototype.setTimeout=function(g,k){};Runtime.prototype.clearTimeout=function(g){};Runtime.prototype.libraryPaths=function(){};Runtime.prototype.currentDirectory=function(){};Runtime.prototype.setCurrentDirectory=function(g){};Runtime.prototype.type=function(){};Runtime.prototype.getDOMImplementation=function(){};Runtime.prototype.parseXML=function(g){};Runtime.prototype.exit=function(g){}; -Runtime.prototype.getWindow=function(){};Runtime.prototype.requestAnimationFrame=function(g){};Runtime.prototype.cancelAnimationFrame=function(g){};Runtime.prototype.assert=function(g,k){};var IS_COMPILED_CODE=!0; -Runtime.byteArrayToString=function(g,k){function d(b){var d="",r,q=b.length;for(r=0;rl?e.push(l):(r+=1,a=b[r],194<=l&&224>l?e.push((l&31)<<6|a&63):(r+=1,c=b[r],224<=l&&240>l?e.push((l&15)<<12|(a&63)<<6|c&63):(r+=1,m=b[r],240<=l&&245>l&&(l=(l&7)<<18|(a&63)<<12|(c&63)<<6|m&63,l-=65536,e.push((l>>10)+55296,(l&1023)+56320))))),1E3<=e.length&& -(d+=String.fromCharCode.apply(null,e),e.length=0);return d+String.fromCharCode.apply(null,e)}var f;"utf8"===k?f=b(g):("binary"!==k&&this.log("Unsupported encoding: "+k),f=d(g));return f};Runtime.getVariable=function(g){try{return eval(g)}catch(k){}};Runtime.toJson=function(g){return JSON.stringify(g)};Runtime.fromJson=function(g){return JSON.parse(g)};Runtime.getFunctionName=function(g){return void 0===g.name?(g=/function\s+(\w+)/.exec(g))&&g[1]:g.name}; -Runtime.assert=function(g,k){if(!g)throw this.log("alert","ASSERTION FAILED:\n"+k),Error(k);}; -function BrowserRuntime(){function g(b){var e=b.length,l,a,c=0;for(l=0;la&&(c+=1,l+=1);return c}function k(b,e,l){var a=b.length,c,m;e=new Uint8Array(new ArrayBuffer(e));l?(e[0]=239,e[1]=187,e[2]=191,m=3):m=0;for(l=0;lc?(e[m]=c,m+=1):2048>c?(e[m]=192|c>>>6,e[m+1]=128|c&63,m+=2):55040>=c||57344<=c?(e[m]=224|c>>>12&15,e[m+1]=128|c>>>6&63,e[m+2]=128|c&63,m+=3):(l+=1,c=(c-55296<<10|b.charCodeAt(l)-56320)+65536, -e[m]=240|c>>>18&7,e[m+1]=128|c>>>12&63,e[m+2]=128|c>>>6&63,e[m+3]=128|c&63,m+=4);return e}function d(b){var e=b.length,l=new Uint8Array(new ArrayBuffer(e)),a;for(a=0;aa.status||0===a.status?l(null):l("Status "+String(a.status)+": "+a.responseText||a.statusText):l("File "+b+" is empty."))};c=e.buffer&&!a.sendAsBinary?e.buffer:r.byteArrayToString(e,"binary");try{a.sendAsBinary?a.sendAsBinary(c):a.send(c)}catch(m){r.log("HUH? "+ -m+" "+e),l(m.message)}};this.deleteFile=function(b,e){var l=new XMLHttpRequest;l.open("DELETE",b,!0);l.onreadystatechange=function(){4===l.readyState&&(200>l.status&&300<=l.status?e(l.responseText):e(null))};l.send(null)};this.loadXML=function(b,e){var l=new XMLHttpRequest;l.open("GET",b,!0);l.overrideMimeType&&l.overrideMimeType("text/xml");l.onreadystatechange=function(){4===l.readyState&&(0!==l.status||l.responseText?200===l.status||0===l.status?e(null,l.responseXML):e(l.responseText,null):e("File "+ -b+" is empty.",null))};try{l.send(null)}catch(a){e(a.message,null)}};this.log=b;this.enableAlerts=!0;this.assert=Runtime.assert;this.setTimeout=function(b,e){return setTimeout(function(){b()},e)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(){};this.currentDirectory=function(){return""};this.type=function(){return"BrowserRuntime"};this.getDOMImplementation=function(){return window.document.implementation};this.parseXML= -function(b){return(new DOMParser).parseFromString(b,"text/xml")};this.exit=function(d){b("Calling exit with code "+String(d)+", but exit() is not implemented.")};this.getWindow=function(){return window};this.requestAnimationFrame=function(b){var e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,l=0;if(e)e.bind(window),l=e(b);else return setTimeout(b,15);return l};this.cancelAnimationFrame=function(b){var e=window.cancelAnimationFrame|| -window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame;e?(e.bind(window),e(b)):clearTimeout(b)}} -function NodeJSRuntime(){function g(b){var e=b.length,l,a=new Uint8Array(new ArrayBuffer(e));for(l=0;l").implementation} -function RhinoRuntime(){var g=this,k={},d=k.javax.xml.parsers.DocumentBuilderFactory.newInstance(),b,f,n="";d.setValidating(!1);d.setNamespaceAware(!0);d.setExpandEntityReferences(!1);d.setSchema(null);f=k.org.xml.sax.EntityResolver({resolveEntity:function(b,d){var f=new k.java.io.FileReader(d);return new k.org.xml.sax.InputSource(f)}});b=d.newDocumentBuilder();b.setEntityResolver(f);this.byteArrayFromString=function(b,d){var f,e=b.length,l=new Uint8Array(new ArrayBuffer(e));for(f=0;f>>18],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>12&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c& -63];h===b+1?(c=a[h]<<4,m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c&63],m+="=="):h===b&&(c=a[h]<<10|a[h+1]<<2,m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>12],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c&63],m+="=");return m}function d(a){a=a.replace(/[^A-Za-z0-9+\/]+/g, -"");var c=a.length,m=new Uint8Array(new ArrayBuffer(3*c)),b=a.length%4,d=0,l,e;for(l=0;l>16,m[d+1]=e>>8&255,m[d+2]=e&255,d+=3;c=3*c-[0,0,2,1][b];return m.subarray(0,c)}function b(a){var c,m,h=a.length,b=0,d=new Uint8Array(new ArrayBuffer(3*h));for(c=0;cm?d[b++]=m:(2048>m?d[b++]=192|m>>>6:(d[b++]=224|m>>>12&15,d[b++]=128|m>>>6&63),d[b++]=128|m&63);return d.subarray(0, -b)}function f(a){var c,m,h,b,d=a.length,l=new Uint8Array(new ArrayBuffer(d)),e=0;for(c=0;cm?l[e++]=m:(c+=1,h=a[c],224>m?l[e++]=(m&31)<<6|h&63:(c+=1,b=a[c],l[e++]=(m&15)<<12|(h&63)<<6|b&63));return l.subarray(0,e)}function n(a){return k(g(a))}function p(a){return String.fromCharCode.apply(String,d(a))}function r(a){return f(g(a))}function q(a){a=f(a);for(var c="",m=0;mc?l+=String.fromCharCode(c):(d+=1,h=a.charCodeAt(d)&255,224>c?l+=String.fromCharCode((c&31)<<6|h&63):(d+=1,b=a.charCodeAt(d)&255,l+=String.fromCharCode((c&15)<<12|(h&63)<<6|b&63)));return l}function l(a,c){function m(){var d=b+1E5;d>a.length&&(d=a.length);h+=e(a,b,d);b=d;d=b===a.length;c(h,d)&&!d&&runtime.setTimeout(m,0)}var h="",b=0;1E5>a.length?c(e(a,0,a.length),!0):("string"!==typeof a&&(a=a.slice()),m())}function a(a){return b(g(a))}function c(a){return String.fromCharCode.apply(String, -b(a))}function m(a){return String.fromCharCode.apply(String,b(g(a)))}var h=function(a){var c={},m,h;m=0;for(h=a.length;m=a.compareBoundaryPoints(Range.START_TO_START,c)&&0<=a.compareBoundaryPoints(Range.END_TO_END,c)}function n(a,c){return 0>=a.compareBoundaryPoints(Range.END_TO_START,c)&&0<=a.compareBoundaryPoints(Range.START_TO_END,c)}function p(a,c){var b=null;a.nodeType===Node.TEXT_NODE&&(0===a.length?(a.parentNode.removeChild(a),c.nodeType===Node.TEXT_NODE&&(b=c)):(c.nodeType===Node.TEXT_NODE&&(a.appendData(c.data),c.parentNode.removeChild(c)),b=a));return b} -function r(a){for(var c=a.parentNode;a.firstChild;)c.insertBefore(a.firstChild,a);c.removeChild(a);return c}function q(a,c){var b=a.parentNode,d=a.firstChild,l=c(a),e;if(l===NodeFilter.FILTER_SKIP)return b;for(;d;)e=d.nextSibling,q(d,c),d=e;b&&l===NodeFilter.FILTER_REJECT&&r(a);return b}function e(a,c){return a===c||Boolean(a.compareDocumentPosition(c)&Node.DOCUMENT_POSITION_CONTAINED_BY)}function l(a,c){return g().unscaledRangeClientRects?a:a/c}function a(c,h,b){Object.keys(h).forEach(function(d){var l= -d.split(":"),e=l[1],f=b(l[0]),l=h[d],n=typeof l;"object"===n?Object.keys(l).length&&(d=f?c.getElementsByTagNameNS(f,e)[0]||c.ownerDocument.createElementNS(f,d):c.getElementsByTagName(e)[0]||c.ownerDocument.createElement(d),c.appendChild(d),a(d,l,b)):f&&(runtime.assert("number"===n||"string"===n,"attempting to map unsupported type '"+n+"' (key: "+d+")"),c.setAttributeNS(f,d,String(l)))})}var c=null;this.splitBoundaries=function(a){var c,d=[],l,e,f;if(a.startContainer.nodeType===Node.TEXT_NODE||a.endContainer.nodeType=== -Node.TEXT_NODE){l=a.endContainer;e=a.endContainer.nodeType!==Node.TEXT_NODE?a.endOffset===a.endContainer.childNodes.length:!1;f=a.endOffset;c=a.endContainer;if(fg))throw runtime.log("alert","watchdog timeout"),"timeout!";if(0k))throw runtime.log("alert","watchdog loop overflow"),"loop overflow";}};core.NodeFilterChain=function(g){var k=NodeFilter.FILTER_REJECT,d=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(b){var f;for(f=0;f "+c.length),runtime.assert(0<=b,"Error in setPosition: "+b+" < 0"),b===c.length&&(l.nextSibling()?a=0:l.parentNode()?a=1:runtime.assert(!1,"Error in setUnfilteredPosition: position not valid."))):ba.value||"%"===a.unit)?null:a}function L(a){return(a=I(a))&&"%"!==a.unit?null:a}function E(a){switch(a.namespaceURI){case odf.Namespaces.drawns:case odf.Namespaces.svgns:case odf.Namespaces.dr3dns:return!1;case odf.Namespaces.textns:switch(a.localName){case "note-body":case "ruby-text":return!1}break;case odf.Namespaces.officens:switch(a.localName){case "annotation":case "binary-data":case "event-listeners":return!1}break;default:switch(a.localName){case "cursor":case "editinfo":return!1}}return!0} -function N(a){return Boolean(n(a)&&(!r(a.textContent)||A(a,0)))}function O(a,c){for(;0=c.value||"%"===c.unit)?null:c;return c||L(a)};this.parseFoLineHeight= -function(a){return K(a)||L(a)};this.isTextContentContainingNode=E;this.getTextNodes=function(a,c){var b;b=aa.getNodesInRange(a,function(a){var c=NodeFilter.FILTER_REJECT;a.nodeType===Node.TEXT_NODE?N(a)&&(c=NodeFilter.FILTER_ACCEPT):E(a)&&(c=NodeFilter.FILTER_SKIP);return c},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);c||O(a,b);return b};this.getTextElements=D;this.getParagraphElements=function(a){var c;c=aa.getNodesInRange(a,function(a){var c=NodeFilter.FILTER_REJECT;if(f(a))c=NodeFilter.FILTER_ACCEPT; -else if(E(a)||q(a))c=NodeFilter.FILTER_SKIP;return c},NodeFilter.SHOW_ELEMENT);V(a.startContainer,c,f);return c};this.getImageElements=function(a){var c;c=aa.getNodesInRange(a,function(a){var c=NodeFilter.FILTER_SKIP;g(a)&&(c=NodeFilter.FILTER_ACCEPT);return c},NodeFilter.SHOW_ELEMENT);V(a.startContainer,c,g);return c};this.getHyperlinkElements=function(a){var c=[],d=a.cloneRange();a.collapsed&&a.endContainer.nodeType===Node.ELEMENT_NODE&&(a=W(a.endContainer,a.endOffset),a.nodeType===Node.TEXT_NODE&& -d.setEnd(a,1));D(d,!0,!1).forEach(function(a){for(a=a.parentNode;!f(a);){if(b(a)&&-1===c.indexOf(a)){c.push(a);break}a=a.parentNode}});d.detach();return c};this.getNormalizedFontFamilyName=function(a){/^(["'])(?:.|[\n\r])*?\1$/.test(a)||(a=a.replace(/^[ \t\r\n\f]*((?:.|[\n\r])*?)[ \t\r\n\f]*$/,"$1"),/[ \t\r\n\f]/.test(a)&&(a="'"+a.replace(/[ \t\r\n\f]+/g," ")+"'"));return a}};odf.OdfUtils=new odf.OdfUtilsImpl; -gui.OdfTextBodyNodeFilter=function(){var g=odf.OdfUtils,k=Node.TEXT_NODE,d=NodeFilter.FILTER_REJECT,b=NodeFilter.FILTER_ACCEPT,f=odf.Namespaces.textns;this.acceptNode=function(n){if(n.nodeType===k){if(!g.isGroupingElement(n.parentNode))return d}else if(n.namespaceURI===f&&"tracked-changes"===n.localName)return d;return b}};xmldom.LSSerializerFilter=function(){};xmldom.LSSerializerFilter.prototype.acceptNode=function(g){}; -odf.OdfNodeFilter=function(){this.acceptNode=function(g){return"http://www.w3.org/1999/xhtml"===g.namespaceURI?NodeFilter.FILTER_SKIP:g.namespaceURI&&g.namespaceURI.match(/^urn:webodf:/)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}};xmldom.XPathIterator=function(){};xmldom.XPathIterator.prototype.next=function(){};xmldom.XPathIterator.prototype.reset=function(){}; -function createXPathSingleton(){function g(b,a,c){return-1!==b&&(b=e&&c.push(k(b.substring(a,d)))):"["===b[d]&&(0>=e&&(a=d+1),e+=1),d+=1;return d};q=function(d,a,c){var m,h,e,n;for(m=0;m/g,">").replace(/'/g,"'").replace(/"/g,""")}function d(f,n){var g="",r=b.filter?b.filter.acceptNode(n):NodeFilter.FILTER_ACCEPT,q;if(r===NodeFilter.FILTER_ACCEPT&&n.nodeType===Node.ELEMENT_NODE){f.push();q=f.getQName(n);var e,l=n.attributes,a,c,m,h="",y;e="<"+q;a=l.length;for(c=0;c")}if(r===NodeFilter.FILTER_ACCEPT||r===NodeFilter.FILTER_SKIP){for(r=n.firstChild;r;)g+=d(f,r),r=r.nextSibling;n.nodeValue&&(g+=k(n.nodeValue))}q&&(g+="",f.pop());return g}var b=this;this.filter=null;this.writeToString=function(b,n){if(!b)return"";var k=new g(n);return d(k,b)}}; -(function(){function g(b){var a,c=r.length;for(a=0;ac)break;h=h.nextSibling}b.insertBefore(a,h)}}}var f=new odf.StyleInfo,n=core.DomUtils,p=odf.Namespaces.stylens,r="meta settings scripts font-face-decls styles automatic-styles master-styles body".split(" "), -q=Date.now()+"_webodf_",e=new core.Base64;odf.ODFElement=function(){};odf.ODFDocumentElement=function(){};odf.ODFDocumentElement.prototype=new odf.ODFElement;odf.ODFDocumentElement.prototype.constructor=odf.ODFDocumentElement;odf.ODFDocumentElement.prototype.fontFaceDecls=null;odf.ODFDocumentElement.prototype.manifest=null;odf.ODFDocumentElement.prototype.settings=null;odf.ODFDocumentElement.namespaceURI="urn:oasis:names:tc:opendocument:xmlns:office:1.0";odf.ODFDocumentElement.localName="document"; -odf.AnnotationElement=function(){};odf.OdfPart=function(b,a,c,d){var h=this;this.size=0;this.type=null;this.name=b;this.container=c;this.url=null;this.mimetype=a;this.onstatereadychange=this.document=null;this.EMPTY=0;this.LOADING=1;this.DONE=2;this.state=this.EMPTY;this.data="";this.load=function(){null!==d&&(this.mimetype=a,d.loadAsDataURL(b,a,function(a,c){a&&runtime.log(a);h.url=c;if(h.onchange)h.onchange(h);if(h.onstatereadychange)h.onstatereadychange(h)}))}};odf.OdfPart.prototype.load=function(){}; -odf.OdfPart.prototype.getUrl=function(){return this.data?"data:;base64,"+e.toBase64(this.data):null};odf.OdfContainer=function a(c,m){function h(a){for(var c=a.firstChild,b;c;)b=c.nextSibling,c.nodeType===Node.ELEMENT_NODE?h(c):c.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&a.removeChild(c),c=b}function g(a){var c={},b,d,h=a.ownerDocument.createNodeIterator(a,NodeFilter.SHOW_ELEMENT,null,!1);for(a=h.nextNode();a;)"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&("annotation"=== -a.localName?(b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))&&(c.hasOwnProperty(b)?runtime.log("Warning: annotation name used more than once with : '"+b+"'"):c[b]=a):"annotation-end"===a.localName&&((b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))?c.hasOwnProperty(b)?(d=c[b],d.annotationEndElement?runtime.log("Warning: annotation name used more than once with : '"+b+"'"):d.annotationEndElement= -a):runtime.log("Warning: annotation end without an annotation start, name: '"+b+"'"):runtime.log("Warning: annotation end without a name found"))),a=h.nextNode()}function r(a,c){for(var b=a&&a.firstChild;b;)b.nodeType===Node.ELEMENT_NODE&&b.setAttributeNS("urn:webodf:names:scope","scope",c),b=b.nextSibling}function z(a,c){for(var b=B.rootElement.meta,b=b&&b.firstChild;b&&(b.namespaceURI!==a||b.localName!==c);)b=b.nextSibling;for(b=b&&b.firstChild;b&&b.nodeType!==Node.TEXT_NODE;)b=b.nextSibling;return b? -b.data:null}function w(a){var c={},b;for(a=a.firstChild;a;)a.nodeType===Node.ELEMENT_NODE&&a.namespaceURI===p&&"font-face"===a.localName&&(b=a.getAttributeNS(p,"name"),c[b]=a),a=a.nextSibling;return c}function v(a,c){var b=null,d,h,e;if(a)for(b=a.cloneNode(!0),d=b.firstElementChild;d;)h=d.nextElementSibling,(e=d.getAttributeNS("urn:webodf:names:scope","scope"))&&e!==c&&b.removeChild(d),d=h;return b}function u(a,c){var b,d,h,e=null,m={};if(a)for(c.forEach(function(a){f.collectUsedFontFaces(m,a)}), -e=a.cloneNode(!0),b=e.firstElementChild;b;)d=b.nextElementSibling,h=b.getAttributeNS(p,"name"),m[h]||e.removeChild(b),b=d;return e}function t(a){var c=B.rootElement.ownerDocument,b;if(a){h(a.documentElement);try{b=c.importNode(a.documentElement,!0)}catch(d){}}return b}function A(a){B.state=a;if(B.onchange)B.onchange(B);if(B.onstatereadychange)B.onstatereadychange(B)}function I(a){Q=null;B.rootElement=a;a.fontFaceDecls=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"); -a.styles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles");a.automaticStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");a.masterStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles");a.body=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");a.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta");a.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0", -"settings");a.scripts=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","scripts");g(a)}function K(c){var d=t(c),h=B.rootElement,e;d&&"document-styles"===d.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===d.namespaceURI?(h.fontFaceDecls=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),b(h,h.fontFaceDecls),e=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),h.styles=e||c.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0", -"styles"),b(h,h.styles),e=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),h.automaticStyles=e||c.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),r(h.automaticStyles,"document-styles"),b(h,h.automaticStyles),d=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),h.masterStyles=d||c.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),b(h,h.masterStyles), -f.prefixStyleNames(h.automaticStyles,q,h.masterStyles)):A(a.INVALID)}function L(c){c=t(c);var d,h,e,m;if(c&&"document-content"===c.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===c.namespaceURI){d=B.rootElement;e=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");if(d.fontFaceDecls&&e){m=d.fontFaceDecls;var g,k,O,q,D={};h=w(m);q=w(e);for(e=e.firstElementChild;e;){g=e.nextElementSibling;if(e.namespaceURI===p&&"font-face"===e.localName)if(k=e.getAttributeNS(p, -"name"),h.hasOwnProperty(k)){if(!e.isEqualNode(h[k])){O=k;for(var y=h,E=q,u=0,W=void 0,W=O=O.replace(/\d+$/,"");y.hasOwnProperty(W)||E.hasOwnProperty(W);)u+=1,W=O+u;O=W;e.setAttributeNS(p,"style:name",O);m.appendChild(e);h[O]=e;delete q[k];D[k]=O}}else m.appendChild(e),h[k]=e,delete q[k];e=g}m=D}else e&&(d.fontFaceDecls=e,b(d,e));h=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");r(h,"document-content");m&&f.changeFontFaceNames(h,m);if(d.automaticStyles&&h)for(m= -h.firstChild;m;)d.automaticStyles.appendChild(m),m=h.firstChild;else h&&(d.automaticStyles=h,b(d,h));c=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");if(null===c)throw" tag is mising.";d.body=c;b(d,d.body)}else A(a.INVALID)}function E(a){a=t(a);var c;a&&"document-meta"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(c=B.rootElement,c.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"), -b(c,c.meta))}function N(a){a=t(a);var c;a&&"document-settings"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(c=B.rootElement,c.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),b(c,c.settings))}function O(a){a=t(a);var c;if(a&&"manifest"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===a.namespaceURI)for(c=B.rootElement,c.manifest=a,a=c.manifest.firstElementChild;a;)"file-entry"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"=== -a.namespaceURI&&(M[a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","full-path")]=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","media-type")),a=a.nextElementSibling}function D(a,c,b){a=n.getElementsByTagName(a,c);var d;for(d=0;d'}function P(){var a=new xmldom.LSSerializer,c=R("document-meta");a.filter=new odf.OdfNodeFilter;c+=a.writeToString(B.rootElement.meta,odf.Namespaces.namespaceMap);return c+""}function aa(a,c){var b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:file-entry");b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:full-path",a);b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", -"manifest:media-type",c);return b}function S(){var a=runtime.parseXML(''),c=a.documentElement,b=new xmldom.LSSerializer,d;for(d in M)M.hasOwnProperty(d)&&c.appendChild(aa(d,M[d]));b.filter=new odf.OdfNodeFilter;return'\n'+b.writeToString(a,odf.Namespaces.namespaceMap)}function fa(){var a,c,b,d=odf.Namespaces.namespaceMap, -h=new xmldom.LSSerializer,e=R("document-styles");c=v(B.rootElement.automaticStyles,"document-styles");b=B.rootElement.masterStyles.cloneNode(!0);a=u(B.rootElement.fontFaceDecls,[b,B.rootElement.styles,c]);f.removePrefixFromStyleNames(c,q,b);h.filter=new k(b,c);e+=h.writeToString(a,d);e+=h.writeToString(B.rootElement.styles,d);e+=h.writeToString(c,d);e+=h.writeToString(b,d);return e+""}function ha(){var a,c,b=odf.Namespaces.namespaceMap,h=new xmldom.LSSerializer,e=R("document-content"); -c=v(B.rootElement.automaticStyles,"document-content");a=u(B.rootElement.fontFaceDecls,[c]);h.filter=new d(B.rootElement.body,c);e+=h.writeToString(a,b);e+=h.writeToString(c,b);e+=h.writeToString(B.rootElement.body,b);return e+""}function C(c,b){runtime.loadXML(c,function(c,d){if(c)b(c);else if(d){V(d);W(d.documentElement);var h=t(d);h&&"document"===h.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===h.namespaceURI?(I(h),A(a.DONE)):A(a.INVALID)}else b("No DOM was loaded.")})} -function Z(a,c){var d;d=B.rootElement;var h=d.meta;h||(d.meta=h=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),b(d,h));d=h;a&&n.mapKeyValObjOntoNode(d,a,odf.Namespaces.lookupNamespaceURI);c&&n.removeKeyElementsFromNode(d,c,odf.Namespaces.lookupNamespaceURI)}function ba(c,b){function d(a,c){var b;c||(c=a);b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",c);f[a]=b;f.appendChild(b)}var h=new core.Zip("",null),e="application/vnd.oasis.opendocument."+ -c+(!0===b?"-template":""),m=runtime.byteArrayFromString(e,"utf8"),f=B.rootElement,g=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",c);h.save("mimetype",m,!1,new Date);d("meta");d("settings");d("scripts");d("fontFaceDecls","font-face-decls");d("styles");d("automaticStyles","automatic-styles");d("masterStyles","master-styles");d("body");f.body.appendChild(g);M["/"]=e;M["settings.xml"]="text/xml";M["meta.xml"]="text/xml";M["styles.xml"]="text/xml";M["content.xml"]="text/xml"; -A(a.DONE);return h}function U(){var a,c=new Date,b="";B.rootElement.settings&&B.rootElement.settings.firstElementChild&&(a=new xmldom.LSSerializer,b=R("document-settings"),a.filter=new odf.OdfNodeFilter,b+=a.writeToString(B.rootElement.settings,odf.Namespaces.namespaceMap),b+="");(a=b)?(a=runtime.byteArrayFromString(a,"utf8"),Y.save("settings.xml",a,!0,c)):Y.remove("settings.xml");b=runtime.getWindow();a="WebODF/"+webodf.Version;b&&(a=a+" "+b.navigator.userAgent);Z({"meta:generator":a}, -null);a=runtime.byteArrayFromString(P(),"utf8");Y.save("meta.xml",a,!0,c);a=runtime.byteArrayFromString(fa(),"utf8");Y.save("styles.xml",a,!0,c);a=runtime.byteArrayFromString(ha(),"utf8");Y.save("content.xml",a,!0,c);a=runtime.byteArrayFromString(S(),"utf8");Y.save("META-INF/manifest.xml",a,!0,c)}function ga(a,c){U();Y.writeAs(a,function(a){c(a)})}var B=this,Y,M={},Q,F="";this.onstatereadychange=m;this.state=this.onchange=null;this.getMetadata=z;this.setRootElement=I;this.getContentElement=function(){var a; -Q||(a=B.rootElement.body,Q=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","text")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","presentation")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","spreadsheet"));if(!Q)throw"Could not find content element in .";return Q};this.getDocumentType=function(){var a=B.getContentElement();return a&&a.localName};this.isTemplate=function(){return"-template"===M["/"].substr(-9)}; -this.setIsTemplate=function(a){var c=M["/"],b="-template"===c.substr(-9);a!==b&&(c=a?c+"-template":c.substr(0,c.length-9),M["/"]=c,a=runtime.byteArrayFromString(c,"utf8"),Y.save("mimetype",a,!1,new Date))};this.getPart=function(a){return new odf.OdfPart(a,M[a],B,Y)};this.getPartData=function(a,c){Y.load(a,c)};this.setMetadata=Z;this.incrementEditingCycles=function(){var a=z(odf.Namespaces.metans,"editing-cycles"),a=a?parseInt(a,10):0;isNaN(a)&&(a=0);Z({"meta:editing-cycles":a+1},null);return a+1}; -this.createByteArray=function(a,c){U();Y.createByteArray(a,c)};this.saveAs=ga;this.save=function(a){ga(F,a)};this.getUrl=function(){return F};this.setBlob=function(a,c,b){b=e.convertBase64ToByteArray(b);Y.save(a,b,!1,new Date);M.hasOwnProperty(a)&&runtime.log(a+" has been overwritten.");M[a]=c};this.removeBlob=function(a){var c=Y.remove(a);runtime.assert(c,"file is not found: "+a);delete M[a]};this.state=a.LOADING;this.rootElement=function(a){var c=document.createElementNS(a.namespaceURI,a.localName), -b;a=new a.Type;for(b in a)a.hasOwnProperty(b)&&(c[b]=a[b]);return c}({Type:odf.ODFDocumentElement,namespaceURI:odf.ODFDocumentElement.namespaceURI,localName:odf.ODFDocumentElement.localName});c===odf.OdfContainer.DocumentType.TEXT?Y=ba("text"):c===odf.OdfContainer.DocumentType.TEXT_TEMPLATE?Y=ba("text",!0):c===odf.OdfContainer.DocumentType.PRESENTATION?Y=ba("presentation"):c===odf.OdfContainer.DocumentType.PRESENTATION_TEMPLATE?Y=ba("presentation",!0):c===odf.OdfContainer.DocumentType.SPREADSHEET? -Y=ba("spreadsheet"):c===odf.OdfContainer.DocumentType.SPREADSHEET_TEMPLATE?Y=ba("spreadsheet",!0):(F=c,Y=new core.Zip(F,function(c,b){Y=b;c?C(F,function(b){c&&(Y.error=c+"\n"+b,A(a.INVALID))}):J([{path:"styles.xml",handler:K},{path:"content.xml",handler:L},{path:"meta.xml",handler:E},{path:"settings.xml",handler:N},{path:"META-INF/manifest.xml",handler:O}])}))};odf.OdfContainer.EMPTY=0;odf.OdfContainer.LOADING=1;odf.OdfContainer.DONE=2;odf.OdfContainer.INVALID=3;odf.OdfContainer.SAVING=4;odf.OdfContainer.MODIFIED= -5;odf.OdfContainer.getContainer=function(a){return new odf.OdfContainer(a,null)}})();odf.OdfContainer.DocumentType={TEXT:1,TEXT_TEMPLATE:2,PRESENTATION:3,PRESENTATION_TEMPLATE:4,SPREADSHEET:5,SPREADSHEET_TEMPLATE:6};gui.AnnotatableCanvas=function(){};gui.AnnotatableCanvas.prototype.refreshSize=function(){};gui.AnnotatableCanvas.prototype.getZoomLevel=function(){};gui.AnnotatableCanvas.prototype.getSizer=function(){}; -gui.AnnotationViewManager=function(g,k,d,b){function f(c){var b=c.annotationEndElement,d=l.createRange(),e=c.getAttributeNS(odf.Namespaces.officens,"name");b&&(d.setStart(c,c.childNodes.length),d.setEnd(b,0),c=a.getTextNodes(d,!1),c.forEach(function(a){var c;a:{for(c=a.parentNode;c.namespaceURI!==odf.Namespaces.officens||"body"!==c.localName;){if("http://www.w3.org/1999/xhtml"===c.namespaceURI&&"webodf-annotationHighlight"===c.className&&c.getAttribute("annotation")===e){c=!0;break a}c=c.parentNode}c= -!1}c||(c=l.createElement("span"),c.className="webodf-annotationHighlight",c.setAttribute("annotation",e),a.parentNode.replaceChild(c,a),c.appendChild(a))}));d.detach()}function n(a){var b=g.getSizer();a?(d.style.display="inline-block",b.style.paddingRight=c.getComputedStyle(d).width):(d.style.display="none",b.style.paddingRight=0);g.refreshSize()}function p(){e.sort(function(a,c){return 0!==(a.compareDocumentPosition(c)&Node.DOCUMENT_POSITION_FOLLOWING)?-1:1})}function r(){var a;for(a=0;a=(n.getBoundingClientRect().top-r.bottom)/c?b.style.top=Math.abs(n.getBoundingClientRect().top-r.bottom)/c+20+"px":b.style.top="0px"): -b.style.top="0px";l.style.left=f.getBoundingClientRect().width/c+"px";var f=l.style,n=l.getBoundingClientRect().left/c,k=l.getBoundingClientRect().top/c,r=b.getBoundingClientRect().left/c,p=b.getBoundingClientRect().top/c,q=0,I=0,q=r-n,q=q*q,I=p-k,I=I*I,n=Math.sqrt(q+I);f.width=n+"px";k=Math.asin((b.getBoundingClientRect().top-l.getBoundingClientRect().top)/(c*parseFloat(l.style.width)));l.style.transform="rotate("+k+"rad)";l.style.MozTransform="rotate("+k+"rad)";l.style.WebkitTransform="rotate("+ -k+"rad)";l.style.msTransform="rotate("+k+"rad)"}}function q(a){var c=e.indexOf(a),b=a.parentNode.parentNode;"div"===b.localName&&(b.parentNode.insertBefore(a,b),b.parentNode.removeChild(b));a=a.getAttributeNS(odf.Namespaces.officens,"name");a=l.querySelectorAll('span.webodf-annotationHighlight[annotation="'+a+'"]');for(var d,b=0;bp||k.bottom>p)g.scrollTop=k.bottom-k.top<=p-f?g.scrollTop+(k.bottom-p):g.scrollTop+(k.top-f);k.leftn&&(g.scrollLeft=k.right-k.left<=n-b?g.scrollLeft+(k.right-n):g.scrollLeft-(b-k.left))}}}; -(function(){function g(d,n,k,r,q){var e,l=0,a;for(a in d)if(d.hasOwnProperty(a)){if(l===k){e=a;break}l+=1}e?n.getPartData(d[e].href,function(a,m){if(a)runtime.log(a);else if(m){var h="@font-face { font-family: "+(d[e].family||e)+"; src: url(data:application/x-font-ttf;charset=binary;base64,"+b.convertUTF8ArrayToBase64(m)+') format("truetype"); }';try{r.insertRule(h,r.cssRules.length)}catch(l){runtime.log("Problem inserting rule in CSS: "+runtime.toJson(l)+"\nRule: "+h)}}else runtime.log("missing font data for "+ -d[e].href);g(d,n,k+1,r,q)}):q&&q()}var k=xmldom.XPath,d=odf.OdfUtils,b=new core.Base64;odf.FontLoader=function(){this.loadFonts=function(b,n){for(var p=b.rootElement.fontFaceDecls;n.cssRules.length;)n.deleteRule(n.cssRules.length-1);if(p){var r={},q,e,l,a;if(p)for(p=k.getODFElementsWithXPath(p,"style:font-face[svg:font-face-src]",odf.Namespaces.lookupNamespaceURI),q=0;q text|list-item:first-child > :not(text|list):first-child:before',u+="{",u+="counter-increment: "+p+" 0;",u+="}",g(b,u));for(;l.counterIdStack.length>=k;)l.counterIdStack.pop();l.counterIdStack.push(p);t=l.contentRules[k.toString()]||"";for(u=1;u<=k;u+=1)t=t.replace(u+"webodf-listLevel",l.counterIdStack[u-1]);u='text|list[webodfhelper|counter-id="'+r+'"] > text|list-item > :not(text|list):first-child:before'; -u+="{";u+=t;u+="counter-increment: "+p+";";u+="}";g(b,u)}for(h=h.firstElementChild;h;)d(c,h,f,l),h=h.nextElementSibling}else l.continuedCounterIdStack=[]}var f=0,a="",c={};this.createCounterRules=function(a,b,n){var g=b.getAttributeNS(p,"id"),r=[];n&&(n=n.getAttributeNS("urn:webodf:names:helper","counter-id"),r=c[n].slice(0));a=new k(a,r);g?g="Y"+g:(f+=1,g="X"+f);d(g,b,0,a);c[g+"-level1-1"]=a.counterIdStack};this.initialiseCreatedCounters=function(){var c;c="office|document{"+("counter-reset: "+a+ -";");c+="}";g(b,c)}}var b=odf.Namespaces.fons,f=odf.Namespaces.stylens,n=odf.Namespaces.textns,p=odf.Namespaces.xmlns,r={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"};odf.ListStyleToCss=function(){function k(a){var b=m.parseLength(a);return b?c.convert(b.value,b.unit,"px"):(runtime.log("Could not parse value '"+a+"'."),0)}function e(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function l(a,c){var b;a&&(b=a.getAttributeNS(n,"style-name"));return b===c}function a(a, -c,b){c=c.getElementsByTagNameNS(n,"list");a=new d(a);var m,g,k,q,t,A,I={},K;for(K=0;K text|list-item > text|list",--x;x=E&&E.getAttributeNS(b,"text-align")||"left";switch(x){case "end":x="right";break;case "start":x="left"}"label-alignment"===N?(D=O&&O.getAttributeNS(b,"margin-left")||"0px",J=O&&O.getAttributeNS(b,"text-indent")||"0px",R=O&&O.getAttributeNS(n,"label-followed-by"),O=k(D)):(D=E&&E.getAttributeNS(n,"space-before")||"0px",V=E&&E.getAttributeNS(n,"min-label-width")||"0px", -W=E&&E.getAttributeNS(n,"min-label-distance")||"0px",O=k(D)+k(V));E=p+" > text|list-item";E+="{";E+="margin-left: "+O+"px;";E+="}";g(e,E);E=p+" > text|list-item > text|list";E+="{";E+="margin-left: "+-O+"px;";E+="}";g(e,E);E=p+" > text|list-item > :not(text|list):first-child:before";E+="{";E+="text-align: "+x+";";E+="display: inline-block;";"label-alignment"===N?(E+="margin-left: "+J+";","listtab"===R&&(E+="padding-right: 0.2cm;")):(E+="min-width: "+V+";",E+="margin-left: "+(0===parseFloat(V)?"": -"-")+V+";",E+="padding-right: "+W+";");E+="}";g(e,E)}d=d.nextElementSibling}});a(c,e,m)}}})();odf.LazyStyleProperties=function(g,k){var d={};this.value=function(b){var f;d.hasOwnProperty(b)?f=d[b]:(f=k[b](),void 0===f&&g&&(f=g.value(b)),d[b]=f);return f};this.reset=function(b){g=b;d={}}}; -odf.StyleParseUtils=function(){function g(d){var b,f;d=(d=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))/.exec(d))?{value:parseFloat(d[1]),unit:d[3]}:null;f=d&&d.unit;"px"===f?b=d.value:"cm"===f?b=d.value/2.54*96:"mm"===f?b=d.value/25.4*96:"in"===f?b=96*d.value:"pt"===f?b=d.value/.75:"pc"===f&&(b=16*d.value);return b}var k=odf.Namespaces.stylens;this.parseLength=g;this.parsePositiveLengthOrPercent=function(d,b,f){var n;d&&(n=parseFloat(d.substr(0, -d.indexOf("%"))),isNaN(n)&&(n=void 0));var k;void 0!==n?(f&&(k=f.value(b)),n=void 0===k?void 0:k/100*n):n=g(d);return n};this.getPropertiesElement=function(d,b,f){for(b=f?f.nextElementSibling:b.firstElementChild;null!==b&&(b.localName!==d||b.namespaceURI!==k);)b=b.nextElementSibling;return b};this.parseAttributeList=function(d){d&&(d=d.replace(/^\s*(.*?)\s*$/g,"$1"));return d&&0n.value&&(m="0.75pt"+h);h=m}else if(V.hasOwnProperty(e[1])){var m= -a,f=e[0],n=e[1],g=J.parseLength(h),r=void 0,p=void 0,q=void 0,O=void 0,q=void 0;if(g&&"%"===g.unit){r=g.value/100;p=k(m.parentNode);for(O="0";p;){if(q=y.getDirectChild(p,l,"paragraph-properties"))if(q=J.parseLength(q.getAttributeNS(f,n))){if("%"!==q.unit){O=q.value*r+q.unit;break}r*=q.value/100}p=k(p)}h=O}}e[2]&&(b+=e[2]+":"+h+";")}return b}function b(a,c,b,d){return c+c+b+b+d+d}function f(a,c){var b=[a],d=c.derivedStyles;Object.keys(d).forEach(function(a){a=f(a,d[a]);b=b.concat(a)});return b}function n(a, -c,b,d){function e(c,b){var d=[],h;c.forEach(function(a){m.forEach(function(c){d.push('draw|page[webodfhelper|page-style-name="'+c+'"] draw|frame[presentation|class="'+a+'"]')})});0 -z&&(a=z);for(c=Math.floor(a/d)*d;!b&&0<=c;)b=m[c],c-=d;for(b=b||x;b.nextBookmark&&b.nextBookmark.steps<=a;)e.check(),b=b.nextBookmark;runtime.assert(-1===a||b.steps<=a,"Bookmark @"+p(b)+" at step "+b.steps+" exceeds requested step of "+a);return b}function a(a){a.previousBookmark&&(a.previousBookmark.nextBookmark=a.nextBookmark);a.nextBookmark&&(a.nextBookmark.previousBookmark=a.previousBookmark)}function c(a){for(var c,b=null;!b&&a&&a!==k;)(c=q(a))&&(b=h[c])&&b.node!==a&&(runtime.log("Cloned node detected. Creating new bookmark"), -b=null,a.removeAttributeNS("urn:webodf:names:steps","nodeId")),a=a.parentNode;return b}var m={},h={},y=core.DomUtils,x,z,w=Node.DOCUMENT_POSITION_FOLLOWING,v=Node.DOCUMENT_POSITION_PRECEDING;this.updateBookmark=function(c,b){var g,n=Math.ceil(c/d)*d,p,v,E;if(void 0!==z&&zp.steps)m[n]=v;r()};this.setToClosestStep=function(a,c){var b;r();b=l(a);b.setIteratorPosition(c); -return b.steps};this.setToClosestDomPoint=function(a,b,d){var e,h;r();if(a===k&&0===b)e=x;else if(a===k&&b===k.childNodes.length)for(h in e=x,m)m.hasOwnProperty(h)&&(a=m[h],a.steps>e.steps&&(e=a));else if(e=c(a.childNodes.item(b)||a),!e)for(d.setUnfilteredPosition(a,b);!e&&d.previousNode();)e=c(d.getCurrentNode());e=e||x;void 0!==z&&e.steps>z&&(e=l(z));e.setIteratorPosition(d);return e.steps};this.damageCacheAfterStep=function(a){0>a&&(a=-1);void 0===z?z=a:aa)throw new RangeError("Requested steps is negative ("+a+")");for(b=p.setToClosestStep(a,k);bq.comparePoints(g,0,a,b),a=g,b=b?0:g.childNodes.length);k.setUnfilteredPosition(a,b);n(k,h)||k.setUnfilteredPosition(a,b);h=k.container();b=k.unfilteredDomOffset();a=p.setToClosestDomPoint(h,b,k);if(0>q.comparePoints(k.container(),k.unfilteredDomOffset(),h,b))return 0=e.textNode.length?null:e.textNode.splitText(e.offset));for(c=e.textNode;c!==a;){c=c.parentNode;m=c.cloneNode(!1);h&&m.appendChild(h);if(y)for(;y&&y.nextSibling;)m.appendChild(y.nextSibling);else for(;c.firstChild;)m.appendChild(c.firstChild);c.parentNode.insertBefore(m,c.nextSibling);y=c;h=m}p.isListItem(h)&&(h=h.childNodes.item(0));n?h.setAttributeNS(r,"text:style-name",n):h.removeAttributeNS(r,"style-name");0===e.textNode.length&& -e.textNode.parentNode.removeChild(e.textNode);d.emit(ops.OdtDocument.signalStepsInserted,{position:b});x&&f&&(d.moveCursor(g,b+1,0),d.emit(ops.Document.signalCursorMoved,x));d.fixCursorPositions();d.getOdfCanvas().refreshSize();d.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:l,memberId:g,timeStamp:k});d.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:h,memberId:g,timeStamp:k});d.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"SplitParagraph", -memberid:g,timestamp:k,position:b,sourceParagraphPosition:d,paragraphStyleName:n,moveCursor:f}}}; -ops.OpUpdateMember=function(){function g(d){var f="//dc:creator[@editinfo:memberid='"+k+"']";d=xmldom.XPath.getODFElementsWithXPath(d.getRootNode(),f,function(b){return"editinfo"===b?"urn:webodf:names:editinfo":odf.Namespaces.lookupNamespaceURI(b)});for(f=0;f=e.width&&(e=null),g.detach();else if(k.isCharacterElement(f.container)||k.isCharacterFrame(f.container))e=b.getBoundingClientRect(f.container); -return e}var k=odf.OdfUtils,d=new odf.StepUtils,b=core.DomUtils,f=core.StepDirection.NEXT,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT,p=gui.StepInfo.VisualDirection.RIGHT_TO_LEFT;this.getContentRect=g;this.moveToFilteredStep=function(b,d,e){function l(a,b){b.process(w,h,k)&&(a=!0,!x&&b.token&&(x=b.token));return a}var a=d===f,c,m,h,k,x,z=b.snapshot();c=!1;var w;do c=g(b),w={token:b.snapshot(),container:b.container,offset:b.offset,direction:d,visualDirection:d===f?n:p},m=b.nextStep()?g(b):null,b.restore(w.token), -a?(h=c,k=m):(h=m,k=c),c=e.reduce(l,!1);while(!c&&b.advanceStep(d));c||e.forEach(function(a){!x&&a.token&&(x=a.token)});b.restore(x||z);return Boolean(x)}}; -gui.Caret=function(g,k,d,b){function f(){a.style.opacity="0"===a.style.opacity?"1":"0";t.trigger()}function n(){y.selectNodeContents(h);return y.getBoundingClientRect()}function p(a){return E[a]!==L[a]}function r(){Object.keys(L).forEach(function(a){E[a]=L[a]})}function q(){if(!1===L.isShown||g.getSelectionType()!==ops.OdtCursor.RangeSelection||!b&&!g.getSelectedRange().collapsed)L.visibility="hidden",a.style.visibility="hidden",t.cancel();else if(L.visibility="visible",a.style.visibility="visible", -!1===L.isFocused)a.style.opacity="1",t.cancel();else{if(A||p("visibility"))a.style.opacity="1",t.cancel();t.trigger()}if(K||I){var d;d=g.getNode();var e,h,f=z.getBoundingClientRect(x.getSizer()),q=!1,y=0;d.removeAttributeNS("urn:webodf:names:cursor","caret-sizer-active");if(0d.height&&(d={top:d.top-(8-d.height)/2,height:8,right:d.right});l.style.height=d.height+"px";l.style.top=d.top+"px"; -l.style.left=d.right-d.width+"px";l.style.width=d.width?d.width+"px":"";m&&(d=runtime.getWindow().getComputedStyle(g.getNode(),null),d.font?m.style.font=d.font:(m.style.fontStyle=d.fontStyle,m.style.fontVariant=d.fontVariant,m.style.fontWeight=d.fontWeight,m.style.fontSize=d.fontSize,m.style.lineHeight=d.lineHeight,m.style.fontFamily=d.fontFamily))}L.isShown&&I&&k.scrollIntoView(a.getBoundingClientRect());p("isFocused")&&c.markAsFocussed(L.isFocused);r();K=I=A=!1}function e(a){l.parentNode.removeChild(l); -h.parentNode.removeChild(h);a()}var l,a,c,m,h,y,x=g.getDocument().getCanvas(),z=core.DomUtils,w=new gui.GuiStepUtils,v,u,t,A=!1,I=!1,K=!1,L={isFocused:!1,isShown:!0,visibility:"hidden"},E={isFocused:!L.isFocused,isShown:!L.isShown,visibility:"hidden"};this.handleUpdate=function(){K=!0;u.trigger()};this.refreshCursorBlinking=function(){A=!0;u.trigger()};this.setFocus=function(){L.isFocused=!0;u.trigger()};this.removeFocus=function(){L.isFocused=!1;u.trigger()};this.show=function(){L.isShown=!0;u.trigger()}; -this.hide=function(){L.isShown=!1;u.trigger()};this.setAvatarImageUrl=function(a){c.setImageUrl(a)};this.setColor=function(b){a.style.borderColor=b;c.setColor(b)};this.getCursor=function(){return g};this.getFocusElement=function(){return a};this.toggleHandleVisibility=function(){c.isVisible()?c.hide():c.show()};this.showHandle=function(){c.show()};this.hideHandle=function(){c.hide()};this.setOverlayElement=function(a){m=a;l.appendChild(a);K=!0;u.trigger()};this.ensureVisible=function(){I=!0;u.trigger()}; -this.getBoundingClientRect=function(){return z.getBoundingClientRect(l)};this.destroy=function(a){core.Async.destroyAll([u.destroy,t.destroy,c.destroy,e],a)};(function(){var b=g.getDocument(),e=[b.createRootFilter(g.getMemberId()),b.getPositionFilter()],m=b.getDOMDocument();y=m.createRange();h=m.createElement("span");h.className="webodf-caretSizer";h.textContent="|";g.getNode().appendChild(h);l=m.createElement("div");l.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g.getMemberId()); -l.className="webodf-caretOverlay";a=m.createElement("div");a.className="caret";l.appendChild(a);c=new gui.Avatar(l,d);x.getSizer().appendChild(l);v=b.createStepIterator(g.getNode(),0,e,b.getRootNode());u=core.Task.createRedrawTask(q);t=core.Task.createTimeoutTask(f,500);u.triggerImmediate()})()}; -odf.TextSerializer=function(){function g(b){var f="",n=k.filter?k.filter.acceptNode(b):NodeFilter.FILTER_ACCEPT,p=b.nodeType,r;if((n===NodeFilter.FILTER_ACCEPT||n===NodeFilter.FILTER_SKIP)&&d.isTextContentContainingNode(b))for(r=b.firstChild;r;)f+=g(r),r=r.nextSibling;n===NodeFilter.FILTER_ACCEPT&&(p===Node.ELEMENT_NODE&&d.isParagraph(b)?f+="\n":p===Node.TEXT_NODE&&b.textContent&&(f+=b.textContent));return f}var k=this,d=odf.OdfUtils;this.filter=null;this.writeToString=function(b){if(!b)return""; -b=g(b);"\n"===b[b.length-1]&&(b=b.substr(0,b.length-1));return b}};gui.MimeDataExporter=function(){var g;this.exportRangeToDataTransfer=function(k,d){var b;b=d.startContainer.ownerDocument.createElement("span");b.appendChild(d.cloneContents());b=g.writeToString(b);try{k.setData("text/plain",b)}catch(f){k.setData("Text",b)}};g=new odf.TextSerializer;g.filter=new odf.OdfNodeFilter}; -gui.Clipboard=function(g){this.setDataFromRange=function(k,d){var b,f=k.clipboardData;b=runtime.getWindow();!f&&b&&(f=b.clipboardData);f?(b=!0,g.exportRangeToDataTransfer(f,d),k.preventDefault()):b=!1;return b}}; -gui.SessionContext=function(g,k){var d=g.getOdtDocument(),b=odf.OdfUtils;this.isLocalCursorWithinOwnAnnotation=function(){var f=d.getCursor(k),g;if(!f)return!1;g=f&&f.getNode();f=d.getMember(k).getProperties().fullName;return(g=b.getParentAnnotation(g,d.getRootNode()))&&b.getAnnotationCreator(g)===f?!0:!1}}; -gui.StyleSummary=function(g){function k(b,d){var k=b+"|"+d,q;f.hasOwnProperty(k)||(q=[],g.forEach(function(e){e=(e=e.styleProperties[b])&&e[d];-1===q.indexOf(e)&&q.push(e)}),f[k]=q);return f[k]}function d(b,d,f){return function(){var g=k(b,d);return f.length>=g.length&&g.every(function(b){return-1!==f.indexOf(b)})}}function b(b,d){var f=k(b,d);return 1===f.length?f[0]:void 0}var f={};this.getPropertyValues=k;this.getCommonValue=b;this.isBold=d("style:text-properties","fo:font-weight",["bold"]);this.isItalic= -d("style:text-properties","fo:font-style",["italic"]);this.hasUnderline=d("style:text-properties","style:text-underline-style",["solid"]);this.hasStrikeThrough=d("style:text-properties","style:text-line-through-style",["solid"]);this.fontSize=function(){var d=b("style:text-properties","fo:font-size");return d&&parseFloat(d)};this.fontName=function(){return b("style:text-properties","style:font-name")};this.isAlignedLeft=d("style:paragraph-properties","fo:text-align",["left","start"]);this.isAlignedCenter= -d("style:paragraph-properties","fo:text-align",["center"]);this.isAlignedRight=d("style:paragraph-properties","fo:text-align",["right","end"]);this.isAlignedJustified=d("style:paragraph-properties","fo:text-align",["justify"]);this.text={isBold:this.isBold,isItalic:this.isItalic,hasUnderline:this.hasUnderline,hasStrikeThrough:this.hasStrikeThrough,fontSize:this.fontSize,fontName:this.fontName};this.paragraph={isAlignedLeft:this.isAlignedLeft,isAlignedCenter:this.isAlignedCenter,isAlignedRight:this.isAlignedRight, -isAlignedJustified:this.isAlignedJustified}}; -gui.DirectFormattingController=function(g,k,d,b,f,n,p){function r(){return U.value().styleSummary}function q(){return U.value().enabledFeatures}function e(a){var b;a.collapsed?(b=a.startContainer,b.hasChildNodes()&&a.startOffseta.clientWidth||a.scrollHeight>a.clientHeight)&&c.push(new l(a)),a=a.parentNode;c.push(new e(v));return c}function w(){var a; -h()||(a=z(K),x(),K.focus(),a.forEach(function(a){a.restore()}))}var v=runtime.getWindow(),u={beforecut:!0,beforepaste:!0,longpress:!0,drag:!0,dragstop:!0},t={mousedown:!0,mouseup:!0,focus:!0},A={},I={},K,L=g.getCanvas().getElement(),E=this,N={};this.addFilter=function(c,b){a(c,!0).filters.push(b)};this.removeFilter=function(c,b){var d=a(c,!0),e=d.filters.indexOf(b);-1!==e&&d.filters.splice(e,1)};this.subscribe=c;this.unsubscribe=m;this.hasFocus=h;this.focus=w;this.getEventTrap=function(){return K}; -this.setEditing=function(a){var c=h();c&&K.blur();a?K.removeAttribute("readOnly"):K.setAttribute("readOnly","true");c&&w()};this.destroy=function(a){m("touchstart",q);Object.keys(N).forEach(function(a){b(parseInt(a,10))});N.length=0;Object.keys(A).forEach(function(a){A[a].destroy()});A={};m("mousedown",y);m("mouseup",x);m("contextmenu",x);Object.keys(I).forEach(function(a){I[a].destroy()});I={};K.parentNode.removeChild(K);a()};(function(){var a=g.getOdfCanvas().getSizer(),b=a.ownerDocument;runtime.assert(Boolean(v), -"EventManager requires a window object to operate correctly");K=b.createElement("textarea");K.id="eventTrap";K.setAttribute("tabindex","-1");K.setAttribute("readOnly","true");K.setAttribute("rows","1");a.appendChild(K);c("mousedown",y);c("mouseup",x);c("contextmenu",x);A.longpress=new d("longpress",["touchstart","touchmove","touchend"],n);A.drag=new d("drag",["touchstart","touchmove","touchend"],p);A.dragstop=new d("dragstop",["drag","touchend"],r);c("touchstart",q)})()}; -gui.IOSSafariSupport=function(g){function k(){d.innerHeight!==d.outerHeight&&(b.style.display="none",runtime.requestAnimationFrame(function(){b.style.display="block"}))}var d=runtime.getWindow(),b=g.getEventTrap();this.destroy=function(d){g.unsubscribe("focus",k);b.removeAttribute("autocapitalize");b.style.WebkitTransform="";d()};g.subscribe("focus",k);b.setAttribute("autocapitalize","off");b.style.WebkitTransform="translateX(-10000px)"}; -gui.HyperlinkController=function(g,k,d,b){function f(){var b=!0;!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(b=d.isLocalCursorWithinOwnAnnotation());b!==e&&(e=b,q.emit(gui.HyperlinkController.enabledChanged,e))}function n(d){d.getMemberId()===b&&f()}var p=odf.OdfUtils,r=g.getOdtDocument(),q=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),e=!1;this.isEnabled=function(){return e};this.subscribe=function(b,a){q.subscribe(b,a)};this.unsubscribe=function(b,a){q.unsubscribe(b, -a)};this.addHyperlink=function(d,a){if(e){var c=r.getCursorSelection(b),f=new ops.OpApplyHyperlink,h=[];if(0===c.length||a)a=a||d,f=new ops.OpInsertText,f.init({memberid:b,position:c.position,text:a}),c.length=a.length,h.push(f);f=new ops.OpApplyHyperlink;f.init({memberid:b,position:c.position,length:c.length,hyperlink:d});h.push(f);g.enqueue(h)}};this.removeHyperlinks=function(){if(e){var d=r.createPositionIterator(r.getRootNode()),a=r.getCursor(b).getSelectedRange(),c=p.getHyperlinkElements(a), -f=a.collapsed&&1===c.length,h=r.getDOMDocument().createRange(),k=[],n,q;0!==c.length&&(c.forEach(function(a){h.selectNodeContents(a);n=r.convertDomToCursorRange({anchorNode:h.startContainer,anchorOffset:h.startOffset,focusNode:h.endContainer,focusOffset:h.endOffset});q=new ops.OpRemoveHyperlink;q.init({memberid:b,position:n.position,length:n.length});k.push(q)}),f||(f=c[0],-1===a.comparePoint(f,0)&&(h.setStart(f,0),h.setEnd(a.startContainer,a.startOffset),n=r.convertDomToCursorRange({anchorNode:h.startContainer, -anchorOffset:h.startOffset,focusNode:h.endContainer,focusOffset:h.endOffset}),0k.width&&(v=k.width/n.width);n.height>k.height&&(u=k.height/n.height);k=Math.min(v,u);n= -{width:n.width*k,height:n.height*k}}k=p.convert(n.width,"px","cm")+"cm";p=p.convert(n.height,"px","cm")+"cm";u=e.getOdfCanvas().odfContainer().rootElement.styles;n=c.toLowerCase();var v=r.hasOwnProperty(n)?r[n]:null,t;n=[];runtime.assert(null!==v,"Image type is not supported: "+c);v="Pictures/"+f.generateImageName()+v;t=new ops.OpSetBlob;t.init({memberid:b,filename:v,mimetype:c,content:d});n.push(t);a.getStyleElement("Graphics","graphic",[u])||(c=new ops.OpAddStyle,c.init({memberid:b,styleName:"Graphics", -styleFamily:"graphic",isAutomaticStyle:!1,setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph","svg:x":"0cm","svg:y":"0cm","style:wrap":"dynamic","style:number-wrapped-paragraphs":"no-limit","style:wrap-contour":"false","style:vertical-pos":"top","style:vertical-rel":"paragraph","style:horizontal-pos":"center","style:horizontal-rel":"paragraph"}}}),n.push(c));c=f.generateStyleName();d=new ops.OpAddStyle;d.init({memberid:b,styleName:c,styleFamily:"graphic",isAutomaticStyle:!0, -setProperties:{"style:parent-style-name":"Graphics","style:graphic-properties":{"style:vertical-pos":"top","style:vertical-rel":"baseline","style:horizontal-pos":"center","style:horizontal-rel":"paragraph","fo:background-color":"transparent","style:background-transparency":"100%","style:shadow":"none","style:mirror":"none","fo:clip":"rect(0cm, 0cm, 0cm, 0cm)","draw:luminance":"0%","draw:contrast":"0%","draw:red":"0%","draw:green":"0%","draw:blue":"0%","draw:gamma":"100%","draw:color-inversion":"false", -"draw:image-opacity":"100%","draw:color-mode":"standard"}}});n.push(d);t=new ops.OpInsertImage;t.init({memberid:b,position:e.getCursorPosition(b),filename:v,frameWidth:k,frameHeight:p,frameStyleName:c,frameName:f.generateFrameName()});n.push(t);g.enqueue(n)}};this.destroy=function(a){e.unsubscribe(ops.Document.signalCursorMoved,p);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);a()};e.subscribe(ops.Document.signalCursorMoved,p);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);n()}; -gui.ImageController.enabledChanged="enabled/changed"; -gui.ImageSelector=function(g){function k(){var d=g.getSizer(),k=f.createElement("div");k.id="imageSelector";k.style.borderWidth="1px";d.appendChild(k);b.forEach(function(b){var d=f.createElement("div");d.className=b;k.appendChild(d)});return k}var d=odf.Namespaces.svgns,b="topLeft topRight bottomRight bottomLeft topMiddle rightMiddle bottomMiddle leftMiddle".split(" "),f=g.getElement().ownerDocument,n=!1;this.select=function(b){var r,q,e=f.getElementById("imageSelector");e||(e=k());n=!0;r=e.parentNode; -q=b.getBoundingClientRect();var l=r.getBoundingClientRect(),a=g.getZoomLevel();r=(q.left-l.left)/a-1;q=(q.top-l.top)/a-1;e.style.display="block";e.style.left=r+"px";e.style.top=q+"px";e.style.width=b.getAttributeNS(d,"width");e.style.height=b.getAttributeNS(d,"height")};this.clearSelection=function(){var b;n&&(b=f.getElementById("imageSelector"))&&(b.style.display="none");n=!1};this.isSelectorElement=function(b){var d=f.getElementById("imageSelector");return d?b===d||b.parentNode===d:!1}}; -(function(){function g(g){function d(b){p=b.which&&String.fromCharCode(b.which)===n;n=void 0;return!1===p}function b(){p=!1}function f(b){n=b.data;p=!1}var n,p=!1;this.destroy=function(n){g.unsubscribe("textInput",b);g.unsubscribe("compositionend",f);g.removeFilter("keypress",d);n()};g.subscribe("textInput",b);g.subscribe("compositionend",f);g.addFilter("keypress",d)}gui.InputMethodEditor=function(k,d){function b(c){a&&(c?a.getNode().setAttributeNS("urn:webodf:names:cursor","composing","true"):(a.getNode().removeAttributeNS("urn:webodf:names:cursor", -"composing"),h.textContent=""))}function f(){x&&(x=!1,b(!1),w.emit(gui.InputMethodEditor.signalCompositionEnd,{data:z}),z="")}function n(){I||(I=!0,f(),a&&a.getSelectedRange().collapsed?c.value="":c.value=u.writeToString(a.getSelectedRange().cloneContents()),c.setSelectionRange(0,c.value.length),I=!1)}function p(){d.hasFocus()&&y.trigger()}function r(){v=void 0;y.cancel();b(!0);x||w.emit(gui.InputMethodEditor.signalCompositionStart,{data:""})}function q(a){a=v=a.data;x=!0;z+=a;y.trigger()}function e(a){a.data!== -v&&(a=a.data,x=!0,z+=a,y.trigger());v=void 0}function l(){h.textContent=c.value}var a=null,c=d.getEventTrap(),m=c.ownerDocument,h,y,x=!1,z="",w=new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart,gui.InputMethodEditor.signalCompositionEnd]),v,u,t=[],A,I=!1;this.subscribe=w.subscribe;this.unsubscribe=w.unsubscribe;this.registerCursor=function(c){c.getMemberId()===k&&(a=c,a.getNode().appendChild(h),c.subscribe(ops.OdtCursor.signalCursorUpdated,p),d.subscribe("input",l),d.subscribe("compositionupdate", -l))};this.removeCursor=function(c){a&&c===k&&(a.getNode().removeChild(h),a.unsubscribe(ops.OdtCursor.signalCursorUpdated,p),d.unsubscribe("input",l),d.unsubscribe("compositionupdate",l),a=null)};this.destroy=function(a){d.unsubscribe("compositionstart",r);d.unsubscribe("compositionend",q);d.unsubscribe("textInput",e);d.unsubscribe("keypress",f);d.unsubscribe("focus",n);core.Async.destroyAll(A,a)};(function(){u=new odf.TextSerializer;u.filter=new odf.OdfNodeFilter;d.subscribe("compositionstart",r); -d.subscribe("compositionend",q);d.subscribe("textInput",e);d.subscribe("keypress",f);d.subscribe("focus",n);t.push(new g(d));A=t.map(function(a){return a.destroy});h=m.createElement("span");h.setAttribute("id","composer");y=core.Task.createTimeoutTask(n,1);A.push(y.destroy)})()};gui.InputMethodEditor.signalCompositionStart="input/compositionstart";gui.InputMethodEditor.signalCompositionEnd="input/compositionend"})(); -gui.MetadataController=function(g,k){function d(b){n.emit(gui.MetadataController.signalMetadataChanged,b)}function b(b){var d=-1===p.indexOf(b);d||runtime.log("Setting "+b+" is restricted.");return d}var f=g.getOdtDocument(),n=new core.EventNotifier([gui.MetadataController.signalMetadataChanged]),p=["dc:creator","dc:date","meta:editing-cycles","meta:editing-duration","meta:document-statistic"];this.setMetadata=function(d,f){var e={},l="",a;d&&Object.keys(d).filter(b).forEach(function(a){e[a]=d[a]}); -f&&(l=f.filter(b).join(","));if(0f:!1}function d(b){null!==b&&!1===k(b)&&(f=Math.abs(b-g))}var b=this,f,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT;this.token=void 0;this.process=function(f,g,q){var e,l;f.visualDirection===n?(e=g&&g.right,l=q&&q.left):(e=g&&g.left,l=q&&q.right);if(k(e)||k(l))return!0;if(g||q)d(e),d(l),b.token=f.token;return!1}}; -gui.LineBoundaryScanner=function(){var g=this,k=null;this.token=void 0;this.process=function(d,b,f){var n;if(n=f)if(k){var p=k;n=Math.min(p.bottom-p.top,f.bottom-f.top);var r=Math.max(p.top,f.top),p=Math.min(p.bottom,f.bottom)-r;n=.4>=(0b?a.previousSibling:a.nextSibling,c(f)===NodeFilter.FILTER_ACCEPT&&(d=f),a=a.parentNode;return d}function b(a,b){var c;return null===a?m.NO_NEIGHBOUR:p.isCharacterElement(a)?m.SPACE_CHAR:a.nodeType===f||p.isTextSpan(a)||p.isHyperlink(a)?(c=a.textContent.charAt(b()),q.test(c)?m.SPACE_CHAR:r.test(c)?m.PUNCTUATION_CHAR:m.WORD_CHAR):m.OTHER}var f=Node.TEXT_NODE,n=Node.ELEMENT_NODE, -p=odf.OdfUtils,r=/[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/, -q=/\s/,e=core.PositionFilter.FilterResult.FILTER_ACCEPT,l=core.PositionFilter.FilterResult.FILTER_REJECT,a=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,c=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,m={NO_NEIGHBOUR:0,SPACE_CHAR:1,PUNCTUATION_CHAR:2,WORD_CHAR:3,OTHER:4};this.acceptPosition=function(f){var g=f.container(),p=f.leftNode(),r=f.rightNode(),q=f.unfilteredDomOffset,v=function(){return f.unfilteredDomOffset()-1};g.nodeType===n&&(null===r&&(r=d(g,1,f.getNodeFilter())),null===p&&(p= -d(g,-1,f.getNodeFilter())));g!==r&&(q=function(){return 0});g!==p&&null!==p&&(v=function(){return p.textContent.length-1});g=b(p,v);r=b(r,q);return g===m.WORD_CHAR&&r===m.WORD_CHAR||g===m.PUNCTUATION_CHAR&&r===m.PUNCTUATION_CHAR||k===a&&g!==m.NO_NEIGHBOUR&&r===m.SPACE_CHAR||k===c&&g===m.SPACE_CHAR&&r!==m.NO_NEIGHBOUR?l:e}};odf.WordBoundaryFilter.IncludeWhitespace={None:0,TRAILING:1,LEADING:2}; -gui.SelectionController=function(g,k){function d(a){var b=a.spec();if(a.isEdit||b.memberid===k)I=void 0,K.cancel()}function b(){var a=x.getCursor(k).getNode();return x.createStepIterator(a,0,[v,t],x.getRootElement(a))}function f(a,b,c){c=new odf.WordBoundaryFilter(x,c);var d=x.getRootElement(a)||x.getRootNode(),e=x.createRootFilter(d);return x.createStepIterator(a,b,[v,e,c],d)}function n(a,b){return b?{anchorNode:a.startContainer,anchorOffset:a.startOffset,focusNode:a.endContainer,focusOffset:a.endOffset}: -{anchorNode:a.endContainer,anchorOffset:a.endOffset,focusNode:a.startContainer,focusOffset:a.startOffset}}function p(a,b,c){var d=new ops.OpMoveCursor;d.init({memberid:k,position:a,length:b||0,selectionType:c});return d}function r(a,b,c){var d;d=x.getCursor(k);d=n(d.getSelectedRange(),d.hasForwardSelection());d.focusNode=a;d.focusOffset=b;c||(d.anchorNode=d.focusNode,d.anchorOffset=d.focusOffset);a=x.convertDomToCursorRange(d);g.enqueue([p(a.position,a.length)])}function q(a){var b;b=f(a.startContainer, -a.startOffset,L);b.roundToPreviousStep()&&a.setStart(b.container(),b.offset());b=f(a.endContainer,a.endOffset,E);b.roundToNextStep()&&a.setEnd(b.container(),b.offset())}function e(a){var b=w.getParagraphElements(a),c=b[0],b=b[b.length-1];c&&a.setStart(c,0);b&&(w.isParagraph(a.endContainer)&&0===a.endOffset?a.setEndBefore(b):a.setEnd(b,b.childNodes.length))}function l(a,b,c,d){var e,f;d?(e=c.startContainer,f=c.startOffset):(e=c.endContainer,f=c.endOffset);z.containsNode(a,e)||(f=0>z.comparePoints(a, -0,e,f)?0:a.childNodes.length,e=a);a=x.createStepIterator(e,f,b,w.getParagraphElement(e)||a);a.roundToClosestStep()||runtime.assert(!1,"No step found in requested range");d?c.setStart(a.container(),a.offset()):c.setEnd(a.container(),a.offset())}function a(a,c){var d=b();d.advanceStep(a)&&r(d.container(),d.offset(),c)}function c(a,c){var d,e=I,f=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];void 0===e&&A&&(e=A());isNaN(e)||(d=b(),u.moveToFilteredStep(d,a,f)&&d.advanceStep(a)&&(f=[new gui.ClosestXOffsetScanner(e), -new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner],u.moveToFilteredStep(d,a,f)&&(r(d.container(),d.offset(),c),I=e,K.restart())))}function m(a,c){var d=b(),e=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];u.moveToFilteredStep(d,a,e)&&r(d.container(),d.offset(),c)}function h(a,b){var c=x.getCursor(k),c=n(c.getSelectedRange(),c.hasForwardSelection()),c=f(c.focusNode,c.focusOffset,L);c.advanceStep(a)&&r(c.container(),c.offset(),b)}function y(a,b,c){var d=!1,e=x.getCursor(k), -e=n(e.getSelectedRange(),e.hasForwardSelection()),d=x.getRootElement(e.focusNode);runtime.assert(Boolean(d),"SelectionController: Cursor outside root");e=x.createStepIterator(e.focusNode,e.focusOffset,[v,t],d);e.roundToClosestStep();e.advanceStep(a)&&(c=c(e.container()))&&(a===N?(e.setPosition(c,0),d=e.roundToNextStep()):(e.setPosition(c,c.childNodes.length),d=e.roundToPreviousStep()),d&&r(e.container(),e.offset(),b))}var x=g.getOdtDocument(),z=core.DomUtils,w=odf.OdfUtils,v=x.getPositionFilter(), -u=new gui.GuiStepUtils,t=x.createRootFilter(k),A=null,I,K,L=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,E=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,N=core.StepDirection.PREVIOUS,O=core.StepDirection.NEXT;this.selectionToRange=function(a){var b=0<=z.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset),c=a.focusNode.ownerDocument.createRange();b?(c.setStart(a.anchorNode,a.anchorOffset),c.setEnd(a.focusNode,a.focusOffset)):(c.setStart(a.focusNode,a.focusOffset),c.setEnd(a.anchorNode, -a.anchorOffset));return{range:c,hasForwardSelection:b}};this.rangeToSelection=n;this.selectImage=function(a){var c=x.getRootElement(a),b=x.createRootFilter(c),c=x.createStepIterator(a,0,[b,x.getPositionFilter()],c),d;c.roundToPreviousStep()||runtime.assert(!1,"No walkable position before frame");b=c.container();d=c.offset();c.setPosition(a,a.childNodes.length);c.roundToNextStep()||runtime.assert(!1,"No walkable position after frame");a=x.convertDomToCursorRange({anchorNode:b,anchorOffset:d,focusNode:c.container(), -focusOffset:c.offset()});a=p(a.position,a.length,ops.OdtCursor.RegionSelection);g.enqueue([a])};this.expandToWordBoundaries=q;this.expandToParagraphBoundaries=e;this.selectRange=function(a,c,b){var d=x.getOdfCanvas().getElement(),f,h=[v];f=z.containsNode(d,a.startContainer);d=z.containsNode(d,a.endContainer);if(f||d)if(f&&d&&(2===b?q(a):3<=b&&e(a)),(b=c?x.getRootElement(a.startContainer):x.getRootElement(a.endContainer))||(b=x.getRootNode()),h.push(x.createRootFilter(b)),l(b,h,a,!0),l(b,h,a,!1),a= -n(a,c),c=x.convertDomToCursorRange(a),a=x.getCursorSelection(k),c.position!==a.position||c.length!==a.length)a=p(c.position,c.length,ops.OdtCursor.RangeSelection),g.enqueue([a])};this.moveCursorToLeft=function(){a(N,!1);return!0};this.moveCursorToRight=function(){a(O,!1);return!0};this.extendSelectionToLeft=function(){a(N,!0);return!0};this.extendSelectionToRight=function(){a(O,!0);return!0};this.setCaretXPositionLocator=function(a){A=a};this.moveCursorUp=function(){c(N,!1);return!0};this.moveCursorDown= -function(){c(O,!1);return!0};this.extendSelectionUp=function(){c(N,!0);return!0};this.extendSelectionDown=function(){c(O,!0);return!0};this.moveCursorBeforeWord=function(){h(N,!1);return!0};this.moveCursorPastWord=function(){h(O,!1);return!0};this.extendSelectionBeforeWord=function(){h(N,!0);return!0};this.extendSelectionPastWord=function(){h(O,!0);return!0};this.moveCursorToLineStart=function(){m(N,!1);return!0};this.moveCursorToLineEnd=function(){m(O,!1);return!0};this.extendSelectionToLineStart= -function(){m(N,!0);return!0};this.extendSelectionToLineEnd=function(){m(O,!0);return!0};this.extendSelectionToParagraphStart=function(){y(N,!0,w.getParagraphElement);return!0};this.extendSelectionToParagraphEnd=function(){y(O,!0,w.getParagraphElement);return!0};this.moveCursorToParagraphStart=function(){y(N,!1,w.getParagraphElement);return!0};this.moveCursorToParagraphEnd=function(){y(O,!1,w.getParagraphElement);return!0};this.moveCursorToDocumentStart=function(){y(N,!1,x.getRootElement);return!0}; -this.moveCursorToDocumentEnd=function(){y(O,!1,x.getRootElement);return!0};this.extendSelectionToDocumentStart=function(){y(N,!0,x.getRootElement);return!0};this.extendSelectionToDocumentEnd=function(){y(O,!0,x.getRootElement);return!0};this.extendSelectionToEntireDocument=function(){var a=x.getCursor(k),a=x.getRootElement(a.getNode()),c,b,d;runtime.assert(Boolean(a),"SelectionController: Cursor outside root");d=x.createStepIterator(a,0,[v,t],a);d.roundToClosestStep();c=d.container();b=d.offset(); -d.setPosition(a,a.childNodes.length);d.roundToClosestStep();a=x.convertDomToCursorRange({anchorNode:c,anchorOffset:b,focusNode:d.container(),focusOffset:d.offset()});g.enqueue([p(a.position,a.length)]);return!0};this.destroy=function(a){x.unsubscribe(ops.OdtDocument.signalOperationStart,d);core.Async.destroyAll([K.destroy],a)};(function(){K=core.Task.createTimeoutTask(function(){I=void 0},2E3);x.subscribe(ops.OdtDocument.signalOperationStart,d)})()}; -gui.TextController=function(g,k,d,b,f,n){function p(){y=!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)?d.isLocalCursorWithinOwnAnnotation():!0}function r(a){a.getMemberId()===b&&p()}function q(a,b,d){var e=[c.getPositionFilter()];d&&e.push(c.createRootFilter(a.startContainer));d=c.createStepIterator(a.startContainer,a.startOffset,e,b);d.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range start");b=c.convertDomPointToCursorStep(d.container(),d.offset()); -a.collapsed?a=b:(d.setPosition(a.endContainer,a.endOffset),d.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range end"),a=c.convertDomPointToCursorStep(d.container(),d.offset()));return{position:b,length:a-b}}function e(a){var c,d,e,f=m.getParagraphElements(a),g=a.cloneRange(),l=[];c=f[0];1a.length&&(a.position+=a.length,a.length=-a.length);return a}function a(a){if(!y)return!1;var d,f=c.getCursor(b).getSelectedRange().cloneRange(), -h=l(c.getCursorSelection(b)),m;if(0===h.length){h=void 0;d=c.getCursor(b).getNode();m=c.getRootElement(d);var k=[c.getPositionFilter(),c.createRootFilter(m)];m=c.createStepIterator(d,0,k,m);m.roundToClosestStep()&&(a?m.nextStep():m.previousStep())&&(h=l(c.convertDomToCursorRange({anchorNode:d,anchorOffset:0,focusNode:m.container(),focusOffset:m.offset()})),a?(f.setStart(d,0),f.setEnd(m.container(),m.offset())):(f.setStart(m.container(),m.offset()),f.setEnd(d,0)))}h&&g.enqueue(e(f));return void 0!== -h}var c=g.getOdtDocument(),m=odf.OdfUtils,h=core.DomUtils,y=!1,x=odf.Namespaces.textns,z=core.StepDirection.NEXT;this.isEnabled=function(){return y};this.enqueueParagraphSplittingOps=function(){if(!y)return!1;var a=c.getCursor(b),d=a.getSelectedRange(),f=l(c.getCursorSelection(b)),h=[],a=m.getParagraphElement(a.getNode()),k=a.getAttributeNS(x,"style-name")||"";0d.left&&(d=v(e)))c.focusNode=d.container,c.focusOffset=d.offset, -b&&(c.anchorNode=c.focusNode,c.anchorOffset=c.focusOffset)}else S.isImage(c.focusNode.firstChild)&&1===c.focusOffset&&S.isCharacterFrame(c.focusNode)&&(d=v(c.focusNode))&&(c.anchorNode=c.focusNode=d.container,c.anchorOffset=c.focusOffset=d.offset);c.anchorNode&&c.focusNode&&(c=T.selectionToRange(c),T.selectRange(c.range,c.hasForwardSelection,0===a.button?a.detail:0));F.focus()}function t(a){var c;if(c=n(a.clientX,a.clientY))a=c.container,c=c.offset,a={anchorNode:a,anchorOffset:c,focusNode:a,focusOffset:c}, -a=T.selectionToRange(a),T.selectRange(a.range,a.hasForwardSelection,2),F.focus()}function A(a){var c=a.target||a.srcElement||null,d,e,f;ma.processRequests();U&&(S.isImage(c)&&S.isCharacterFrame(c.parentNode)&&W.getSelection().isCollapsed?(T.selectImage(c.parentNode),F.focus()):la.isSelectorElement(c)?F.focus():B?(c=b.getSelectedRange(),e=c.collapsed,S.isImage(c.endContainer)&&0===c.endOffset&&S.isCharacterFrame(c.endContainer.parentNode)&&(f=c.endContainer.parentNode,f=v(f))&&(c.setEnd(f.container, -f.offset),e&&c.collapse(!1)),T.selectRange(c,b.hasForwardSelection(),0===a.button?a.detail:0),F.focus()):ua?u(a):(d=aa.cloneEvent(a),M=runtime.setTimeout(function(){u(d)},0)),oa=0,B=U=!1)}function I(a){var c=J.getCursor(d).getSelectedRange();c.collapsed||fa.exportRangeToDataTransfer(a.dataTransfer,c)}function K(){U&&F.focus();oa=0;B=U=!1}function L(a){A(a)}function E(a){var c=a.target||a.srcElement||null,b=null;"annotationRemoveButton"===c.className?(runtime.assert(ja,"Remove buttons are displayed on annotations while annotation editing is disabled in the controller."), -b=c.parentNode.getElementsByTagNameNS(odf.Namespaces.officens,"annotation").item(0),ca.removeAnnotation(b),F.focus()):"webodf-draggable"!==c.getAttribute("class")&&A(a)}function N(a){(a=a.data)&&(-1===a.indexOf("\n")?da.insertText(a):ea.paste(a))}function O(a){return function(){a();return!0}}function D(a){return function(c){return J.getCursor(d).getSelectionType()===ops.OdtCursor.RangeSelection?a(c):!0}}function V(c){F.unsubscribe("keydown",C.handleEvent);F.unsubscribe("keypress",Z.handleEvent);F.unsubscribe("keyup", -ba.handleEvent);F.unsubscribe("copy",q);F.unsubscribe("mousedown",w);F.unsubscribe("mousemove",ma.trigger);F.unsubscribe("mouseup",E);F.unsubscribe("contextmenu",L);F.unsubscribe("dragstart",I);F.unsubscribe("dragend",K);F.unsubscribe("click",pa.handleClick);F.unsubscribe("longpress",t);F.unsubscribe("drag",y);F.unsubscribe("dragstop",x);J.unsubscribe(ops.OdtDocument.signalOperationEnd,na.trigger);J.unsubscribe(ops.Document.signalCursorAdded,ka.registerCursor);J.unsubscribe(ops.Document.signalCursorRemoved, -ka.removeCursor);J.unsubscribe(ops.OdtDocument.signalOperationEnd,a);c()}var W=runtime.getWindow(),J=k.getOdtDocument(),R=new gui.SessionConstraints,P=new gui.SessionContext(k,d),aa=core.DomUtils,S=odf.OdfUtils,fa=new gui.MimeDataExporter,ha=new gui.Clipboard(fa),C=new gui.KeyboardHandler,Z=new gui.KeyboardHandler,ba=new gui.KeyboardHandler,U=!1,ga=new odf.ObjectNameGenerator(J.getOdfCanvas().odfContainer(),d),B=!1,Y=null,M,Q=null,F=new gui.EventManager(J),ja=f.annotationsEnabled,ca=new gui.AnnotationController(k, -R,d),X=new gui.DirectFormattingController(k,R,P,d,ga,f.directTextStylingEnabled,f.directParagraphStylingEnabled),da=new gui.TextController(k,R,P,d,X.createCursorStyleOp,X.createParagraphStyleOps),qa=new gui.ImageController(k,R,P,d,ga),la=new gui.ImageSelector(J.getOdfCanvas()),ia=J.createPositionIterator(J.getRootNode()),ma,na,ea=new gui.PasteController(k,R,P,d),ka=new gui.InputMethodEditor(d,F),oa=0,pa=new gui.HyperlinkClickHandler(J.getOdfCanvas().getElement,C,ba),ta=new gui.HyperlinkController(k, -R,P,d),T=new gui.SelectionController(k,d),va=new gui.MetadataController(k,d),G=gui.KeyboardHandler.Modifier,H=gui.KeyboardHandler.KeyCode,ra=-1!==W.navigator.appVersion.toLowerCase().indexOf("mac"),ua=-1!==["iPad","iPod","iPhone"].indexOf(W.navigator.platform),sa;runtime.assert(null!==W,"Expected to be run in an environment which has a global window, like a browser.");this.undo=m;this.redo=h;this.insertLocalCursor=function(){runtime.assert(void 0===k.getOdtDocument().getCursor(d),"Inserting local cursor a second time."); -var a=new ops.OpAddCursor;a.init({memberid:d});k.enqueue([a]);F.focus()};this.removeLocalCursor=function(){runtime.assert(void 0!==k.getOdtDocument().getCursor(d),"Removing local cursor without inserting before.");var a=new ops.OpRemoveCursor;a.init({memberid:d});k.enqueue([a])};this.startEditing=function(){ka.subscribe(gui.InputMethodEditor.signalCompositionStart,da.removeCurrentSelection);ka.subscribe(gui.InputMethodEditor.signalCompositionEnd,N);F.subscribe("beforecut",r);F.subscribe("cut",p); -F.subscribe("beforepaste",l);F.subscribe("paste",e);Q&&Q.initialize();F.setEditing(!0);pa.setModifier(ra?G.Meta:G.Ctrl);C.bind(H.Backspace,G.None,O(da.removeTextByBackspaceKey),!0);C.bind(H.Delete,G.None,da.removeTextByDeleteKey);C.bind(H.Tab,G.None,D(function(){da.insertText("\t");return!0}));ra?(C.bind(H.Clear,G.None,da.removeCurrentSelection),C.bind(H.B,G.Meta,D(X.toggleBold)),C.bind(H.I,G.Meta,D(X.toggleItalic)),C.bind(H.U,G.Meta,D(X.toggleUnderline)),C.bind(H.L,G.MetaShift,D(X.alignParagraphLeft)), -C.bind(H.E,G.MetaShift,D(X.alignParagraphCenter)),C.bind(H.R,G.MetaShift,D(X.alignParagraphRight)),C.bind(H.J,G.MetaShift,D(X.alignParagraphJustified)),ja&&C.bind(H.C,G.MetaShift,ca.addAnnotation),C.bind(H.Z,G.Meta,m),C.bind(H.Z,G.MetaShift,h)):(C.bind(H.B,G.Ctrl,D(X.toggleBold)),C.bind(H.I,G.Ctrl,D(X.toggleItalic)),C.bind(H.U,G.Ctrl,D(X.toggleUnderline)),C.bind(H.L,G.CtrlShift,D(X.alignParagraphLeft)),C.bind(H.E,G.CtrlShift,D(X.alignParagraphCenter)),C.bind(H.R,G.CtrlShift,D(X.alignParagraphRight)), -C.bind(H.J,G.CtrlShift,D(X.alignParagraphJustified)),ja&&C.bind(H.C,G.CtrlAlt,ca.addAnnotation),C.bind(H.Z,G.Ctrl,m),C.bind(H.Z,G.CtrlShift,h));Z.setDefault(D(function(a){var c;c=null===a.which||void 0===a.which?String.fromCharCode(a.keyCode):0!==a.which&&0!==a.charCode?String.fromCharCode(a.which):null;return!c||a.altKey||a.ctrlKey||a.metaKey?!1:(da.insertText(c),!0)}));Z.bind(H.Enter,G.None,D(da.enqueueParagraphSplittingOps))};this.endEditing=function(){ka.unsubscribe(gui.InputMethodEditor.signalCompositionStart, -da.removeCurrentSelection);ka.unsubscribe(gui.InputMethodEditor.signalCompositionEnd,N);F.unsubscribe("cut",p);F.unsubscribe("beforecut",r);F.unsubscribe("paste",e);F.unsubscribe("beforepaste",l);F.setEditing(!1);pa.setModifier(G.None);C.bind(H.Backspace,G.None,function(){return!0},!0);C.unbind(H.Delete,G.None);C.unbind(H.Tab,G.None);ra?(C.unbind(H.Clear,G.None),C.unbind(H.B,G.Meta),C.unbind(H.I,G.Meta),C.unbind(H.U,G.Meta),C.unbind(H.L,G.MetaShift),C.unbind(H.E,G.MetaShift),C.unbind(H.R,G.MetaShift), -C.unbind(H.J,G.MetaShift),ja&&C.unbind(H.C,G.MetaShift),C.unbind(H.Z,G.Meta),C.unbind(H.Z,G.MetaShift)):(C.unbind(H.B,G.Ctrl),C.unbind(H.I,G.Ctrl),C.unbind(H.U,G.Ctrl),C.unbind(H.L,G.CtrlShift),C.unbind(H.E,G.CtrlShift),C.unbind(H.R,G.CtrlShift),C.unbind(H.J,G.CtrlShift),ja&&C.unbind(H.C,G.CtrlAlt),C.unbind(H.Z,G.Ctrl),C.unbind(H.Z,G.CtrlShift));Z.setDefault(null);Z.unbind(H.Enter,G.None)};this.getInputMemberId=function(){return d};this.getSession=function(){return k};this.getSessionConstraints=function(){return R}; -this.setUndoManager=function(a){Q&&Q.unsubscribe(gui.UndoManager.signalUndoStackChanged,c);if(Q=a)Q.setDocument(J),Q.setPlaybackFunction(k.enqueue),Q.subscribe(gui.UndoManager.signalUndoStackChanged,c)};this.getUndoManager=function(){return Q};this.getMetadataController=function(){return va};this.getAnnotationController=function(){return ca};this.getDirectFormattingController=function(){return X};this.getHyperlinkClickHandler=function(){return pa};this.getHyperlinkController=function(){return ta}; -this.getImageController=function(){return qa};this.getSelectionController=function(){return T};this.getTextController=function(){return da};this.getEventManager=function(){return F};this.getKeyboardHandlers=function(){return{keydown:C,keypress:Z}};this.destroy=function(a){var c=[ma.destroy,na.destroy,X.destroy,ka.destroy,F.destroy,pa.destroy,ta.destroy,va.destroy,T.destroy,da.destroy,V];sa&&c.unshift(sa.destroy);runtime.clearTimeout(M);core.Async.destroyAll(c,a)};ma=core.Task.createRedrawTask(z); -na=core.Task.createRedrawTask(function(){var a=J.getCursor(d);if(a&&a.getSelectionType()===ops.OdtCursor.RegionSelection&&(a=S.getImageElements(a.getSelectedRange())[0])){la.select(a.parentNode);return}la.clearSelection()});C.bind(H.Left,G.None,D(T.moveCursorToLeft));C.bind(H.Right,G.None,D(T.moveCursorToRight));C.bind(H.Up,G.None,D(T.moveCursorUp));C.bind(H.Down,G.None,D(T.moveCursorDown));C.bind(H.Left,G.Shift,D(T.extendSelectionToLeft));C.bind(H.Right,G.Shift,D(T.extendSelectionToRight));C.bind(H.Up, -G.Shift,D(T.extendSelectionUp));C.bind(H.Down,G.Shift,D(T.extendSelectionDown));C.bind(H.Home,G.None,D(T.moveCursorToLineStart));C.bind(H.End,G.None,D(T.moveCursorToLineEnd));C.bind(H.Home,G.Ctrl,D(T.moveCursorToDocumentStart));C.bind(H.End,G.Ctrl,D(T.moveCursorToDocumentEnd));C.bind(H.Home,G.Shift,D(T.extendSelectionToLineStart));C.bind(H.End,G.Shift,D(T.extendSelectionToLineEnd));C.bind(H.Up,G.CtrlShift,D(T.extendSelectionToParagraphStart));C.bind(H.Down,G.CtrlShift,D(T.extendSelectionToParagraphEnd)); -C.bind(H.Home,G.CtrlShift,D(T.extendSelectionToDocumentStart));C.bind(H.End,G.CtrlShift,D(T.extendSelectionToDocumentEnd));ra?(C.bind(H.Left,G.Alt,D(T.moveCursorBeforeWord)),C.bind(H.Right,G.Alt,D(T.moveCursorPastWord)),C.bind(H.Left,G.Meta,D(T.moveCursorToLineStart)),C.bind(H.Right,G.Meta,D(T.moveCursorToLineEnd)),C.bind(H.Home,G.Meta,D(T.moveCursorToDocumentStart)),C.bind(H.End,G.Meta,D(T.moveCursorToDocumentEnd)),C.bind(H.Left,G.AltShift,D(T.extendSelectionBeforeWord)),C.bind(H.Right,G.AltShift, -D(T.extendSelectionPastWord)),C.bind(H.Left,G.MetaShift,D(T.extendSelectionToLineStart)),C.bind(H.Right,G.MetaShift,D(T.extendSelectionToLineEnd)),C.bind(H.Up,G.AltShift,D(T.extendSelectionToParagraphStart)),C.bind(H.Down,G.AltShift,D(T.extendSelectionToParagraphEnd)),C.bind(H.Up,G.MetaShift,D(T.extendSelectionToDocumentStart)),C.bind(H.Down,G.MetaShift,D(T.extendSelectionToDocumentEnd)),C.bind(H.A,G.Meta,D(T.extendSelectionToEntireDocument))):(C.bind(H.Left,G.Ctrl,D(T.moveCursorBeforeWord)),C.bind(H.Right, -G.Ctrl,D(T.moveCursorPastWord)),C.bind(H.Left,G.CtrlShift,D(T.extendSelectionBeforeWord)),C.bind(H.Right,G.CtrlShift,D(T.extendSelectionPastWord)),C.bind(H.A,G.Ctrl,D(T.extendSelectionToEntireDocument)));ua&&(sa=new gui.IOSSafariSupport(F));F.subscribe("keydown",C.handleEvent);F.subscribe("keypress",Z.handleEvent);F.subscribe("keyup",ba.handleEvent);F.subscribe("copy",q);F.subscribe("mousedown",w);F.subscribe("mousemove",ma.trigger);F.subscribe("mouseup",E);F.subscribe("contextmenu",L);F.subscribe("dragstart", -I);F.subscribe("dragend",K);F.subscribe("click",pa.handleClick);F.subscribe("longpress",t);F.subscribe("drag",y);F.subscribe("dragstop",x);J.subscribe(ops.OdtDocument.signalOperationEnd,na.trigger);J.subscribe(ops.Document.signalCursorAdded,ka.registerCursor);J.subscribe(ops.Document.signalCursorRemoved,ka.removeCursor);J.subscribe(ops.OdtDocument.signalOperationEnd,a)}})(); -gui.CaretManager=function(g,k){function d(b){return n.hasOwnProperty(b)?n[b]:null}function b(){return Object.keys(n).map(function(b){return n[b]})}function f(b){var d=n[b];d&&(delete n[b],b===g.getInputMemberId()?(r.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,d.ensureVisible),r.unsubscribe(ops.Document.signalCursorMoved,d.refreshCursorBlinking),q.unsubscribe("compositionupdate",d.handleUpdate),q.unsubscribe("compositionend",d.handleUpdate),q.unsubscribe("focus",d.setFocus),q.unsubscribe("blur", -d.removeFocus),p.removeEventListener("focus",d.show,!1),p.removeEventListener("blur",d.hide,!1)):r.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,d.handleUpdate),d.destroy(function(){}))}var n={},p=runtime.getWindow(),r=g.getSession().getOdtDocument(),q=g.getEventManager();this.registerCursor=function(b,d,a){var c=b.getMemberId();b=new gui.Caret(b,k,d,a);n[c]=b;c===g.getInputMemberId()?(runtime.log("Starting to track input on new cursor of "+c),r.subscribe(ops.OdtDocument.signalProcessingBatchEnd, -b.ensureVisible),r.subscribe(ops.Document.signalCursorMoved,b.refreshCursorBlinking),q.subscribe("compositionupdate",b.handleUpdate),q.subscribe("compositionend",b.handleUpdate),q.subscribe("focus",b.setFocus),q.subscribe("blur",b.removeFocus),p.addEventListener("focus",b.show,!1),p.addEventListener("blur",b.hide,!1),b.setOverlayElement(q.getEventTrap())):r.subscribe(ops.OdtDocument.signalProcessingBatchEnd,b.handleUpdate);return b};this.getCaret=d;this.getCarets=b;this.destroy=function(d){var l= -b().map(function(a){return a.destroy});g.getSelectionController().setCaretXPositionLocator(null);r.unsubscribe(ops.Document.signalCursorRemoved,f);n={};core.Async.destroyAll(l,d)};g.getSelectionController().setCaretXPositionLocator(function(){var b=d(g.getInputMemberId()),f;b&&(f=b.getBoundingClientRect());return f?f.right:void 0});r.subscribe(ops.Document.signalCursorRemoved,f)}; -gui.EditInfoHandle=function(g){var k=[],d,b=g.ownerDocument,f=b.documentElement.namespaceURI;this.setEdits=function(g){k=g;var p,r,q,e;core.DomUtils.removeAllChildNodes(d);for(g=0;gc?(r=d(1,0),q=d(.5,1E4-c),e=d(.2,2E4-c)):1E4<=c&&2E4>c?(r=d(.5,0),e=d(.2,2E4-c)):r=d(.2,0)};this.getEdits=function(){return g.getEdits()};this.clearEdits=function(){g.clearEdits(); -n.setEdits([]);p.hasAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")&&p.removeAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")};this.getEditInfo=function(){return g};this.show=function(){p.style.display="block"};this.hide=function(){b.hideHandle();p.style.display="none"};this.showHandle=function(){n.show()};this.hideHandle=function(){n.hide()};this.destroy=function(b){runtime.clearTimeout(r);runtime.clearTimeout(q);runtime.clearTimeout(e);f.removeChild(p);n.destroy(function(a){a? -b(a):g.destroy(b)})};(function(){var d=g.getOdtDocument().getDOMDocument();p=d.createElementNS(d.documentElement.namespaceURI,"div");p.setAttribute("class","editInfoMarker");p.onmouseover=function(){b.showHandle()};p.onmouseout=function(){b.hideHandle()};f=g.getNode();f.appendChild(p);n=new gui.EditInfoHandle(f);k||b.hide()})()}; -gui.HyperlinkTooltipView=function(g,k){var d=core.DomUtils,b=odf.OdfUtils,f=runtime.getWindow(),n,p,r;runtime.assert(null!==f,"Expected to be run in an environment which has a global window, like a browser.");this.showTooltip=function(q){var e=q.target||q.srcElement,l=g.getSizer(),a=g.getZoomLevel(),c;a:{for(;e;){if(b.isHyperlink(e))break a;if(b.isParagraph(e)||b.isInlineRoot(e))break;e=e.parentNode}e=null}if(e){d.containsNode(l,r)||l.appendChild(r);c=p;var m;switch(k()){case gui.KeyboardHandler.Modifier.Ctrl:m= -runtime.tr("Ctrl-click to follow link");break;case gui.KeyboardHandler.Modifier.Meta:m=runtime.tr("\u2318-click to follow link");break;default:m=""}c.textContent=m;n.textContent=b.getHyperlinkTarget(e);r.style.display="block";c=f.innerWidth-r.offsetWidth-15;e=q.clientX>c?c:q.clientX+15;c=f.innerHeight-r.offsetHeight-10;q=q.clientY>c?c:q.clientY+10;l=l.getBoundingClientRect();e=(e-l.left)/a;q=(q-l.top)/a;r.style.left=e+"px";r.style.top=q+"px"}};this.hideTooltip=function(){r.style.display="none"};this.destroy= -function(b){r.parentNode&&r.parentNode.removeChild(r);b()};(function(){var b=g.getElement().ownerDocument;n=b.createElement("span");p=b.createElement("span");n.className="webodf-hyperlinkTooltipLink";p.className="webodf-hyperlinkTooltipText";r=b.createElement("div");r.className="webodf-hyperlinkTooltip";r.appendChild(n);r.appendChild(p);g.getElement().appendChild(r)})()}; -gui.OdfFieldView=function(g){function k(){var b=odf.OdfSchema.getFields().map(function(b){return b.replace(":","|")}),d=b.join(",\n")+"\n{ background-color: #D0D0D0; }\n",b=b.map(function(b){return b+":empty::after"}).join(",\n")+"\n{ content:' '; white-space: pre; }\n";return d+"\n"+b}var d,b=g.getElement().ownerDocument;this.showFieldHighlight=function(){d.appendChild(b.createTextNode(k()))};this.hideFieldHighlight=function(){for(var b=d.sheet,g=b.cssRules;g.length;)b.deleteRule(g.length-1)};this.destroy= -function(b){d.parentNode&&d.parentNode.removeChild(d);b()};d=function(){var d=b.getElementsByTagName("head").item(0),g=b.createElement("style"),k="";g.type="text/css";g.media="screen, print, handheld, projection";odf.Namespaces.forEachPrefix(function(b,d){k+="@namespace "+b+" url("+d+");\n"});g.appendChild(b.createTextNode(k));d.appendChild(g);return g}()}; -gui.ShadowCursor=function(g){var k=g.getDOMDocument().createRange(),d=!0;this.removeFromDocument=function(){};this.getMemberId=function(){return gui.ShadowCursor.ShadowCursorMemberId};this.getSelectedRange=function(){return k};this.setSelectedRange=function(b,f){k=b;d=!1!==f};this.hasForwardSelection=function(){return d};this.getDocument=function(){return g};this.getSelectionType=function(){return ops.OdtCursor.RangeSelection};k.setStart(g.getRootNode(),0)};gui.ShadowCursor.ShadowCursorMemberId=""; -gui.SelectionView=function(g){};gui.SelectionView.prototype.rerender=function(){};gui.SelectionView.prototype.show=function(){};gui.SelectionView.prototype.hide=function(){};gui.SelectionView.prototype.destroy=function(g){}; -gui.SelectionViewManager=function(g){function k(){return Object.keys(d).map(function(b){return d[b]})}var d={};this.getSelectionView=function(b){return d.hasOwnProperty(b)?d[b]:null};this.getSelectionViews=k;this.removeSelectionView=function(b){d.hasOwnProperty(b)&&(d[b].destroy(function(){}),delete d[b])};this.hideSelectionView=function(b){d.hasOwnProperty(b)&&d[b].hide()};this.showSelectionView=function(b){d.hasOwnProperty(b)&&d[b].show()};this.rerenderSelectionViews=function(){Object.keys(d).forEach(function(b){d[b].rerender()})}; -this.registerCursor=function(b,f){var k=b.getMemberId(),p=new g(b);f?p.show():p.hide();return d[k]=p};this.destroy=function(b){function d(k,r){r?b(r):k .webodf-draggable"),a=gui.ShadowCursor.ShadowCursorMemberId,e(".webodf-selectionOverlay","{ fill: "+b+"; stroke: "+b+";}",""),e(".webodf-touchEnabled .webodf-selectionOverlay","{ display: block; }"," > .webodf-draggable"))}function l(a){var c,b;for(b in t)t.hasOwnProperty(b)&&(c=t[b],a?c.show():c.hide())}function a(a){n.getCarets().forEach(function(c){a?c.showHandle():c.hideHandle()})}function c(a){var c=a.getMemberId();a=a.getProperties();e(c,a.fullName,a.color)}function m(a){var c= -a.getMemberId(),d=b.getOdtDocument().getMember(c).getProperties();n.registerCursor(a,E,N);p.registerCursor(a,!0);if(a=n.getCaret(c))a.setAvatarImageUrl(d.imageUrl),a.setColor(d.color);runtime.log("+++ View here +++ eagerly created an Caret for '"+c+"'! +++")}function h(a){a=a.getMemberId();var c=p.getSelectionView(d),b=p.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId),e=n.getCaret(d);a===d?(b.hide(),c&&c.show(),e&&e.show()):a===gui.ShadowCursor.ShadowCursorMemberId&&(b.show(),c&&c.hide(), -e&&e.hide())}function y(a){p.removeSelectionView(a)}function x(a){var c=a.paragraphElement,d=a.memberId;a=a.timeStamp;var e,f="",h=c.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0);h?(f=h.getAttributeNS("urn:webodf:names:editinfo","id"),e=t[f]):(f=Math.random().toString(),e=new ops.EditInfo(c,b.getOdtDocument()),e=new gui.EditInfoMarker(e,L),h=c.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0),h.setAttributeNS("urn:webodf:names:editinfo","id",f),t[f]=e); -e.addEdit(d,new Date(a));K.trigger()}function z(){var a;u.hasChildNodes()&&core.DomUtils.removeAllChildNodes(u);!0===f.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)&&(a=b.getOdtDocument().getMember(d))&&(a=a.getProperties().fullName,u.appendChild(document.createTextNode(".annotationWrapper:not([creator = '"+a+"']) .annotationRemoveButton { display: none; }")))}function w(a){var b=Object.keys(t).map(function(a){return t[a]});A.unsubscribe(ops.Document.signalMemberAdded,c);A.unsubscribe(ops.Document.signalMemberUpdated, -c);A.unsubscribe(ops.Document.signalCursorAdded,m);A.unsubscribe(ops.Document.signalCursorRemoved,y);A.unsubscribe(ops.OdtDocument.signalParagraphChanged,x);A.unsubscribe(ops.Document.signalCursorMoved,h);A.unsubscribe(ops.OdtDocument.signalParagraphChanged,p.rerenderSelectionViews);A.unsubscribe(ops.OdtDocument.signalTableAdded,p.rerenderSelectionViews);A.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,p.rerenderSelectionViews);f.unsubscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN, -z);A.unsubscribe(ops.Document.signalMemberAdded,z);A.unsubscribe(ops.Document.signalMemberUpdated,z);v.parentNode.removeChild(v);u.parentNode.removeChild(u);(function W(c,d){d?a(d):ca.length;c&&g(a);return c}function d(a,c){function b(e){a[e]===c&&d.push(e)}var d=[];a&&["style:parent-style-name","style:next-style-name"].forEach(b);return d}function b(a,c){function b(d){a[d]===c&&delete a[d]}a&&["style:parent-style-name","style:next-style-name"].forEach(b)}function f(a){var c={};Object.keys(a).forEach(function(b){c[b]="object"===typeof a[b]?f(a[b]):a[b]});return c}function n(a, -c,b,d){var e,f=!1,g=!1,k,l=[];d&&d.attributes&&(l=d.attributes.split(","));a&&(b||0=a.length?0:a.length-e.length)):void 0!==a.length&&(e=a.position+a.length,d<=e?a.length-=c.length:b=c.position+c.length)){d=b?a:c;e=b?c:a;if(a.position!==c.position||a.length!==c.length)n=f(d),r=f(e);c=q(e.setProperties,null,d.setProperties, -null,"style:text-properties");if(c.majorChanged||c.minorChanged)g=[],a=[],k=d.position+d.length,l=e.position+e.length,e.positionk?c.minorChanged&&(n=r,n.position=k,n.length=l-k,a.push(n),e.length=k-e.position):k>l&&c.majorChanged&&(n.position=l, -n.length=k-l,g.push(n),d.length=l-d.position),d.setProperties&&p(d.setProperties)&&g.push(d),e.setProperties&&p(e.setProperties)&&a.push(e),b?(k=g,g=a):k=a}return{opSpecsA:k,opSpecsB:g}},InsertText:function(a,c){c.position<=a.position?a.position+=c.text.length:c.position<=a.position+a.length&&(a.length+=c.text.length);return{opSpecsA:[a],opSpecsB:[c]}},MergeParagraph:function(a,c){var b=a.position,d=a.position+a.length;b>=c.sourceStartPosition&&--b;d>=c.sourceStartPosition&&--d;a.position=b;a.length= -d-b;return{opSpecsA:[a],opSpecsB:[c]}},MoveCursor:e,RemoveAnnotation:function(a,b){var d=a.position,e=a.position+a.length,f=b.position+b.length,g=[a],k=[b];b.position<=d&&e<=f?g=[]:(fb.position?a.position+=b.text.length:d?b.position+=a.text.length:a.position+= -b.text.length;return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){a.position>=b.sourceStartPosition?--a.position:(a.positiona.position&&(b.position+=a.text.length);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){a.position=a.sourceStartPosition&&--f;d>=a.sourceStartPosition&&--d;0<=b.length?(b.position=f,b.length=d-f):(b.position=d,b.length=f-d);return{opSpecsA:[a],opSpecsB:[b]}},RemoveAnnotation:function(a,b){var d=b.position+b.length,e=[a],f=[b];b.position<=a.destinationStartPosition&&a.sourceStartPosition<=d?(e=[],--b.length):a.sourceStartPosition=a.sourceStartPosition?--b.position:(b.positiona.sourceStartPosition)--b.position;else if(b.position===a.destinationStartPosition||b.position===a.sourceStartPosition)b.position=a.destinationStartPosition,a.paragraphStyleName=b.styleName;return{opSpecsA:d,opSpecsB:e}},SplitParagraph:function(a,b){var d,e=[a],f=[b];b.position=a.destinationStartPosition&&b.position=a.sourceStartPosition&&(--b.position,--b.sourceParagraphPosition);return{opSpecsA:e,opSpecsB:f}},UpdateMember:e,UpdateMetadata:e, -UpdateParagraphStyle:e},MoveCursor:{MoveCursor:e,RemoveAnnotation:function(a,b){var d=k(a),e=a.position+a.length,f=b.position+b.length;b.position<=a.position&&e<=f?(a.position=b.position-1,a.length=0):(fb.position?a.position+= -1:a.position===b.sourceParagraphPosition&&(b.paragraphStyleName=a.styleName,g=f(a),g.position=b.position+1,d.push(g));return{opSpecsA:d,opSpecsB:e}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},SplitParagraph:{SplitParagraph:function(a,b,d){var e,f;a.positionn&&(o+=1,t+=1);return o}function t(e,t,n){var i,o,r=e.length;for(t=new Uint8Array(new ArrayBuffer(t)),n?(t[0]=239,t[1]=187,t[2]=191,o=3):o=0,n=0;n(i=e.charCodeAt(n))?(t[o]=i,o+=1):2048>i?(t[o]=192|i>>>6,t[o+1]=128|63&i,o+=2):55040>=i||57344<=i?(t[o]=224|i>>>12&15,t[o+1]=128|i>>>6&63,t[o+2]=128|63&i,o+=3):(n+=1,i=65536+(i-55296<<10|e.charCodeAt(n)-56320),t[o]=240|i>>>18&7,t[o+1]=128|i>>>12&63,t[o+2]=128|i>>>6&63,t[o+3]=128|63&i,o+=4);return t}function n(e){var t,n=e.length,i=new Uint8Array(new ArrayBuffer(n));for(t=0;to.status||0===o.status?n(null):n("Status "+String(o.status)+": "+o.responseText||o.statusText):n("File "+e+" is empty."))},i=t.buffer&&!o.sendAsBinary?t.buffer:s.byteArrayToString(t,"binary");try{o.sendAsBinary?o.sendAsBinary(i):o.send(i)}catch(e){s.log("HUH? "+e+" "+t),n(e.message)}},this.deleteFile=function(e,t){var n=new XMLHttpRequest;n.open("DELETE",e,!0),n.onreadystatechange=function(){4===n.readyState&&(200>n.status&&300<=n.status?t(n.responseText):t(null))},n.send(null)},this.loadXML=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.overrideMimeType&&n.overrideMimeType("text/xml"),n.onreadystatechange=function(){4===n.readyState&&(0!==n.status||n.responseText?200===n.status||0===n.status?t(null,n.responseXML):t(n.responseText,null):t("File "+e+" is empty.",null))};try{n.send(null)}catch(e){t(e.message,null)}},this.log=i,this.enableAlerts=!0,this.assert=Runtime.assert,this.setTimeout=function(e,t){return setTimeout((function(){e()}),t)},this.clearTimeout=function(e){clearTimeout(e)},this.libraryPaths=function(){return["lib"]},this.setCurrentDirectory=function(){},this.currentDirectory=function(){return""},this.type=function(){return"BrowserRuntime"},this.getDOMImplementation=function(){return window.document.implementation},this.parseXML=function(e){return(new DOMParser).parseFromString(e,"text/xml")},this.exit=function(e){i("Calling exit with code "+String(e)+", but exit() is not implemented.")},this.getWindow=function(){return window},this.requestAnimationFrame=function(e){var t=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame;return t?(t.bind(window),t(e)):setTimeout(e,15)},this.cancelAnimationFrame=function(e){var t=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame;t?(t.bind(window),t(e)):clearTimeout(e)}}function NodeJSRuntime(){function e(e){var t,n=e.length,i=new Uint8Array(new ArrayBuffer(n));for(t=0;t").implementation}function RhinoRuntime(){var e,t,n=this,i={},o=i.javax.xml.parsers.DocumentBuilderFactory.newInstance(),r="";o.setValidating(!1),o.setNamespaceAware(!0),o.setExpandEntityReferences(!1),o.setSchema(null),t=i.org.xml.sax.EntityResolver({resolveEntity:function(e,t){var n=new i.java.io.FileReader(t);return new i.org.xml.sax.InputSource(n)}}),(e=o.newDocumentBuilder()).setEntityResolver(t),this.byteArrayFromString=function(e,t){var n,i=e.length,o=new Uint8Array(new ArrayBuffer(i));for(n=0;n(n=e[t])?l.push(n):(i=e[t+=1],194<=n&&224>n?l.push((31&n)<<6|63&i):(o=e[t+=1],224<=n&&240>n?l.push((15&n)<<12|(63&i)<<6|63&o):(r=e[t+=1],240<=n&&245>n&&(n=(7&n)<<18|(63&i)<<12|(63&o)<<6|63&r,n-=65536,l.push(55296+(n>>10),56320+(1023&n)))))),1e3<=l.length&&(a+=String.fromCharCode.apply(null,l),l.length=0);return a+String.fromCharCode.apply(null,l)}(e):("binary"!==t&&this.log("Unsupported encoding: "+t),n=function(e){var t,n="",i=e.length;for(t=0;t>>18],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[t>>>12&63],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[t>>>6&63],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[63&t];return n===o+1?(i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(t=e[n]<<4)>>>6],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[63&t],i+="=="):n===o&&(i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(t=e[n]<<10|e[n+1]<<2)>>>12],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[t>>>6&63],i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[63&t],i+="="),i}function n(e){var t,n,i=(e=e.replace(/[^A-Za-z0-9+\/]+/g,"")).length,o=new Uint8Array(new ArrayBuffer(3*i)),r=e.length%4,a=0;for(t=0;t>16,o[a+1]=n>>8&255,o[a+2]=255&n,a+=3;return i=3*i-[0,0,2,1][r],o.subarray(0,i)}function i(e){var t,n,i=e.length,o=0,r=new Uint8Array(new ArrayBuffer(3*i));for(t=0;t(n=e[t])?r[o++]=n:(2048>n?r[o++]=192|n>>>6:(r[o++]=224|n>>>12&15,r[o++]=128|n>>>6&63),r[o++]=128|63&n);return r.subarray(0,o)}function o(e){var t,n,i,o,r=e.length,a=new Uint8Array(new ArrayBuffer(r)),s=0;for(t=0;t(n=e[t])?a[s++]=n:(i=e[t+=1],224>n?a[s++]=(31&n)<<6|63&i:(o=e[t+=1],a[s++]=(15&n)<<12|(63&i)<<6|63&o));return a.subarray(0,s)}function r(n){return t(e(n))}function a(e){return String.fromCharCode.apply(String,n(e))}function s(t){return o(e(t))}function l(e){e=o(e);for(var t="",n=0;n(t=255&e.charCodeAt(r))?a+=String.fromCharCode(t):(r+=1,i=255&e.charCodeAt(r),224>t?a+=String.fromCharCode((31&t)<<6|63&i):(r+=1,o=255&e.charCodeAt(r),a+=String.fromCharCode((15&t)<<12|(63&i)<<6|63&o)));return a}function d(e,t){var n="",i=0;1e5>e.length?t(u(e,0,e.length),!0):("string"!=typeof e&&(e=e.slice()),function o(){var r=i+1e5;r>e.length&&(r=e.length),n+=u(e,i,r),r=(i=r)===e.length,t(n,r)&&!r&&runtime.setTimeout(o,0)}())}function c(t){return i(e(t))}function f(e){return String.fromCharCode.apply(String,i(e))}function p(t){return String.fromCharCode.apply(String,i(e(t)))}var h,m,g,b,y=function(e){var t,n,i={};for(t=0,n=e.length;t=--a&&i.push(t(e.substring(n,o))):"["===e[o]&&(0>=a&&(n=o+1),a+=1),o+=1;return o},l=function(e,t,n){var r,l,u,d;for(r=0;r=e.compareBoundaryPoints(Range.START_TO_START,t)&&0<=e.compareBoundaryPoints(Range.END_TO_END,t)}function o(e,t){return 0>=e.compareBoundaryPoints(Range.END_TO_START,t)&&0<=e.compareBoundaryPoints(Range.START_TO_END,t)}function r(e,t){var n=null;return e.nodeType===Node.TEXT_NODE&&(0===e.length?(e.parentNode.removeChild(e),t.nodeType===Node.TEXT_NODE&&(n=t)):(t.nodeType===Node.TEXT_NODE&&(e.appendData(t.data),t.parentNode.removeChild(t)),n=e)),n}function a(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);return t.removeChild(e),t}function s(e,t){return e===t||Boolean(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)}function l(t,n){return e().unscaledRangeClientRects?t:t/n}var u=null;this.splitBoundaries=function(e){var t,i,o,r,a=[];if(e.startContainer.nodeType===Node.TEXT_NODE||e.endContainer.nodeType===Node.TEXT_NODE){if(i=e.endContainer,o=e.endContainer.nodeType!==Node.TEXT_NODE&&e.endOffset===e.endContainer.childNodes.length,(r=e.endOffset)<(t=e.endContainer).childNodes.length)for(t=t.childNodes.item(r),r=0;t.firstChild;)t=t.firstChild;else for(;t.lastChild;)r=(t=t.lastChild).nodeType===Node.TEXT_NODE?t.textContent.length:t.childNodes.length;if(t===i&&(i=null),e.setEnd(t,r),r=e.endContainer,0!==e.endOffset&&r.nodeType===Node.TEXT_NODE&&(t=r,e.endOffset!==t.length&&(a.push(t.splitText(e.endOffset)),a.push(t))),r=e.startContainer,0!==e.startOffset&&r.nodeType===Node.TEXT_NODE&&(t=r,e.startOffset!==t.length&&(r=t.splitText(e.startOffset),a.push(t),a.push(r),e.setStart(r,0))),null!==i){for(r=e.endContainer;r.parentNode&&r.parentNode!==i;)r=r.parentNode;o=o?i.childNodes.length:n(r,i),e.setEnd(i,o)}}return a},this.containsRange=i,this.rangesIntersect=o,this.rangeIntersection=function(e,t){var n;return o(e,t)&&(n=e.cloneRange(),-1===e.compareBoundaryPoints(Range.START_TO_START,t)&&n.setStart(t.startContainer,t.startOffset),1===e.compareBoundaryPoints(Range.END_TO_END,t)&&n.setEnd(t.endContainer,t.endOffset)),n},this.getNodesInRange=function(e,t,n){var i,o,r=[],a=(a=e.commonAncestorContainer).nodeType===Node.TEXT_NODE?a.parentNode:a;if(n=e.startContainer.ownerDocument.createTreeWalker(a,n,t,!1),e.endContainer.childNodes[e.endOffset-1]?(i=e.endContainer.childNodes[e.endOffset-1],o=Node.DOCUMENT_POSITION_PRECEDING|Node.DOCUMENT_POSITION_CONTAINED_BY):(i=e.endContainer,o=Node.DOCUMENT_POSITION_PRECEDING),e.startContainer.childNodes[e.startOffset])e=e.startContainer.childNodes[e.startOffset],n.currentNode=e;else{var s=e.startContainer;e.startOffset===(s.nodeType===Node.TEXT_NODE?s.length:s.childNodes.length)?(e=e.startContainer,n.currentNode=e,n.lastChild(),e=n.nextNode()):(e=e.startContainer,n.currentNode=e)}if(e){if((e=n.currentNode)!==a)for(e=e.parentNode;e&&e!==a;)t(e)===NodeFilter.FILTER_REJECT&&(n.currentNode=e),e=e.parentNode;switch(t(e=n.currentNode)){case NodeFilter.FILTER_REJECT:for(e=n.nextSibling();!e&&n.parentNode();)e=n.nextSibling();break;case NodeFilter.FILTER_SKIP:e=n.nextNode()}for(;e&&(0===(t=i.compareDocumentPosition(e))||0!=(t&o));)r.push(e),e=n.nextNode()}return r},this.normalizeTextNodes=function(e){e&&e.nextSibling&&(e=r(e,e.nextSibling)),e&&e.previousSibling&&r(e.previousSibling,e)},this.rangeContainsNode=function(e,t){var n,o=t.ownerDocument.createRange(),r=t.ownerDocument.createRange();return o.setStart(e.startContainer,e.startOffset),o.setEnd(e.endContainer,e.endOffset),r.selectNodeContents(t),n=i(o,r),o.detach(),r.detach(),n},this.mergeIntoParent=a,this.removeUnwantedNodes=function e(t,n){var i,o=t.parentNode,r=t.firstChild,s=n(t);if(s===NodeFilter.FILTER_SKIP)return o;for(;r;)i=r.nextSibling,e(r,n),r=i;return o&&s===NodeFilter.FILTER_REJECT&&a(t),o},this.removeAllChildNodes=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},this.getElementsByTagNameNS=function(e,t,n){var i=[];for(e=e.getElementsByTagNameNS(t,n),i.length=n=e.length,t=0;te)throw runtime.log("alert","watchdog timeout"),"timeout!";if(0t)throw runtime.log("alert","watchdog loop overflow"),"loop overflow"}},core.NodeFilterChain=function(e){var t=NodeFilter.FILTER_REJECT,n=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(i){var o;for(o=0;o "+e.length),runtime.assert(0<=t,"Error in setPosition: "+t+" < 0"),t===e.length&&(s.nextSibling()?l=0:s.parentNode()?l=1:runtime.assert(!1,"Error in setUnfilteredPosition: position not valid."))):te.value||"%"===e.unit)?null:e}function w(e){return(e=N(e))&&"%"!==e.unit?null:e}function E(e){switch(e.namespaceURI){case odf.Namespaces.drawns:case odf.Namespaces.svgns:case odf.Namespaces.dr3dns:return!1;case odf.Namespaces.textns:switch(e.localName){case"note-body":case"ruby-text":return!1}break;case odf.Namespaces.officens:switch(e.localName){case"annotation":case"binary-data":case"event-listeners":return!1}break;default:switch(e.localName){case"cursor":case"editinfo":return!1}}return!0}function T(e){return Boolean(r(e)&&(!s(e.textContent)||C(e,0)))}function O(e,t){for(;0=t.value||"%"===t.unit)?null:t)||w(e)},this.parseFoLineHeight=function(e){return x(e)||w(e)},this.isTextContentContainingNode=E,this.getTextNodes=function(e,t){var n;return n=k.getNodesInRange(e,(function(e){var t=NodeFilter.FILTER_REJECT;return e.nodeType===Node.TEXT_NODE?T(e)&&(t=NodeFilter.FILTER_ACCEPT):E(e)&&(t=NodeFilter.FILTER_SKIP),t}),NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT),t||O(e,n),n},this.getTextElements=A,this.getParagraphElements=function(e){var t;return t=k.getNodesInRange(e,(function(e){var t=NodeFilter.FILTER_REJECT;return o(e)?t=NodeFilter.FILTER_ACCEPT:(E(e)||l(e))&&(t=NodeFilter.FILTER_SKIP),t}),NodeFilter.SHOW_ELEMENT),R(e.startContainer,t,o),t},this.getImageElements=function(t){var n;return n=k.getNodesInRange(t,(function(t){var n=NodeFilter.FILTER_SKIP;return e(t)&&(n=NodeFilter.FILTER_ACCEPT),n}),NodeFilter.SHOW_ELEMENT),R(t.startContainer,n,e),n},this.getHyperlinkElements=function(e){var t=[],n=e.cloneRange();return e.collapsed&&e.endContainer.nodeType===Node.ELEMENT_NODE&&(e=function(e,t){var n=e;if(t/g,">").replace(/'/g,"'").replace(/"/g,""")}function n(e,o){var r,a="",s=i.filter?i.filter.acceptNode(o):NodeFilter.FILTER_ACCEPT;if(s===NodeFilter.FILTER_ACCEPT&&o.nodeType===Node.ELEMENT_NODE){e.push(),r=e.getQName(o);var l,u,d,c,f=o.attributes,p="";for(l="<"+r,u=f.length,d=0;d")}if(s===NodeFilter.FILTER_ACCEPT||s===NodeFilter.FILTER_SKIP){for(s=o.firstChild;s;)a+=n(e,s),s=s.nextSibling;o.nodeValue&&(a+=t(o.nodeValue))}return r&&(a+="",e.pop()),a}var i=this;this.filter=null,this.writeToString=function(t,i){return t?n(new e(i),t):""}},function(){function e(e){var t,n=s.length;for(t=0;to);)r=r.nextSibling;t.insertBefore(n,r)}}}var o=new odf.StyleInfo,r=core.DomUtils,a=odf.Namespaces.stylens,s="meta settings scripts font-face-decls styles automatic-styles master-styles body".split(" "),l=Date.now()+"_webodf_",u=new core.Base64;odf.ODFElement=function(){},odf.ODFDocumentElement=function(){},odf.ODFDocumentElement.prototype=new odf.ODFElement,odf.ODFDocumentElement.prototype.constructor=odf.ODFDocumentElement,odf.ODFDocumentElement.prototype.fontFaceDecls=null,odf.ODFDocumentElement.prototype.manifest=null,odf.ODFDocumentElement.prototype.settings=null,odf.ODFDocumentElement.namespaceURI="urn:oasis:names:tc:opendocument:xmlns:office:1.0",odf.ODFDocumentElement.localName="document",odf.AnnotationElement=function(){},odf.OdfPart=function(e,t,n,i){var o=this;this.size=0,this.type=null,this.name=e,this.container=n,this.url=null,this.mimetype=t,this.onstatereadychange=this.document=null,this.EMPTY=0,this.LOADING=1,this.DONE=2,this.state=this.EMPTY,this.data="",this.load=function(){null!==i&&(this.mimetype=t,i.loadAsDataURL(e,t,(function(e,t){e&&runtime.log(e),o.url=t,o.onchange&&o.onchange(o),o.onstatereadychange&&o.onstatereadychange(o)})))}},odf.OdfPart.prototype.load=function(){},odf.OdfPart.prototype.getUrl=function(){return this.data?"data:;base64,"+u.toBase64(this.data):null},odf.OdfContainer=function e(s,d){function c(e){var t,n,i={},o=e.ownerDocument.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,null,!1);for(e=o.nextNode();e;)"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===e.namespaceURI&&("annotation"===e.localName?(t=e.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))&&(i.hasOwnProperty(t)?runtime.log("Warning: annotation name used more than once with : '"+t+"'"):i[t]=e):"annotation-end"===e.localName&&((t=e.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))?i.hasOwnProperty(t)?(n=i[t]).annotationEndElement?runtime.log("Warning: annotation name used more than once with : '"+t+"'"):n.annotationEndElement=e:runtime.log("Warning: annotation end without an annotation start, name: '"+t+"'"):runtime.log("Warning: annotation end without a name found"))),e=o.nextNode()}function f(e,t){for(var n=e&&e.firstChild;n;)n.nodeType===Node.ELEMENT_NODE&&n.setAttributeNS("urn:webodf:names:scope","scope",t),n=n.nextSibling}function p(e,t){for(var n=(n=M.rootElement.meta)&&n.firstChild;n&&(n.namespaceURI!==e||n.localName!==t);)n=n.nextSibling;for(n=n&&n.firstChild;n&&n.nodeType!==Node.TEXT_NODE;)n=n.nextSibling;return n?n.data:null}function h(e){var t={};for(e=e.firstChild;e;)e.nodeType===Node.ELEMENT_NODE&&e.namespaceURI===a&&"font-face"===e.localName&&(t[e.getAttributeNS(a,"name")]=e),e=e.nextSibling;return t}function m(e,t){var n,i,o,r=null;if(e)for(n=(r=e.cloneNode(!0)).firstElementChild;n;)i=n.nextElementSibling,(o=n.getAttributeNS("urn:webodf:names:scope","scope"))&&o!==t&&r.removeChild(n),n=i;return r}function g(e,t){var n,i,r,s=null,l={};if(e)for(t.forEach((function(e){o.collectUsedFontFaces(l,e)})),n=(s=e.cloneNode(!0)).firstElementChild;n;)i=n.nextElementSibling,r=n.getAttributeNS(a,"name"),l[r]||s.removeChild(n),n=i;return s}function b(e){var t,n=M.rootElement.ownerDocument;if(e){!function e(t){for(var n,i=t.firstChild;i;)n=i.nextSibling,i.nodeType===Node.ELEMENT_NODE?e(i):i.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&t.removeChild(i),i=n}(e.documentElement);try{t=n.importNode(e.documentElement,!0)}catch(e){}}return t}function y(e){M.state=e,M.onchange&&M.onchange(M),M.onstatereadychange&&M.onstatereadychange(M)}function v(e){F=null,M.rootElement=e,e.fontFaceDecls=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),e.styles=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),e.automaticStyles=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),e.masterStyles=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),e.body=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body"),e.meta=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),e.settings=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),e.scripts=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","scripts"),c(e)}function S(t){var n,a=b(t),s=M.rootElement;a&&"document-styles"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI?(s.fontFaceDecls=r.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),i(s,s.fontFaceDecls),n=r.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),s.styles=n||t.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),i(s,s.styles),n=r.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),s.automaticStyles=n||t.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),f(s.automaticStyles,"document-styles"),i(s,s.automaticStyles),a=r.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),s.masterStyles=a||t.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),i(s,s.masterStyles),o.prefixStyleNames(s.automaticStyles,l,s.masterStyles)):y(e.INVALID)}function C(t){var n,s,l,u;if((t=b(t))&&"document-content"===t.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===t.namespaceURI){if(n=M.rootElement,l=r.getDirectChild(t,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),n.fontFaceDecls&&l){var d,c,p,m,g={};for(s=h(u=n.fontFaceDecls),m=h(l),l=l.firstElementChild;l;){if(d=l.nextElementSibling,l.namespaceURI===a&&"font-face"===l.localName)if(c=l.getAttributeNS(a,"name"),s.hasOwnProperty(c)){if(!l.isEqualNode(s[c])){var v=s,S=m,C=0,N=void 0;for(N=p=(p=c).replace(/\d+$/,"");v.hasOwnProperty(N)||S.hasOwnProperty(N);)N=p+(C+=1);p=N,l.setAttributeNS(a,"style:name",p),u.appendChild(l),s[p]=l,delete m[c],g[c]=p}}else u.appendChild(l),s[c]=l,delete m[c];l=d}u=g}else l&&(n.fontFaceDecls=l,i(n,l));if(f(s=r.getDirectChild(t,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),"document-content"),u&&o.changeFontFaceNames(s,u),n.automaticStyles&&s)for(u=s.firstChild;u;)n.automaticStyles.appendChild(u),u=s.firstChild;else s&&(n.automaticStyles=s,i(n,s));if(null===(t=r.getDirectChild(t,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body")))throw" tag is mising.";n.body=t,i(n,n.body)}else y(e.INVALID)}function N(e){var t;(e=b(e))&&"document-meta"===e.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===e.namespaceURI&&((t=M.rootElement).meta=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),i(t,t.meta))}function x(e){var t;(e=b(e))&&"document-settings"===e.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===e.namespaceURI&&((t=M.rootElement).settings=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),i(t,t.settings))}function w(e){var t;if((e=b(e))&&"manifest"===e.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===e.namespaceURI)for((t=M.rootElement).manifest=e,e=t.manifest.firstElementChild;e;)"file-entry"===e.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===e.namespaceURI&&(B[e.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","full-path")]=e.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","media-type")),e=e.nextElementSibling}function E(e,t,n){var i;for(e=r.getElementsByTagName(e,t),i=0;i'}function R(e,t){var n=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:file-entry");return n.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:full-path",e),n.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:media-type",t),n}function _(e,t){var n,o=(n=M.rootElement).meta;o||(n.meta=o=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),i(n,o)),n=o,e&&r.mapKeyValObjOntoNode(n,e,odf.Namespaces.lookupNamespaceURI),t&&r.removeKeyElementsFromNode(n,t,odf.Namespaces.lookupNamespaceURI)}function P(t,n){function i(e,t){var n;t||(t=e),n=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",t),s[e]=n,s.appendChild(n)}var o=new core.Zip("",null),r="application/vnd.oasis.opendocument."+t+(!0===n?"-template":""),a=runtime.byteArrayFromString(r,"utf8"),s=M.rootElement,l=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",t);return o.save("mimetype",a,!1,new Date),i("meta"),i("settings"),i("scripts"),i("fontFaceDecls","font-face-decls"),i("styles"),i("automaticStyles","automatic-styles"),i("masterStyles","master-styles"),i("body"),s.body.appendChild(l),B["/"]=r,B["settings.xml"]="text/xml",B["meta.xml"]="text/xml",B["styles.xml"]="text/xml",B["content.xml"]="text/xml",y(e.DONE),o}function D(){var e,i=new Date,r="";M.rootElement.settings&&M.rootElement.settings.firstElementChild&&(e=new xmldom.LSSerializer,r=A("document-settings"),e.filter=new odf.OdfNodeFilter,r+=e.writeToString(M.rootElement.settings,odf.Namespaces.namespaceMap),r+=""),(e=r)?(e=runtime.byteArrayFromString(e,"utf8"),I.save("settings.xml",e,!0,i)):I.remove("settings.xml"),r=runtime.getWindow(),e="WebODF/"+webodf.Version,r&&(e=e+" "+r.navigator.userAgent),_({"meta:generator":e},null),e=runtime.byteArrayFromString(function(){var e=new xmldom.LSSerializer,t=A("document-meta");return e.filter=new odf.OdfNodeFilter,(t+=e.writeToString(M.rootElement.meta,odf.Namespaces.namespaceMap))+""}(),"utf8"),I.save("meta.xml",e,!0,i),e=runtime.byteArrayFromString(function(){var e,n,i,r=odf.Namespaces.namespaceMap,a=new xmldom.LSSerializer,s=A("document-styles");return n=m(M.rootElement.automaticStyles,"document-styles"),i=M.rootElement.masterStyles.cloneNode(!0),e=g(M.rootElement.fontFaceDecls,[i,M.rootElement.styles,n]),o.removePrefixFromStyleNames(n,l,i),a.filter=new t(i,n),s+=a.writeToString(e,r),s+=a.writeToString(M.rootElement.styles,r),s+=a.writeToString(n,r),(s+=a.writeToString(i,r))+""}(),"utf8"),I.save("styles.xml",e,!0,i),e=runtime.byteArrayFromString(function(){var e,t,i=odf.Namespaces.namespaceMap,o=new xmldom.LSSerializer,r=A("document-content");return t=m(M.rootElement.automaticStyles,"document-content"),e=g(M.rootElement.fontFaceDecls,[t]),o.filter=new n(M.rootElement.body,t),r+=o.writeToString(e,i),r+=o.writeToString(t,i),(r+=o.writeToString(M.rootElement.body,i))+""}(),"utf8"),I.save("content.xml",e,!0,i),e=runtime.byteArrayFromString(function(){var e,t=runtime.parseXML(''),n=t.documentElement,i=new xmldom.LSSerializer;for(e in B)B.hasOwnProperty(e)&&n.appendChild(R(e,B[e]));return i.filter=new odf.OdfNodeFilter,'\n'+i.writeToString(t,odf.Namespaces.namespaceMap)}(),"utf8"),I.save("META-INF/manifest.xml",e,!0,i)}function k(e,t){D(),I.writeAs(e,(function(e){t(e)}))}var I,F,M=this,B={},U="";this.onstatereadychange=d,this.state=this.onchange=null,this.getMetadata=p,this.setRootElement=v,this.getContentElement=function(){var e;if(F||(e=M.rootElement.body,F=r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","text")||r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","presentation")||r.getDirectChild(e,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","spreadsheet")),!F)throw"Could not find content element in .";return F},this.getDocumentType=function(){var e=M.getContentElement();return e&&e.localName},this.isTemplate=function(){return"-template"===B["/"].substr(-9)},this.setIsTemplate=function(e){var t=B["/"];e!==("-template"===t.substr(-9))&&(t=e?t+"-template":t.substr(0,t.length-9),B["/"]=t,e=runtime.byteArrayFromString(t,"utf8"),I.save("mimetype",e,!1,new Date))},this.getPart=function(e){return new odf.OdfPart(e,B[e],M,I)},this.getPartData=function(e,t){I.load(e,t)},this.setMetadata=_,this.incrementEditingCycles=function(){var e=(e=p(odf.Namespaces.metans,"editing-cycles"))?parseInt(e,10):0;return isNaN(e)&&(e=0),_({"meta:editing-cycles":e+1},null),e+1},this.createByteArray=function(e,t){D(),I.createByteArray(e,t)},this.saveAs=k,this.save=function(e){k(U,e)},this.getUrl=function(){return U},this.setBlob=function(e,t,n){n=u.convertBase64ToByteArray(n),I.save(e,n,!1,new Date),B.hasOwnProperty(e)&&runtime.log(e+" has been overwritten."),B[e]=t},this.removeBlob=function(e){var t=I.remove(e);runtime.assert(t,"file is not found: "+e),delete B[e]},this.state=e.LOADING,this.rootElement=function(e){var t,n=document.createElementNS(e.namespaceURI,e.localName);for(t in e=new e.Type)e.hasOwnProperty(t)&&(n[t]=e[t]);return n}({Type:odf.ODFDocumentElement,namespaceURI:odf.ODFDocumentElement.namespaceURI,localName:odf.ODFDocumentElement.localName}),s===odf.OdfContainer.DocumentType.TEXT?I=P("text"):s===odf.OdfContainer.DocumentType.TEXT_TEMPLATE?I=P("text",!0):s===odf.OdfContainer.DocumentType.PRESENTATION?I=P("presentation"):s===odf.OdfContainer.DocumentType.PRESENTATION_TEMPLATE?I=P("presentation",!0):s===odf.OdfContainer.DocumentType.SPREADSHEET?I=P("spreadsheet"):s===odf.OdfContainer.DocumentType.SPREADSHEET_TEMPLATE?I=P("spreadsheet",!0):(U=s,I=new core.Zip(U,(function(t,n){I=n,t?function(t,n){runtime.loadXML(t,(function(t,i){if(t)n(t);else if(i){T(i),O(i.documentElement);var o=b(i);o&&"document"===o.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===o.namespaceURI?(v(o),y(e.DONE)):y(e.INVALID)}else n("No DOM was loaded.")}))}(U,(function(n){t&&(I.error=t+"\n"+n,y(e.INVALID))})):function t(n){var i=n.shift();i?I.loadAsDOM(i.path,(function(o,r){r&&(T(r),O(r.documentElement)),i.handler(r),M.state===e.INVALID?o?runtime.log("ERROR: Unable to load "+i.path+" - "+o):runtime.log("ERROR: Unable to load "+i.path):(o&&runtime.log("DEBUG: Unable to load "+i.path+" - "+o),t(n))})):(c(M.rootElement),y(e.DONE))}([{path:"styles.xml",handler:S},{path:"content.xml",handler:C},{path:"meta.xml",handler:N},{path:"settings.xml",handler:x},{path:"META-INF/manifest.xml",handler:w}])})))},odf.OdfContainer.EMPTY=0,odf.OdfContainer.LOADING=1,odf.OdfContainer.DONE=2,odf.OdfContainer.INVALID=3,odf.OdfContainer.SAVING=4,odf.OdfContainer.MODIFIED=5,odf.OdfContainer.getContainer=function(e){return new odf.OdfContainer(e,null)}}(),odf.OdfContainer.DocumentType={TEXT:1,TEXT_TEMPLATE:2,PRESENTATION:3,PRESENTATION_TEMPLATE:4,SPREADSHEET:5,SPREADSHEET_TEMPLATE:6},gui.AnnotatableCanvas=function(){},gui.AnnotatableCanvas.prototype.refreshSize=function(){},gui.AnnotatableCanvas.prototype.getZoomLevel=function(){},gui.AnnotatableCanvas.prototype.getSizer=function(){},gui.AnnotationViewManager=function(e,t,n,i){function o(e){var t=e.annotationEndElement,n=u.createRange(),i=e.getAttributeNS(odf.Namespaces.officens,"name");t&&(n.setStart(e,e.childNodes.length),n.setEnd(t,0),(e=d.getTextNodes(n,!1)).forEach((function(e){var t;e:{for(t=e.parentNode;t.namespaceURI!==odf.Namespaces.officens||"body"!==t.localName;){if("http://www.w3.org/1999/xhtml"===t.namespaceURI&&"webodf-annotationHighlight"===t.className&&t.getAttribute("annotation")===i){t=!0;break e}t=t.parentNode}t=!1}t||((t=u.createElement("span")).className="webodf-annotationHighlight",t.setAttribute("annotation",i),e.parentNode.replaceChild(t,e),t.appendChild(e))}))),n.detach()}function r(t){var i=e.getSizer();t?(n.style.display="inline-block",i.style.paddingRight=c.getComputedStyle(n).width):(n.style.display="none",i.style.paddingRight=0),e.refreshSize()}function a(){var t;for(t=0;t=(r.getBoundingClientRect().top-s.bottom)/u?i.style.top=Math.abs(r.getBoundingClientRect().top-s.bottom)/u+20+"px":i.style.top="0px"):i.style.top="0px",o.style.left=d.getBoundingClientRect().width/u+"px";var d=o.style,c=(r=o.getBoundingClientRect().left/u,a=o.getBoundingClientRect().top/u,0),f=0;c=(c=(s=i.getBoundingClientRect().left/u)-r)*c,f=(f=i.getBoundingClientRect().top/u-a)*f,r=Math.sqrt(c+f),d.width=r+"px",a=Math.asin((i.getBoundingClientRect().top-o.getBoundingClientRect().top)/(u*parseFloat(o.style.width))),o.style.transform="rotate("+a+"rad)",o.style.MozTransform="rotate("+a+"rad)",o.style.WebkitTransform="rotate("+a+"rad)",o.style.msTransform="rotate("+a+"rad)"}}function s(e){var t=l.indexOf(e);"div"===(i=e.parentNode.parentNode).localName&&(i.parentNode.insertBefore(e,i),i.parentNode.removeChild(i)),e=e.getAttributeNS(odf.Namespaces.officens,"name"),e=u.querySelectorAll('span.webodf-annotationHighlight[annotation="'+e+'"]');for(var n,i=0;ia||t.bottom>a)&&(e.scrollTop=t.bottom-t.top<=a-o?e.scrollTop+(t.bottom-a):e.scrollTop+(t.top-o)),t.leftr&&(e.scrollLeft=t.right-t.left<=r-i?e.scrollLeft+(t.right-r):e.scrollLeft-(i-t.left)))}},function(){function e(t,n,o,r,a){var s,l,u=0;for(l in t)if(t.hasOwnProperty(l)){if(u===o){s=l;break}u+=1}s?n.getPartData(t[s].href,(function(l,u){if(l)runtime.log(l);else if(u){var d="@font-face { font-family: "+(t[s].family||s)+"; src: url(data:application/x-font-ttf;charset=binary;base64,"+i.convertUTF8ArrayToBase64(u)+') format("truetype"); }';try{r.insertRule(d,r.cssRules.length)}catch(e){runtime.log("Problem inserting rule in CSS: "+runtime.toJson(e)+"\nRule: "+d)}}else runtime.log("missing font data for "+t[s].href);e(t,n,o+1,r,a)})):a&&a()}var t=xmldom.XPath,n=odf.OdfUtils,i=new core.Base64;odf.FontLoader=function(){this.loadFonts=function(i,o){for(var r=i.rootElement.fontFaceDecls;o.cssRules.length;)o.deleteRule(o.cssRules.length-1);if(r){var a,s,l,u,d={};if(r)for(r=t.getODFElementsWithXPath(r,"style:font-face[svg:font-face-src]",odf.Namespaces.lookupNamespaceURI),a=0;a text|list-item:first-child > :not(text|list):first-child:before',f+="{",f+="counter-increment: "+(c=d)+" 0;",e(n,f+="}"));l.counterIdStack.length>=u;)l.counterIdStack.pop();for(l.counterIdStack.push(c),p=l.contentRules[u.toString()]||"",f=1;f<=u;f+=1)p=p.replace(f+"webodf-listLevel",l.counterIdStack[f-1]);f='text|list[webodfhelper|counter-id="'+d+'"] > text|list-item > :not(text|list):first-child:before',f+="{",f+=p,f+="counter-increment: "+c+";",e(n,f+="}")}for(o=o.firstElementChild;o;)i(t,o,a,l),o=o.nextElementSibling}else l.continuedCounterIdStack=[]}var o=0,s="",l={};this.createCounterRules=function(e,n,r){var s=n.getAttributeNS(a,"id"),u=[];r&&(r=r.getAttributeNS("urn:webodf:names:helper","counter-id"),u=l[r].slice(0)),e=new t(e,u),i(s=s?"Y"+s:"X"+(o+=1),n,0,e),l[s+"-level1-1"]=e.counterIdStack},this.initialiseCreatedCounters=function(){var t;t="office|document{counter-reset: "+s+";",e(n,t+="}")}}var i=odf.Namespaces.fons,o=odf.Namespaces.stylens,r=odf.Namespaces.textns,a=odf.Namespaces.xmlns,s={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"};odf.ListStyleToCss=function(){function t(e){var t=f.parseLength(e);return t?c.convert(t.value,t.unit,"px"):(runtime.log("Could not parse value '"+e+"'."),0)}function l(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function u(e,t){var n;return e&&(n=e.getAttributeNS(r,"style-name")),n===t}function d(e,t,i){t=t.getElementsByTagNameNS(r,"list"),e=new n(e);var d,c,f,p,h,m,g,b={};for(g=0;g text|list-item > text|list",--p;switch(p=h&&h.getAttributeNS(i,"text-align")||"left"){case"end":p="right";break;case"start":p="left"}"label-alignment"===m?(b=g&&g.getAttributeNS(i,"margin-left")||"0px",S=g&&g.getAttributeNS(i,"text-indent")||"0px",C=g&&g.getAttributeNS(r,"label-followed-by"),g=t(b)):(b=h&&h.getAttributeNS(r,"space-before")||"0px",y=h&&h.getAttributeNS(r,"min-label-width")||"0px",v=h&&h.getAttributeNS(r,"min-label-distance")||"0px",g=t(b)+t(y)),h=c+" > text|list-item",h+="{",h+="margin-left: "+g+"px;",e(u,h+="}"),h=c+" > text|list-item > text|list",h+="{",h+="margin-left: "+-g+"px;",e(u,h+="}"),h=c+" > text|list-item > :not(text|list):first-child:before",h+="{",h+="text-align: "+p+";",h+="display: inline-block;","label-alignment"===m?(h+="margin-left: "+S+";","listtab"===C&&(h+="padding-right: 0.2cm;")):(h+="min-width: "+y+";",h+="margin-left: "+(0===parseFloat(y)?"":"-")+y+";",h+="padding-right: "+v+";"),e(u,h+="}")}s=s.nextElementSibling}})),d(n,s,l)}}}(),odf.LazyStyleProperties=function(e,t){var n={};this.value=function(i){var o;return n.hasOwnProperty(i)?o=n[i]:(void 0===(o=t[i]())&&e&&(o=e.value(i)),n[i]=o),o},this.reset=function(t){e=t,n={}}},odf.StyleParseUtils=function(){function e(e){var t,n;return"px"===(n=(e=(e=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))/.exec(e))?{value:parseFloat(e[1]),unit:e[3]}:null)&&e.unit)?t=e.value:"cm"===n?t=e.value/2.54*96:"mm"===n?t=e.value/25.4*96:"in"===n?t=96*e.value:"pt"===n?t=e.value/.75:"pc"===n&&(t=16*e.value),t}var t=odf.Namespaces.stylens;this.parseLength=e,this.parsePositiveLengthOrPercent=function(t,n,i){var o,r;return t&&(o=parseFloat(t.substr(0,t.indexOf("%"))),isNaN(o)&&(o=void 0)),void 0!==o?(i&&(r=i.value(n)),o=void 0===r?void 0:r/100*o):o=e(t),o},this.getPropertiesElement=function(e,n,i){for(n=i?i.nextElementSibling:n.firstElementChild;null!==n&&(n.localName!==e||n.namespaceURI!==t);)n=n.nextElementSibling;return n},this.parseAttributeList=function(e){return e&&(e=e.replace(/^\s*(.*?)\s*$/g,"$1")),e&&0l.value&&(s="0.75pt"+r),r=s}else if(P.hasOwnProperty(o[1])){s=e;var u=o[0],d=(l=o[1],k.parseLength(r)),f=void 0,p=void 0,h=void 0,m=void 0;if(h=void 0,d&&"%"===d.unit){for(f=d.value/100,p=t(s.parentNode),m="0";p;){if((h=g.getDirectChild(p,c,"paragraph-properties"))&&(h=k.parseLength(h.getAttributeNS(u,l)))){if("%"!==h.unit){m=h.value*f+h.unit;break}f*=h.value/100}p=t(p)}r=m}}o[2]&&(a+=o[2]+":"+r+";")}return a}function i(e,t,n,i){return t+t+n+n+i+i}function o(a,f,y,v){var _,P;if("page"===f){var I,M,B,U=v.element,L="";if(M=I="",y=g.getDirectChild(U,c,"page-layout-properties"))if(B=U.getAttributeNS(c,"name"),L+=n(y,A),(I=g.getDirectChild(y,c,"background-image"))&&(M=I.getAttributeNS(h,"href"))&&(L=L+"background-image: url('odfkit:"+M+"');"+n(I,C)),"presentation"===r)for(U=(U=g.getDirectChild(U.parentNode.parentNode,d,"master-styles"))&&U.firstElementChild;U;)U.namespaceURI===c&&"master-page"===U.localName&&U.getAttributeNS(c,"page-layout-name")===B&&(I='draw|page[draw|master-page-name="'+(M=U.getAttributeNS(c,"name"))+'"] {'+L+"}",M='office|body, draw|page[draw|master-page-name="'+M+'"] {'+n(y,R)+" }",a.insertRule(I,a.cssRules.length),a.insertRule(M,a.cssRules.length)),U=U.nextElementSibling;else"text"===r&&(I="office|text {"+L+"}",M="office|body {width: "+y.getAttributeNS(u,"page-width")+";}",a.insertRule(I,a.cssRules.length),a.insertRule(M,a.cssRules.length))}else{if(L=e(f,y,v).join(","),B="",U=g.getDirectChild(v.element,c,"text-properties")){var z=U,H=P="";switch(I="",M=1,U=""+n(z,S),"solid"===(_=z.getAttributeNS(c,"text-underline-style"))&&(P+=" underline"),"solid"===(_=z.getAttributeNS(c,"text-line-through-style"))&&(P+=" line-through"),P.length&&(U=U+"text-decoration:"+P+";\ntext-decoration-line:"+P+";\n",U+="-moz-text-decoration-line:"+P+";\n"),_=z.getAttributeNS(c,"text-line-through-type")){case"double":H+=" double";break;case"single":H+=" single"}if(H&&(U+="text-decoration-style:"+H+";\n",U+="-moz-text-decoration-style:"+H+";\n"),(P=z.getAttributeNS(c,"font-name")||z.getAttributeNS(u,"font-family"))&&(U+="font-family: "+((_=D[P])||P)+";"),(_=z.getAttributeNS(c,"text-position"))&&(U+="vertical-align: "+(_=(P=b.parseAttributeList(_))[0])+"\n; ",(P=P[1])&&(M=parseFloat(P)/100)),z.hasAttributeNS(u,"font-size")||1!==M){for(z=z.parentNode;z;){if(_=(_=g.getDirectChild(z,c,"text-properties"))?k.parseFoFontSize(_.getAttributeNS(u,"font-size")):null){if("%"!==_.unit){I="font-size: "+_.value*M+_.unit+";";break}M*=_.value/100}z=t(z)}I||(I="font-size: "+parseFloat(s)*M+F.getUnits(s)+";")}B+=U+=I}(U=g.getDirectChild(v.element,c,"paragraph-properties"))&&(U=""+n(I=U,N),(M=g.getDirectChild(I,c,"background-image"))&&(z=M.getAttributeNS(h,"href"))&&(U=U+"background-image: url('odfkit:"+z+"');"+n(M,C)),(I=I.getAttributeNS(u,"line-height"))&&"normal"!==I&&(U="%"!==(I=k.parseFoLineHeight(I)).unit?U+"line-height: "+I.value+I.unit+";":U+"line-height: "+I.value/100+";"),B+=U),(U=g.getDirectChild(v.element,c,"graphic-properties"))&&(U=""+n(z=U,x),I=z.getAttributeNS(l,"opacity"),M=z.getAttributeNS(l,"fill"),z=z.getAttributeNS(l,"fill-color"),"solid"===M||"hatch"===M?z&&"none"!==z?(I=isNaN(parseFloat(I))?1:parseFloat(I)/100,M=z.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,i),(z=(M=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(M))?{r:parseInt(M[1],16),g:parseInt(M[2],16),b:parseInt(M[3],16)}:null)&&(U+="background-color: rgba("+z.r+","+z.g+","+z.b+","+I+");")):U+="background: none;":"none"===M&&(U+="background: none;"),B+=U),(U=g.getDirectChild(v.element,c,"drawing-page-properties"))&&(M=""+n(I=U,x),"true"===I.getAttributeNS(m,"background-visible")&&(M+="background: none;"),B+=M,function(e,t,n,i){function o(t,n){var i,o=[];t.forEach((function(e){r.forEach((function(t){o.push('draw|page[webodfhelper|page-style-name="'+t+'"] draw|frame[presentation|class="'+e+'"]')}))})),0h&&(e=h),t=Math.floor(e/n)*n;!i&&0<=t;)i=m[t],t-=n;for(i=i||p;i.nextBookmark&&i.nextBookmark.steps<=e;)o.check(),i=i.nextBookmark;return runtime.assert(-1===e||i.steps<=e,"Bookmark @"+a(i)+" at step "+i.steps+" exceeds requested step of "+e),i}function c(e){e.previousBookmark&&(e.previousBookmark.nextBookmark=e.nextBookmark),e.nextBookmark&&(e.nextBookmark.previousBookmark=e.previousBookmark)}function f(e){for(var n,i=null;!i&&e&&e!==t;)(n=l(e))&&(i=g[n])&&i.node!==e&&(runtime.log("Cloned node detected. Creating new bookmark"),i=null,e.removeAttributeNS("urn:webodf:names:steps","nodeId")),e=e.parentNode;return i}var p,h,m={},g={},b=core.DomUtils,y=Node.DOCUMENT_POSITION_FOLLOWING,v=Node.DOCUMENT_POSITION_PRECEDING;this.updateBookmark=function(e,i){var r,a,f,v,S=Math.ceil(e/n)*n;if(void 0!==h&&ha.steps)&&(m[S]=f),s()},this.setToClosestStep=function(e,t){var n;return s(),(n=d(e)).setIteratorPosition(t),n.steps},this.setToClosestDomPoint=function(e,n,i){var o,r;if(s(),e===t&&0===n)o=p;else if(e===t&&n===t.childNodes.length)for(r in o=p,m)m.hasOwnProperty(r)&&(e=m[r]).steps>o.steps&&(o=e);else if(!(o=f(e.childNodes.item(n)||e)))for(i.setUnfilteredPosition(e,n);!o&&i.previousNode();)o=f(i.getCurrentNode());return o=o||p,void 0!==h&&o.steps>h&&(o=d(h)),o.setIteratorPosition(i),o.steps},this.damageCacheAfterStep=function(e){0>e&&(e=-1),(void 0===h||ee)throw new RangeError("Requested steps is negative ("+e+")");for(i=a.setToClosestStep(e,t);il.comparePoints(e,0,i,s),i=e,s=s?0:e.childNodes.length),t.setUnfilteredPosition(i,s),r(t,d)||t.setUnfilteredPosition(i,s),d=t.container(),s=t.unfilteredDomOffset(),i=a.setToClosestDomPoint(d,s,t),0>l.comparePoints(t.container(),t.unfilteredDomOffset(),d,s))return 0=l.textNode.length?null:l.textNode.splitText(l.offset)),c=l.textNode;c!==d;){if(f=(c=c.parentNode).cloneNode(!1),p&&f.appendChild(p),h)for(;h&&h.nextSibling;)f.appendChild(h.nextSibling);else for(;c.firstChild;)f.appendChild(c.firstChild);c.parentNode.insertBefore(f,c.nextSibling),h=c,p=f}return a.isListItem(p)&&(p=p.childNodes.item(0)),r?p.setAttributeNS(s,"text:style-name",r):p.removeAttributeNS(s,"style-name"),0===l.textNode.length&&l.textNode.parentNode.removeChild(l.textNode),n.emit(ops.OdtDocument.signalStepsInserted,{position:i}),m&&o&&(n.moveCursor(e,i+1,0),n.emit(ops.Document.signalCursorMoved,m)),n.fixCursorPositions(),n.getOdfCanvas().refreshSize(),n.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:u,memberId:e,timeStamp:t}),n.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:p,memberId:e,timeStamp:t}),n.getOdfCanvas().rerenderAnnotations(),!0},this.spec=function(){return{optype:"SplitParagraph",memberid:e,timestamp:t,position:i,sourceParagraphPosition:n,paragraphStyleName:r,moveCursor:o}}},ops.OpUpdateMember=function(){var e,t,n,i;this.init=function(o){e=o.memberid,t=parseInt(o.timestamp,10),n=o.setProperties,i=o.removedProperties},this.isEdit=!1,this.group=void 0,this.execute=function(t){var o=t.getMember(e);return!!o&&(i&&o.removeProperties(i),n&&(o.setProperties(n),n.fullName&&function(t){var i="//dc:creator[@editinfo:memberid='"+e+"']";for(t=xmldom.XPath.getODFElementsWithXPath(t.getRootNode(),i,(function(e){return"editinfo"===e?"urn:webodf:names:editinfo":odf.Namespaces.lookupNamespaceURI(e)})),i=0;i=r.width&&(r=null),o.detach()):(t.isCharacterElement(e.container)||t.isCharacterFrame(e.container))&&(r=i.getBoundingClientRect(e.container))),r}var t=odf.OdfUtils,n=new odf.StepUtils,i=core.DomUtils,o=core.StepDirection.NEXT,r=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT,a=gui.StepInfo.VisualDirection.RIGHT_TO_LEFT;this.getContentRect=e,this.moveToFilteredStep=function(t,n,i){function s(e,t){return t.process(p,d,c)&&(e=!0,!f&&t.token&&(f=t.token)),e}var l,u,d,c,f,p,h=n===o,m=t.snapshot();l=!1;do{l=e(t),p={token:t.snapshot(),container:t.container,offset:t.offset,direction:n,visualDirection:n===o?r:a},u=t.nextStep()?e(t):null,t.restore(p.token),h?(d=l,c=u):(d=u,c=l),l=i.reduce(s,!1)}while(!l&&t.advanceStep(n));return l||i.forEach((function(e){!f&&e.token&&(f=e.token)})),t.restore(f||m),Boolean(f)}},gui.Caret=function(e,t,n,i){function o(){d.style.opacity="0"===d.style.opacity?"1":"0",b.trigger()}function r(){return h.selectNodeContents(p),h.getBoundingClientRect()}function a(e){return E[e]!==w[e]}function s(){if(!1===w.isShown||e.getSelectionType()!==ops.OdtCursor.RangeSelection||!i&&!e.getSelectedRange().collapsed?(w.visibility="hidden",d.style.visibility="hidden",b.cancel()):(w.visibility="visible",d.style.visibility="visible",!1===w.isFocused?(d.style.opacity="1",b.cancel()):((C||a("visibility"))&&(d.style.opacity="1",b.cancel()),b.trigger())),x||N){var n;n=e.getNode();var o,s,l=v.getBoundingClientRect(y.getSizer()),p=!1,h=0;if(n.removeAttributeNS("urn:webodf:names:cursor","caret-sizer-active"),0(n={top:(s=v.translateRect(s,l,y.getZoomLevel())).top,height:s.height,right:p?s.left:s.right,width:v.adaptRangeDifferenceToZoomLevel(h,y.getZoomLevel())}).height&&(n={top:n.top-(8-n.height)/2,height:8,right:n.right}),u.style.height=n.height+"px",u.style.top=n.top+"px",u.style.left=n.right-n.width+"px",u.style.width=n.width?n.width+"px":"",f&&((n=runtime.getWindow().getComputedStyle(e.getNode(),null)).font?f.style.font=n.font:(f.style.fontStyle=n.fontStyle,f.style.fontVariant=n.fontVariant,f.style.fontWeight=n.fontWeight,f.style.fontSize=n.fontSize,f.style.lineHeight=n.lineHeight,f.style.fontFamily=n.fontFamily))}w.isShown&&N&&t.scrollIntoView(d.getBoundingClientRect()),a("isFocused")&&c.markAsFocussed(w.isFocused),Object.keys(w).forEach((function(e){E[e]=w[e]})),x=N=C=!1}function l(e){u.parentNode.removeChild(u),p.parentNode.removeChild(p),e()}var u,d,c,f,p,h,m,g,b,y=e.getDocument().getCanvas(),v=core.DomUtils,S=new gui.GuiStepUtils,C=!1,N=!1,x=!1,w={isFocused:!1,isShown:!0,visibility:"hidden"},E={isFocused:!w.isFocused,isShown:!w.isShown,visibility:"hidden"};this.handleUpdate=function(){x=!0,g.trigger()},this.refreshCursorBlinking=function(){C=!0,g.trigger()},this.setFocus=function(){w.isFocused=!0,g.trigger()},this.removeFocus=function(){w.isFocused=!1,g.trigger()},this.show=function(){w.isShown=!0,g.trigger()},this.hide=function(){w.isShown=!1,g.trigger()},this.setAvatarImageUrl=function(e){c.setImageUrl(e)},this.setColor=function(e){d.style.borderColor=e,c.setColor(e)},this.getCursor=function(){return e},this.getFocusElement=function(){return d},this.toggleHandleVisibility=function(){c.isVisible()?c.hide():c.show()},this.showHandle=function(){c.show()},this.hideHandle=function(){c.hide()},this.setOverlayElement=function(e){f=e,u.appendChild(e),x=!0,g.trigger()},this.ensureVisible=function(){N=!0,g.trigger()},this.getBoundingClientRect=function(){return v.getBoundingClientRect(u)},this.destroy=function(e){core.Async.destroyAll([g.destroy,b.destroy,c.destroy,l],e)},function(){var t=e.getDocument(),i=[t.createRootFilter(e.getMemberId()),t.getPositionFilter()],r=t.getDOMDocument();h=r.createRange(),(p=r.createElement("span")).className="webodf-caretSizer",p.textContent="|",e.getNode().appendChild(p),(u=r.createElement("div")).setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",e.getMemberId()),u.className="webodf-caretOverlay",(d=r.createElement("div")).className="caret",u.appendChild(d),c=new gui.Avatar(u,n),y.getSizer().appendChild(u),m=t.createStepIterator(e.getNode(),0,i,t.getRootNode()),g=core.Task.createRedrawTask(s),b=core.Task.createTimeoutTask(o,500),g.triggerImmediate()}()},odf.TextSerializer=function(){var e=this,t=odf.OdfUtils;this.filter=null,this.writeToString=function(n){return n?("\n"===(n=function n(i){var o,r="",a=e.filter?e.filter.acceptNode(i):NodeFilter.FILTER_ACCEPT,s=i.nodeType;if((a===NodeFilter.FILTER_ACCEPT||a===NodeFilter.FILTER_SKIP)&&t.isTextContentContainingNode(i))for(o=i.firstChild;o;)r+=n(o),o=o.nextSibling;return a===NodeFilter.FILTER_ACCEPT&&(s===Node.ELEMENT_NODE&&t.isParagraph(i)?r+="\n":s===Node.TEXT_NODE&&i.textContent&&(r+=i.textContent)),r}(n))[n.length-1]&&(n=n.substr(0,n.length-1)),n):""}},gui.MimeDataExporter=function(){var e;this.exportRangeToDataTransfer=function(t,n){var i;(i=n.startContainer.ownerDocument.createElement("span")).appendChild(n.cloneContents()),i=e.writeToString(i);try{t.setData("text/plain",i)}catch(e){t.setData("Text",i)}},(e=new odf.TextSerializer).filter=new odf.OdfNodeFilter},gui.Clipboard=function(e){this.setDataFromRange=function(t,n){var i,o=t.clipboardData;return i=runtime.getWindow(),!o&&i&&(o=i.clipboardData),o?(i=!0,e.exportRangeToDataTransfer(o,n),t.preventDefault()):i=!1,i}},gui.SessionContext=function(e,t){var n=e.getOdtDocument(),i=odf.OdfUtils;this.isLocalCursorWithinOwnAnnotation=function(){var e,o=n.getCursor(t);return!(!o||(e=o&&o.getNode(),o=n.getMember(t).getProperties().fullName,!(e=i.getParentAnnotation(e,n.getRootNode()))||i.getAnnotationCreator(e)!==o))}},gui.StyleSummary=function(e){function t(t,n){var i,r=t+"|"+n;return o.hasOwnProperty(r)||(i=[],e.forEach((function(e){e=(e=e.styleProperties[t])&&e[n],-1===i.indexOf(e)&&i.push(e)})),o[r]=i),o[r]}function n(e,n,i){return function(){var o=t(e,n);return i.length>=o.length&&o.every((function(e){return-1!==i.indexOf(e)}))}}function i(e,n){var i=t(e,n);return 1===i.length?i[0]:void 0}var o={};this.getPropertyValues=t,this.getCommonValue=i,this.isBold=n("style:text-properties","fo:font-weight",["bold"]),this.isItalic=n("style:text-properties","fo:font-style",["italic"]),this.hasUnderline=n("style:text-properties","style:text-underline-style",["solid"]),this.hasStrikeThrough=n("style:text-properties","style:text-line-through-style",["solid"]),this.fontSize=function(){var e=i("style:text-properties","fo:font-size");return e&&parseFloat(e)},this.fontName=function(){return i("style:text-properties","style:font-name")},this.isAlignedLeft=n("style:paragraph-properties","fo:text-align",["left","start"]),this.isAlignedCenter=n("style:paragraph-properties","fo:text-align",["center"]),this.isAlignedRight=n("style:paragraph-properties","fo:text-align",["right","end"]),this.isAlignedJustified=n("style:paragraph-properties","fo:text-align",["justify"]),this.text={isBold:this.isBold,isItalic:this.isItalic,hasUnderline:this.hasUnderline,hasStrikeThrough:this.hasStrikeThrough,fontSize:this.fontSize,fontName:this.fontName},this.paragraph={isAlignedLeft:this.isAlignedLeft,isAlignedCenter:this.isAlignedCenter,isAlignedRight:this.isAlignedRight,isAlignedJustified:this.isAlignedJustified}},gui.DirectFormattingController=function(e,t,n,i,o,r,a){function s(){return D.value().styleSummary}function l(){return D.value().enabledFeatures}function u(e){var t;return e.collapsed?((t=e.startContainer).hasChildNodes()&&e.startOffsete.clientWidth||e.scrollHeight>e.clientHeight)&&t.push(new u(e)),e=e.parentNode;return t.push(new l(y)),t}(b),m(),b.focus(),e.forEach((function(e){e.restore()})))}var b,y=runtime.getWindow(),v={beforecut:!0,beforepaste:!0,longpress:!0,drag:!0,dragstop:!0},S={mousedown:!0,mouseup:!0,focus:!0},C={},N={},x=e.getCanvas().getElement(),w=this,E={};this.addFilter=function(e,t){d(e,!0).filters.push(t)},this.removeFilter=function(e,t){var n=d(e,!0),i=n.filters.indexOf(t);-1!==i&&n.filters.splice(i,1)},this.subscribe=c,this.unsubscribe=f,this.hasFocus=p,this.focus=g,this.getEventTrap=function(){return b},this.setEditing=function(e){var t=p();t&&b.blur(),e?b.removeAttribute("readOnly"):b.setAttribute("readOnly","true"),t&&g()},this.destroy=function(e){f("touchstart",s),Object.keys(E).forEach((function(e){i(parseInt(e,10))})),E.length=0,Object.keys(C).forEach((function(e){C[e].destroy()})),C={},f("mousedown",h),f("mouseup",m),f("contextmenu",m),Object.keys(N).forEach((function(e){N[e].destroy()})),N={},b.parentNode.removeChild(b),e()},function(){var t=e.getOdfCanvas().getSizer(),i=t.ownerDocument;runtime.assert(Boolean(y),"EventManager requires a window object to operate correctly"),(b=i.createElement("textarea")).id="eventTrap",b.setAttribute("tabindex","-1"),b.setAttribute("readOnly","true"),b.setAttribute("rows","1"),t.appendChild(b),c("mousedown",h),c("mouseup",m),c("contextmenu",m),C.longpress=new n("longpress",["touchstart","touchmove","touchend"],o),C.drag=new n("drag",["touchstart","touchmove","touchend"],r),C.dragstop=new n("dragstop",["drag","touchend"],a),c("touchstart",s)}()},gui.IOSSafariSupport=function(e){function t(){n.innerHeight!==n.outerHeight&&(i.style.display="none",runtime.requestAnimationFrame((function(){i.style.display="block"})))}var n=runtime.getWindow(),i=e.getEventTrap();this.destroy=function(n){e.unsubscribe("focus",t),i.removeAttribute("autocapitalize"),i.style.WebkitTransform="",n()},e.subscribe("focus",t),i.setAttribute("autocapitalize","off"),i.style.WebkitTransform="translateX(-10000px)"},gui.HyperlinkController=function(e,t,n,i){function o(){var e=!0;!0===t.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(e=n.isLocalCursorWithinOwnAnnotation()),e!==u&&(u=e,l.emit(gui.HyperlinkController.enabledChanged,u))}function r(e){e.getMemberId()===i&&o()}var a=odf.OdfUtils,s=e.getOdtDocument(),l=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),u=!1;this.isEnabled=function(){return u},this.subscribe=function(e,t){l.subscribe(e,t)},this.unsubscribe=function(e,t){l.unsubscribe(e,t)},this.addHyperlink=function(t,n){if(u){var o=s.getCursorSelection(i),r=new ops.OpApplyHyperlink,a=[];(0===o.length||n)&&(n=n||t,(r=new ops.OpInsertText).init({memberid:i,position:o.position,text:n}),o.length=n.length,a.push(r)),(r=new ops.OpApplyHyperlink).init({memberid:i,position:o.position,length:o.length,hyperlink:t}),a.push(r),e.enqueue(a)}},this.removeHyperlinks=function(){if(u){var t,n,o=s.createPositionIterator(s.getRootNode()),r=s.getCursor(i).getSelectedRange(),l=a.getHyperlinkElements(r),d=r.collapsed&&1===l.length,c=s.getDOMDocument().createRange(),f=[];0!==l.length&&(l.forEach((function(e){c.selectNodeContents(e),t=s.convertDomToCursorRange({anchorNode:c.startContainer,anchorOffset:c.startOffset,focusNode:c.endContainer,focusOffset:c.endOffset}),(n=new ops.OpRemoveHyperlink).init({memberid:i,position:t.position,length:t.length}),f.push(n)})),d||(d=l[0],-1===r.comparePoint(d,0)&&(c.setStart(d,0),c.setEnd(r.startContainer,r.startOffset),0<(t=s.convertDomToCursorRange({anchorNode:c.startContainer,anchorOffset:c.startOffset,focusNode:c.endContainer,focusOffset:c.endOffset})).length&&((n=new ops.OpApplyHyperlink).init({memberid:i,position:t.position,length:t.length,hyperlink:a.getHyperlinkTarget(d)}),f.push(n))),l=l[l.length-1],o.moveToEndOfNode(l),o=o.unfilteredDomOffset(),1===r.comparePoint(l,o)&&(c.setStart(r.endContainer,r.endOffset),c.setEnd(l,o),0<(t=s.convertDomToCursorRange({anchorNode:c.startContainer,anchorOffset:c.startOffset,focusNode:c.endContainer,focusOffset:c.endOffset})).length&&((n=new ops.OpApplyHyperlink).init({memberid:i,position:t.position,length:t.length,hyperlink:a.getHyperlinkTarget(l)}),f.push(n)))),e.enqueue(f),c.detach())}},this.destroy=function(e){s.unsubscribe(ops.Document.signalCursorMoved,r),t.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,o),e()},s.subscribe(ops.Document.signalCursorMoved,r),t.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,o),o()},gui.HyperlinkController.enabledChanged="enabled/changed",gui.ImageController=function(e,t,n,i,o){function r(){var e=!0;!0===t.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(e=n.isLocalCursorWithinOwnAnnotation()),e!==p&&(p=e,f.emit(gui.ImageController.enabledChanged,p))}function a(e){e.getMemberId()===i&&r()}var s={"image/gif":".gif","image/jpeg":".jpg","image/png":".png"},l=odf.Namespaces.textns,u=e.getOdtDocument(),d=odf.OdfUtils,c=u.getFormatting(),f=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),p=!1;this.isEnabled=function(){return p},this.subscribe=function(e,t){f.subscribe(e,t)},this.unsubscribe=function(e,t){f.unsubscribe(e,t)},this.insertImage=function(t,n,r,a){if(p){var f,h=new core.CSSUnits;if(runtime.assert(0r.width&&(m=r.width/a.width),a.height>r.height&&(g=r.height/a.height),r=Math.min(m,g),a={width:a.width*r,height:a.height*r}}r=h.convert(a.width,"px","cm")+"cm",h=h.convert(a.height,"px","cm")+"cm",g=u.getOdfCanvas().odfContainer().rootElement.styles,a=t.toLowerCase(),m=s.hasOwnProperty(a)?s[a]:null,a=[],runtime.assert(null!==m,"Image type is not supported: "+t),m="Pictures/"+o.generateImageName()+m,(f=new ops.OpSetBlob).init({memberid:i,filename:m,mimetype:t,content:n}),a.push(f),c.getStyleElement("Graphics","graphic",[g])||((t=new ops.OpAddStyle).init({memberid:i,styleName:"Graphics",styleFamily:"graphic",isAutomaticStyle:!1,setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph","svg:x":"0cm","svg:y":"0cm","style:wrap":"dynamic","style:number-wrapped-paragraphs":"no-limit","style:wrap-contour":"false","style:vertical-pos":"top","style:vertical-rel":"paragraph","style:horizontal-pos":"center","style:horizontal-rel":"paragraph"}}}),a.push(t)),t=o.generateStyleName(),(n=new ops.OpAddStyle).init({memberid:i,styleName:t,styleFamily:"graphic",isAutomaticStyle:!0,setProperties:{"style:parent-style-name":"Graphics","style:graphic-properties":{"style:vertical-pos":"top","style:vertical-rel":"baseline","style:horizontal-pos":"center","style:horizontal-rel":"paragraph","fo:background-color":"transparent","style:background-transparency":"100%","style:shadow":"none","style:mirror":"none","fo:clip":"rect(0cm, 0cm, 0cm, 0cm)","draw:luminance":"0%","draw:contrast":"0%","draw:red":"0%","draw:green":"0%","draw:blue":"0%","draw:gamma":"100%","draw:color-inversion":"false","draw:image-opacity":"100%","draw:color-mode":"standard"}}}),a.push(n),(f=new ops.OpInsertImage).init({memberid:i,position:u.getCursorPosition(i),filename:m,frameWidth:r,frameHeight:h,frameStyleName:t,frameName:o.generateFrameName()}),a.push(f),e.enqueue(a)}},this.destroy=function(e){u.unsubscribe(ops.Document.signalCursorMoved,a),t.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,r),e()},u.subscribe(ops.Document.signalCursorMoved,a),t.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,r),r()},gui.ImageController.enabledChanged="enabled/changed",gui.ImageSelector=function(e){function t(){var t=e.getSizer(),n=o.createElement("div");return n.id="imageSelector",n.style.borderWidth="1px",t.appendChild(n),i.forEach((function(e){var t=o.createElement("div");t.className=e,n.appendChild(t)})),n}var n=odf.Namespaces.svgns,i="topLeft topRight bottomRight bottomLeft topMiddle rightMiddle bottomMiddle leftMiddle".split(" "),o=e.getElement().ownerDocument,r=!1;this.select=function(i){var a,s,l=o.getElementById("imageSelector");l||(l=t()),r=!0,a=l.parentNode,s=i.getBoundingClientRect();var u=a.getBoundingClientRect(),d=e.getZoomLevel();a=(s.left-u.left)/d-1,s=(s.top-u.top)/d-1,l.style.display="block",l.style.left=a+"px",l.style.top=s+"px",l.style.width=i.getAttributeNS(n,"width"),l.style.height=i.getAttributeNS(n,"height")},this.clearSelection=function(){var e;r&&(e=o.getElementById("imageSelector"))&&(e.style.display="none"),r=!1},this.isSelectorElement=function(e){var t=o.getElementById("imageSelector");return!!t&&(e===t||e.parentNode===t)}},function(){function e(e){function t(e){return r=e.which&&String.fromCharCode(e.which)===o,o=void 0,!1===r}function n(){r=!1}function i(e){o=e.data,r=!1}var o,r=!1;this.destroy=function(o){e.unsubscribe("textInput",n),e.unsubscribe("compositionend",i),e.removeFilter("keypress",t),o()},e.subscribe("textInput",n),e.subscribe("compositionend",i),e.addFilter("keypress",t)}gui.InputMethodEditor=function(t,n){function i(e){g&&(e?g.getNode().setAttributeNS("urn:webodf:names:cursor","composing","true"):(g.getNode().removeAttributeNS("urn:webodf:names:cursor","composing"),c.textContent=""))}function o(){v&&(v=!1,i(!1),C.emit(gui.InputMethodEditor.signalCompositionEnd,{data:S}),S="")}function r(){x||(x=!0,o(),g&&g.getSelectedRange().collapsed?b.value="":b.value=h.writeToString(g.getSelectedRange().cloneContents()),b.setSelectionRange(0,b.value.length),x=!1)}function a(){n.hasFocus()&&f.trigger()}function s(){p=void 0,f.cancel(),i(!0),v||C.emit(gui.InputMethodEditor.signalCompositionStart,{data:""})}function l(e){e=p=e.data,v=!0,S+=e,f.trigger()}function u(e){e.data!==p&&(e=e.data,v=!0,S+=e,f.trigger()),p=void 0}function d(){c.textContent=b.value}var c,f,p,h,m,g=null,b=n.getEventTrap(),y=b.ownerDocument,v=!1,S="",C=new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart,gui.InputMethodEditor.signalCompositionEnd]),N=[],x=!1;this.subscribe=C.subscribe,this.unsubscribe=C.unsubscribe,this.registerCursor=function(e){e.getMemberId()===t&&((g=e).getNode().appendChild(c),e.subscribe(ops.OdtCursor.signalCursorUpdated,a),n.subscribe("input",d),n.subscribe("compositionupdate",d))},this.removeCursor=function(e){g&&e===t&&(g.getNode().removeChild(c),g.unsubscribe(ops.OdtCursor.signalCursorUpdated,a),n.unsubscribe("input",d),n.unsubscribe("compositionupdate",d),g=null)},this.destroy=function(e){n.unsubscribe("compositionstart",s),n.unsubscribe("compositionend",l),n.unsubscribe("textInput",u),n.unsubscribe("keypress",o),n.unsubscribe("focus",r),core.Async.destroyAll(m,e)},(h=new odf.TextSerializer).filter=new odf.OdfNodeFilter,n.subscribe("compositionstart",s),n.subscribe("compositionend",l),n.subscribe("textInput",u),n.subscribe("keypress",o),n.subscribe("focus",r),N.push(new e(n)),m=N.map((function(e){return e.destroy})),(c=y.createElement("span")).setAttribute("id","composer"),f=core.Task.createTimeoutTask(r,1),m.push(f.destroy)},gui.InputMethodEditor.signalCompositionStart="input/compositionstart",gui.InputMethodEditor.signalCompositionEnd="input/compositionend"}(),gui.MetadataController=function(e,t){function n(e){r.emit(gui.MetadataController.signalMetadataChanged,e)}function i(e){var t=-1===a.indexOf(e);return t||runtime.log("Setting "+e+" is restricted."),t}var o=e.getOdtDocument(),r=new core.EventNotifier([gui.MetadataController.signalMetadataChanged]),a=["dc:creator","dc:date","meta:editing-cycles","meta:editing-duration","meta:document-statistic"];this.setMetadata=function(n,o){var r,a={},s="";n&&Object.keys(n).filter(i).forEach((function(e){a[e]=n[e]})),o&&(s=o.filter(i).join(",")),(0i}function n(n){null!==n&&!1===t(n)&&(i=Math.abs(n-e))}var i,o=this,r=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT;this.token=void 0,this.process=function(e,i,a){var s,l;return e.visualDirection===r?(s=i&&i.right,l=a&&a.left):(s=i&&i.left,l=a&&a.right),!(!t(s)&&!t(l)&&((i||a)&&(n(s),n(l),o.token=e.token),1))}},gui.LineBoundaryScanner=function(){var e=this,t=null;this.token=void 0,this.process=function(n,i,o){var r;if(r=o)if(t){var a=t;r=Math.min(a.bottom-a.top,o.bottom-o.top);var s=Math.max(a.top,o.top);a=Math.min(a.bottom,o.bottom)-s,r=.4>=(0n?t.previousSibling:t.nextSibling)===NodeFilter.FILTER_ACCEPT&&(r=o),t=t.parentNode;return r}function i(e,t){var n;return null===e?p.NO_NEIGHBOUR:a.isCharacterElement(e)?p.SPACE_CHAR:e.nodeType===o||a.isTextSpan(e)||a.isHyperlink(e)?(n=e.textContent.charAt(t()),l.test(n)?p.SPACE_CHAR:s.test(n)?p.PUNCTUATION_CHAR:p.WORD_CHAR):p.OTHER}var o=Node.TEXT_NODE,r=Node.ELEMENT_NODE,a=odf.OdfUtils,s=/[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,l=/\s/,u=core.PositionFilter.FilterResult.FILTER_ACCEPT,d=core.PositionFilter.FilterResult.FILTER_REJECT,c=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,f=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,p={NO_NEIGHBOUR:0,SPACE_CHAR:1,PUNCTUATION_CHAR:2,WORD_CHAR:3,OTHER:4};this.acceptPosition=function(e){var o=e.container(),a=e.leftNode(),s=e.rightNode(),l=e.unfilteredDomOffset,h=function(){return e.unfilteredDomOffset()-1};return o.nodeType===r&&(null===s&&(s=n(o,1,e.getNodeFilter())),null===a&&(a=n(o,-1,e.getNodeFilter()))),o!==s&&(l=function(){return 0}),o!==a&&null!==a&&(h=function(){return a.textContent.length-1}),o=i(a,h),s=i(s,l),o===p.WORD_CHAR&&s===p.WORD_CHAR||o===p.PUNCTUATION_CHAR&&s===p.PUNCTUATION_CHAR||t===c&&o!==p.NO_NEIGHBOUR&&s===p.SPACE_CHAR||t===f&&o===p.SPACE_CHAR&&s!==p.NO_NEIGHBOUR?d:u}},odf.WordBoundaryFilter.IncludeWhitespace={None:0,TRAILING:1,LEADING:2},gui.SelectionController=function(e,t){function n(e){var n=e.spec();(e.isEdit||n.memberid===t)&&(g=void 0,b.cancel())}function i(){var e=y.getCursor(t).getNode();return y.createStepIterator(e,0,[C,x],y.getRootElement(e))}function o(e,t,n){n=new odf.WordBoundaryFilter(y,n);var i=y.getRootElement(e)||y.getRootNode(),o=y.createRootFilter(i);return y.createStepIterator(e,t,[C,o,n],i)}function r(e,t){return t?{anchorNode:e.startContainer,anchorOffset:e.startOffset,focusNode:e.endContainer,focusOffset:e.endOffset}:{anchorNode:e.endContainer,anchorOffset:e.endOffset,focusNode:e.startContainer,focusOffset:e.startOffset}}function a(e,n,i){var o=new ops.OpMoveCursor;return o.init({memberid:t,position:e,length:n||0,selectionType:i}),o}function s(n,i,o){var s;(s=r((s=y.getCursor(t)).getSelectedRange(),s.hasForwardSelection())).focusNode=n,s.focusOffset=i,o||(s.anchorNode=s.focusNode,s.anchorOffset=s.focusOffset),n=y.convertDomToCursorRange(s),e.enqueue([a(n.position,n.length)])}function l(e){var t;(t=o(e.startContainer,e.startOffset,E)).roundToPreviousStep()&&e.setStart(t.container(),t.offset()),(t=o(e.endContainer,e.endOffset,T)).roundToNextStep()&&e.setEnd(t.container(),t.offset())}function u(e){var t=(n=S.getParagraphElements(e))[0],n=n[n.length-1];t&&e.setStart(t,0),n&&(S.isParagraph(e.endContainer)&&0===e.endOffset?e.setEndBefore(n):e.setEnd(n,n.childNodes.length))}function d(e,t,n,i){var o,r;i?(o=n.startContainer,r=n.startOffset):(o=n.endContainer,r=n.endOffset),v.containsNode(e,o)||(r=0>v.comparePoints(e,0,o,r)?0:e.childNodes.length,o=e),(e=y.createStepIterator(o,r,t,S.getParagraphElement(o)||e)).roundToClosestStep()||runtime.assert(!1,"No step found in requested range"),i?n.setStart(e.container(),e.offset()):n.setEnd(e.container(),e.offset())}function c(e,t){var n=i();n.advanceStep(e)&&s(n.container(),n.offset(),t)}function f(e,t){var n,o=g,r=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];void 0===o&&w&&(o=w()),isNaN(o)||(n=i(),N.moveToFilteredStep(n,e,r)&&n.advanceStep(e)&&(r=[new gui.ClosestXOffsetScanner(o),new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner],N.moveToFilteredStep(n,e,r)&&(s(n.container(),n.offset(),t),g=o,b.restart())))}function p(e,t){var n=i(),o=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];N.moveToFilteredStep(n,e,o)&&s(n.container(),n.offset(),t)}function h(e,n){var i;(i=o((i=r((i=y.getCursor(t)).getSelectedRange(),i.hasForwardSelection())).focusNode,i.focusOffset,E)).advanceStep(e)&&s(i.container(),i.offset(),n)}function m(e,n,i){var o=!1,a=r((a=y.getCursor(t)).getSelectedRange(),a.hasForwardSelection());o=y.getRootElement(a.focusNode),runtime.assert(Boolean(o),"SelectionController: Cursor outside root"),(a=y.createStepIterator(a.focusNode,a.focusOffset,[C,x],o)).roundToClosestStep(),a.advanceStep(e)&&(i=i(a.container()))&&(e===O?(a.setPosition(i,0),o=a.roundToNextStep()):(a.setPosition(i,i.childNodes.length),o=a.roundToPreviousStep()),o&&s(a.container(),a.offset(),n))}var g,b,y=e.getOdtDocument(),v=core.DomUtils,S=odf.OdfUtils,C=y.getPositionFilter(),N=new gui.GuiStepUtils,x=y.createRootFilter(t),w=null,E=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,T=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,O=core.StepDirection.PREVIOUS,A=core.StepDirection.NEXT;this.selectionToRange=function(e){var t=0<=v.comparePoints(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset),n=e.focusNode.ownerDocument.createRange();return t?(n.setStart(e.anchorNode,e.anchorOffset),n.setEnd(e.focusNode,e.focusOffset)):(n.setStart(e.focusNode,e.focusOffset),n.setEnd(e.anchorNode,e.anchorOffset)),{range:n,hasForwardSelection:t}},this.rangeToSelection=r,this.selectImage=function(t){var n,i=y.getRootElement(t),o=y.createRootFilter(i);(i=y.createStepIterator(t,0,[o,y.getPositionFilter()],i)).roundToPreviousStep()||runtime.assert(!1,"No walkable position before frame"),o=i.container(),n=i.offset(),i.setPosition(t,t.childNodes.length),i.roundToNextStep()||runtime.assert(!1,"No walkable position after frame"),t=a((t=y.convertDomToCursorRange({anchorNode:o,anchorOffset:n,focusNode:i.container(),focusOffset:i.offset()})).position,t.length,ops.OdtCursor.RegionSelection),e.enqueue([t])},this.expandToWordBoundaries=l,this.expandToParagraphBoundaries=u,this.selectRange=function(n,i,o){var s,c=y.getOdfCanvas().getElement(),f=[C];s=v.containsNode(c,n.startContainer),c=v.containsNode(c,n.endContainer),(s||c)&&(s&&c&&(2===o?l(n):3<=o&&u(n)),(o=i?y.getRootElement(n.startContainer):y.getRootElement(n.endContainer))||(o=y.getRootNode()),f.push(y.createRootFilter(o)),d(o,f,n,!0),d(o,f,n,!1),n=r(n,i),i=y.convertDomToCursorRange(n),n=y.getCursorSelection(t),(i.position!==n.position||i.length!==n.length)&&(n=a(i.position,i.length,ops.OdtCursor.RangeSelection),e.enqueue([n])))},this.moveCursorToLeft=function(){return c(O,!1),!0},this.moveCursorToRight=function(){return c(A,!1),!0},this.extendSelectionToLeft=function(){return c(O,!0),!0},this.extendSelectionToRight=function(){return c(A,!0),!0},this.setCaretXPositionLocator=function(e){w=e},this.moveCursorUp=function(){return f(O,!1),!0},this.moveCursorDown=function(){return f(A,!1),!0},this.extendSelectionUp=function(){return f(O,!0),!0},this.extendSelectionDown=function(){return f(A,!0),!0},this.moveCursorBeforeWord=function(){return h(O,!1),!0},this.moveCursorPastWord=function(){return h(A,!1),!0},this.extendSelectionBeforeWord=function(){return h(O,!0),!0},this.extendSelectionPastWord=function(){return h(A,!0),!0},this.moveCursorToLineStart=function(){return p(O,!1),!0},this.moveCursorToLineEnd=function(){return p(A,!1),!0},this.extendSelectionToLineStart=function(){return p(O,!0),!0},this.extendSelectionToLineEnd=function(){return p(A,!0),!0},this.extendSelectionToParagraphStart=function(){return m(O,!0,S.getParagraphElement),!0},this.extendSelectionToParagraphEnd=function(){return m(A,!0,S.getParagraphElement),!0},this.moveCursorToParagraphStart=function(){return m(O,!1,S.getParagraphElement),!0},this.moveCursorToParagraphEnd=function(){return m(A,!1,S.getParagraphElement),!0},this.moveCursorToDocumentStart=function(){return m(O,!1,y.getRootElement),!0},this.moveCursorToDocumentEnd=function(){return m(A,!1,y.getRootElement),!0},this.extendSelectionToDocumentStart=function(){return m(O,!0,y.getRootElement),!0},this.extendSelectionToDocumentEnd=function(){return m(A,!0,y.getRootElement),!0},this.extendSelectionToEntireDocument=function(){var n,i,o,r=y.getCursor(t);return r=y.getRootElement(r.getNode()),runtime.assert(Boolean(r),"SelectionController: Cursor outside root"),(o=y.createStepIterator(r,0,[C,x],r)).roundToClosestStep(),n=o.container(),i=o.offset(),o.setPosition(r,r.childNodes.length),o.roundToClosestStep(),r=y.convertDomToCursorRange({anchorNode:n,anchorOffset:i,focusNode:o.container(),focusOffset:o.offset()}),e.enqueue([a(r.position,r.length)]),!0},this.destroy=function(e){y.unsubscribe(ops.OdtDocument.signalOperationStart,n),core.Async.destroyAll([b.destroy],e)},b=core.Task.createTimeoutTask((function(){g=void 0}),2e3),y.subscribe(ops.OdtDocument.signalOperationStart,n)},gui.TextController=function(e,t,n,i,o,r){function a(){m=!0!==t.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)||n.isLocalCursorWithinOwnAnnotation()}function s(e){e.getMemberId()===i&&a()}function l(e,t,n){var i=[f.getPositionFilter()];return n&&i.push(f.createRootFilter(e.startContainer)),(n=f.createStepIterator(e.startContainer,e.startOffset,i,t)).roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range start"),t=f.convertDomPointToCursorStep(n.container(),n.offset()),e.collapsed?e=t:(n.setPosition(e.endContainer,e.endOffset),n.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range end"),e=f.convertDomPointToCursorStep(n.container(),n.offset())),{position:t,length:e-t}}function u(e){var t,n,o,r=p.getParagraphElements(e),a=e.cloneRange(),s=[];return t=r[0],1e.length&&(e.position+=e.length,e.length=-e.length),e}function c(t){if(!m)return!1;var n,o,r=f.getCursor(i).getSelectedRange().cloneRange(),a=d(f.getCursorSelection(i));if(0===a.length){a=void 0,n=f.getCursor(i).getNode(),o=f.getRootElement(n);var s=[f.getPositionFilter(),f.createRootFilter(o)];(o=f.createStepIterator(n,0,s,o)).roundToClosestStep()&&(t?o.nextStep():o.previousStep())&&(a=d(f.convertDomToCursorRange({anchorNode:n,anchorOffset:0,focusNode:o.container(),focusOffset:o.offset()})),t?(r.setStart(n,0),r.setEnd(o.container(),o.offset())):(r.setStart(o.container(),o.offset()),r.setEnd(n,0)))}return a&&e.enqueue(u(r)),void 0!==a}var f=e.getOdtDocument(),p=odf.OdfUtils,h=core.DomUtils,m=!1,g=odf.Namespaces.textns,b=core.StepDirection.NEXT;this.isEnabled=function(){return m},this.enqueueParagraphSplittingOps=function(){if(!m)return!1;var t,n=(t=f.getCursor(i)).getSelectedRange(),o=d(f.getCursorSelection(i)),a=[],s=(t=p.getParagraphElement(t.getNode())).getAttributeNS(g,"style-name")||"";return 0n.left&&(n=v(i))&&(t.focusNode=n.container,t.focusOffset=n.offset,o&&(t.anchorNode=t.focusNode,t.anchorOffset=t.focusOffset))):L.isImage(t.focusNode.firstChild)&&1===t.focusOffset&&L.isCharacterFrame(t.focusNode)&&(n=v(t.focusNode))&&(t.anchorNode=t.focusNode=n.container,t.anchorOffset=t.focusOffset=n.offset),t.anchorNode&&t.focusNode&&(t=ue.selectionToRange(t),ue.selectRange(t.range,t.hasForwardSelection,0===e.button?e.detail:0)),G.focus()}function C(e){var t;(t=r(e.clientX,e.clientY))&&(e={anchorNode:e=t.container,anchorOffset:t=t.offset,focusNode:e,focusOffset:t},e=ue.selectionToRange(e),ue.selectRange(e.range,e.hasForwardSelection,2),G.focus())}function N(e){var t,n,o,r=e.target||e.srcElement||null;P.processRequests(),V&&(L.isImage(r)&&L.isCharacterFrame(r.parentNode)&&I.getSelection().isCollapsed?(ue.selectImage(r.parentNode),G.focus()):ne.isSelectorElement(r)?G.focus():q?(n=(r=i.getSelectedRange()).collapsed,L.isImage(r.endContainer)&&0===r.endOffset&&L.isCharacterFrame(r.endContainer.parentNode)&&(o=v(o=r.endContainer.parentNode))&&(r.setEnd(o.container,o.offset),n&&r.collapse(!1)),ue.selectRange(r,i.hasForwardSelection(),0===e.button?e.detail:0),G.focus()):he?S(e):(t=U.cloneEvent(e),_=runtime.setTimeout((function(){S(t)}),0)),ae=0,q=V=!1)}function x(e){var t=F.getCursor(n).getSelectedRange();t.collapsed||z.exportRangeToDataTransfer(e.dataTransfer,t)}function w(){V&&G.focus(),ae=0,q=V=!1}function E(e){N(e)}function T(e){var t=e.target||e.srcElement||null,n=null;"annotationRemoveButton"===t.className?(runtime.assert(Y,"Remove buttons are displayed on annotations while annotation editing is disabled in the controller."),n=t.parentNode.getElementsByTagNameNS(odf.Namespaces.officens,"annotation").item(0),$.removeAnnotation(n),G.focus()):"webodf-draggable"!==t.getAttribute("class")&&N(e)}function O(e){(e=e.data)&&(-1===e.indexOf("\n")?ee.insertText(e):oe.paste(e))}function A(e){return function(t){return F.getCursor(n).getSelectionType()!==ops.OdtCursor.RangeSelection||e(t)}}function R(e){G.unsubscribe("keydown",W.handleEvent),G.unsubscribe("keypress",j.handleEvent),G.unsubscribe("keyup",X.handleEvent),G.unsubscribe("copy",l),G.unsubscribe("mousedown",y),G.unsubscribe("mousemove",P.trigger),G.unsubscribe("mouseup",T),G.unsubscribe("contextmenu",E),G.unsubscribe("dragstart",x),G.unsubscribe("dragend",w),G.unsubscribe("click",se.handleClick),G.unsubscribe("longpress",C),G.unsubscribe("drag",m),G.unsubscribe("dragstop",g),F.unsubscribe(ops.OdtDocument.signalOperationEnd,D.trigger),F.unsubscribe(ops.Document.signalCursorAdded,re.registerCursor),F.unsubscribe(ops.Document.signalCursorRemoved,re.removeCursor),F.unsubscribe(ops.OdtDocument.signalOperationEnd,c),e()}var _,P,D,k,I=runtime.getWindow(),F=t.getOdtDocument(),M=new gui.SessionConstraints,B=new gui.SessionContext(t,n),U=core.DomUtils,L=odf.OdfUtils,z=new gui.MimeDataExporter,H=new gui.Clipboard(z),W=new gui.KeyboardHandler,j=new gui.KeyboardHandler,X=new gui.KeyboardHandler,V=!1,Z=new odf.ObjectNameGenerator(F.getOdfCanvas().odfContainer(),n),q=!1,K=null,J=null,G=new gui.EventManager(F),Y=o.annotationsEnabled,$=new gui.AnnotationController(t,M,n),Q=new gui.DirectFormattingController(t,M,B,n,Z,o.directTextStylingEnabled,o.directParagraphStylingEnabled),ee=new gui.TextController(t,M,B,n,Q.createCursorStyleOp,Q.createParagraphStyleOps),te=new gui.ImageController(t,M,B,n,Z),ne=new gui.ImageSelector(F.getOdfCanvas()),ie=F.createPositionIterator(F.getRootNode()),oe=new gui.PasteController(t,M,B,n),re=new gui.InputMethodEditor(n,G),ae=0,se=new gui.HyperlinkClickHandler(F.getOdfCanvas().getElement,W,X),le=new gui.HyperlinkController(t,M,B,n),ue=new gui.SelectionController(t,n),de=new gui.MetadataController(t,n),ce=gui.KeyboardHandler.Modifier,fe=gui.KeyboardHandler.KeyCode,pe=-1!==I.navigator.appVersion.toLowerCase().indexOf("mac"),he=-1!==["iPad","iPod","iPhone"].indexOf(I.navigator.platform);runtime.assert(null!==I,"Expected to be run in an environment which has a global window, like a browser."),this.undo=p,this.redo=h,this.insertLocalCursor=function(){runtime.assert(void 0===t.getOdtDocument().getCursor(n),"Inserting local cursor a second time.");var e=new ops.OpAddCursor;e.init({memberid:n}),t.enqueue([e]),G.focus()},this.removeLocalCursor=function(){runtime.assert(void 0!==t.getOdtDocument().getCursor(n),"Removing local cursor without inserting before.");var e=new ops.OpRemoveCursor;e.init({memberid:n}),t.enqueue([e])},this.startEditing=function(){re.subscribe(gui.InputMethodEditor.signalCompositionStart,ee.removeCurrentSelection),re.subscribe(gui.InputMethodEditor.signalCompositionEnd,O),G.subscribe("beforecut",s),G.subscribe("cut",a),G.subscribe("beforepaste",d),G.subscribe("paste",u),J&&J.initialize(),G.setEditing(!0),se.setModifier(pe?ce.Meta:ce.Ctrl),W.bind(fe.Backspace,ce.None,function(e){return function(){return e(),!0}}(ee.removeTextByBackspaceKey),!0),W.bind(fe.Delete,ce.None,ee.removeTextByDeleteKey),W.bind(fe.Tab,ce.None,A((function(){return ee.insertText("\t"),!0}))),pe?(W.bind(fe.Clear,ce.None,ee.removeCurrentSelection),W.bind(fe.B,ce.Meta,A(Q.toggleBold)),W.bind(fe.I,ce.Meta,A(Q.toggleItalic)),W.bind(fe.U,ce.Meta,A(Q.toggleUnderline)),W.bind(fe.L,ce.MetaShift,A(Q.alignParagraphLeft)),W.bind(fe.E,ce.MetaShift,A(Q.alignParagraphCenter)),W.bind(fe.R,ce.MetaShift,A(Q.alignParagraphRight)),W.bind(fe.J,ce.MetaShift,A(Q.alignParagraphJustified)),Y&&W.bind(fe.C,ce.MetaShift,$.addAnnotation),W.bind(fe.Z,ce.Meta,p),W.bind(fe.Z,ce.MetaShift,h)):(W.bind(fe.B,ce.Ctrl,A(Q.toggleBold)),W.bind(fe.I,ce.Ctrl,A(Q.toggleItalic)),W.bind(fe.U,ce.Ctrl,A(Q.toggleUnderline)),W.bind(fe.L,ce.CtrlShift,A(Q.alignParagraphLeft)),W.bind(fe.E,ce.CtrlShift,A(Q.alignParagraphCenter)),W.bind(fe.R,ce.CtrlShift,A(Q.alignParagraphRight)),W.bind(fe.J,ce.CtrlShift,A(Q.alignParagraphJustified)),Y&&W.bind(fe.C,ce.CtrlAlt,$.addAnnotation),W.bind(fe.Z,ce.Ctrl,p),W.bind(fe.Z,ce.CtrlShift,h)),j.setDefault(A((function(e){var t;return!(!(t=null===e.which||void 0===e.which?String.fromCharCode(e.keyCode):0!==e.which&&0!==e.charCode?String.fromCharCode(e.which):null)||e.altKey||e.ctrlKey||e.metaKey||(ee.insertText(t),0))}))),j.bind(fe.Enter,ce.None,A(ee.enqueueParagraphSplittingOps))},this.endEditing=function(){re.unsubscribe(gui.InputMethodEditor.signalCompositionStart,ee.removeCurrentSelection),re.unsubscribe(gui.InputMethodEditor.signalCompositionEnd,O),G.unsubscribe("cut",a),G.unsubscribe("beforecut",s),G.unsubscribe("paste",u),G.unsubscribe("beforepaste",d),G.setEditing(!1),se.setModifier(ce.None),W.bind(fe.Backspace,ce.None,(function(){return!0}),!0),W.unbind(fe.Delete,ce.None),W.unbind(fe.Tab,ce.None),pe?(W.unbind(fe.Clear,ce.None),W.unbind(fe.B,ce.Meta),W.unbind(fe.I,ce.Meta),W.unbind(fe.U,ce.Meta),W.unbind(fe.L,ce.MetaShift),W.unbind(fe.E,ce.MetaShift),W.unbind(fe.R,ce.MetaShift),W.unbind(fe.J,ce.MetaShift),Y&&W.unbind(fe.C,ce.MetaShift),W.unbind(fe.Z,ce.Meta),W.unbind(fe.Z,ce.MetaShift)):(W.unbind(fe.B,ce.Ctrl),W.unbind(fe.I,ce.Ctrl),W.unbind(fe.U,ce.Ctrl),W.unbind(fe.L,ce.CtrlShift),W.unbind(fe.E,ce.CtrlShift),W.unbind(fe.R,ce.CtrlShift),W.unbind(fe.J,ce.CtrlShift),Y&&W.unbind(fe.C,ce.CtrlAlt),W.unbind(fe.Z,ce.Ctrl),W.unbind(fe.Z,ce.CtrlShift)),j.setDefault(null),j.unbind(fe.Enter,ce.None)},this.getInputMemberId=function(){return n},this.getSession=function(){return t},this.getSessionConstraints=function(){return M},this.setUndoManager=function(e){J&&J.unsubscribe(gui.UndoManager.signalUndoStackChanged,f),(J=e)&&(J.setDocument(F),J.setPlaybackFunction(t.enqueue),J.subscribe(gui.UndoManager.signalUndoStackChanged,f))},this.getUndoManager=function(){return J},this.getMetadataController=function(){return de},this.getAnnotationController=function(){return $},this.getDirectFormattingController=function(){return Q},this.getHyperlinkClickHandler=function(){return se},this.getHyperlinkController=function(){return le},this.getImageController=function(){return te},this.getSelectionController=function(){return ue},this.getTextController=function(){return ee},this.getEventManager=function(){return G},this.getKeyboardHandlers=function(){return{keydown:W,keypress:j}},this.destroy=function(e){var t=[P.destroy,D.destroy,Q.destroy,re.destroy,G.destroy,se.destroy,le.destroy,de.destroy,ue.destroy,ee.destroy,R];k&&t.unshift(k.destroy),runtime.clearTimeout(_),core.Async.destroyAll(t,e)},P=core.Task.createRedrawTask(b),D=core.Task.createRedrawTask((function(){var e=F.getCursor(n);e&&e.getSelectionType()===ops.OdtCursor.RegionSelection&&(e=L.getImageElements(e.getSelectedRange())[0])?ne.select(e.parentNode):ne.clearSelection()})),W.bind(fe.Left,ce.None,A(ue.moveCursorToLeft)),W.bind(fe.Right,ce.None,A(ue.moveCursorToRight)),W.bind(fe.Up,ce.None,A(ue.moveCursorUp)),W.bind(fe.Down,ce.None,A(ue.moveCursorDown)),W.bind(fe.Left,ce.Shift,A(ue.extendSelectionToLeft)),W.bind(fe.Right,ce.Shift,A(ue.extendSelectionToRight)),W.bind(fe.Up,ce.Shift,A(ue.extendSelectionUp)),W.bind(fe.Down,ce.Shift,A(ue.extendSelectionDown)),W.bind(fe.Home,ce.None,A(ue.moveCursorToLineStart)),W.bind(fe.End,ce.None,A(ue.moveCursorToLineEnd)),W.bind(fe.Home,ce.Ctrl,A(ue.moveCursorToDocumentStart)),W.bind(fe.End,ce.Ctrl,A(ue.moveCursorToDocumentEnd)),W.bind(fe.Home,ce.Shift,A(ue.extendSelectionToLineStart)),W.bind(fe.End,ce.Shift,A(ue.extendSelectionToLineEnd)),W.bind(fe.Up,ce.CtrlShift,A(ue.extendSelectionToParagraphStart)),W.bind(fe.Down,ce.CtrlShift,A(ue.extendSelectionToParagraphEnd)),W.bind(fe.Home,ce.CtrlShift,A(ue.extendSelectionToDocumentStart)),W.bind(fe.End,ce.CtrlShift,A(ue.extendSelectionToDocumentEnd)),pe?(W.bind(fe.Left,ce.Alt,A(ue.moveCursorBeforeWord)),W.bind(fe.Right,ce.Alt,A(ue.moveCursorPastWord)),W.bind(fe.Left,ce.Meta,A(ue.moveCursorToLineStart)),W.bind(fe.Right,ce.Meta,A(ue.moveCursorToLineEnd)),W.bind(fe.Home,ce.Meta,A(ue.moveCursorToDocumentStart)),W.bind(fe.End,ce.Meta,A(ue.moveCursorToDocumentEnd)),W.bind(fe.Left,ce.AltShift,A(ue.extendSelectionBeforeWord)),W.bind(fe.Right,ce.AltShift,A(ue.extendSelectionPastWord)),W.bind(fe.Left,ce.MetaShift,A(ue.extendSelectionToLineStart)),W.bind(fe.Right,ce.MetaShift,A(ue.extendSelectionToLineEnd)),W.bind(fe.Up,ce.AltShift,A(ue.extendSelectionToParagraphStart)),W.bind(fe.Down,ce.AltShift,A(ue.extendSelectionToParagraphEnd)),W.bind(fe.Up,ce.MetaShift,A(ue.extendSelectionToDocumentStart)),W.bind(fe.Down,ce.MetaShift,A(ue.extendSelectionToDocumentEnd)),W.bind(fe.A,ce.Meta,A(ue.extendSelectionToEntireDocument))):(W.bind(fe.Left,ce.Ctrl,A(ue.moveCursorBeforeWord)),W.bind(fe.Right,ce.Ctrl,A(ue.moveCursorPastWord)),W.bind(fe.Left,ce.CtrlShift,A(ue.extendSelectionBeforeWord)),W.bind(fe.Right,ce.CtrlShift,A(ue.extendSelectionPastWord)),W.bind(fe.A,ce.Ctrl,A(ue.extendSelectionToEntireDocument))),he&&(k=new gui.IOSSafariSupport(G)),G.subscribe("keydown",W.handleEvent),G.subscribe("keypress",j.handleEvent),G.subscribe("keyup",X.handleEvent),G.subscribe("copy",l),G.subscribe("mousedown",y),G.subscribe("mousemove",P.trigger),G.subscribe("mouseup",T),G.subscribe("contextmenu",E),G.subscribe("dragstart",x),G.subscribe("dragend",w),G.subscribe("click",se.handleClick),G.subscribe("longpress",C),G.subscribe("drag",m),G.subscribe("dragstop",g),F.subscribe(ops.OdtDocument.signalOperationEnd,D.trigger),F.subscribe(ops.Document.signalCursorAdded,re.registerCursor),F.subscribe(ops.Document.signalCursorRemoved,re.removeCursor),F.subscribe(ops.OdtDocument.signalOperationEnd,c)}}(),gui.CaretManager=function(e,t){function n(e){return r.hasOwnProperty(e)?r[e]:null}function i(){return Object.keys(r).map((function(e){return r[e]}))}function o(t){var n=r[t];n&&(delete r[t],t===e.getInputMemberId()?(s.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,n.ensureVisible),s.unsubscribe(ops.Document.signalCursorMoved,n.refreshCursorBlinking),l.unsubscribe("compositionupdate",n.handleUpdate),l.unsubscribe("compositionend",n.handleUpdate),l.unsubscribe("focus",n.setFocus),l.unsubscribe("blur",n.removeFocus),a.removeEventListener("focus",n.show,!1),a.removeEventListener("blur",n.hide,!1)):s.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,n.handleUpdate),n.destroy((function(){})))}var r={},a=runtime.getWindow(),s=e.getSession().getOdtDocument(),l=e.getEventManager();this.registerCursor=function(n,i,o){var u=n.getMemberId();return n=new gui.Caret(n,t,i,o),r[u]=n,u===e.getInputMemberId()?(runtime.log("Starting to track input on new cursor of "+u),s.subscribe(ops.OdtDocument.signalProcessingBatchEnd,n.ensureVisible),s.subscribe(ops.Document.signalCursorMoved,n.refreshCursorBlinking),l.subscribe("compositionupdate",n.handleUpdate),l.subscribe("compositionend",n.handleUpdate),l.subscribe("focus",n.setFocus),l.subscribe("blur",n.removeFocus),a.addEventListener("focus",n.show,!1),a.addEventListener("blur",n.hide,!1),n.setOverlayElement(l.getEventTrap())):s.subscribe(ops.OdtDocument.signalProcessingBatchEnd,n.handleUpdate),n},this.getCaret=n,this.getCarets=i,this.destroy=function(t){var n=i().map((function(e){return e.destroy}));e.getSelectionController().setCaretXPositionLocator(null),s.unsubscribe(ops.Document.signalCursorRemoved,o),r={},core.Async.destroyAll(n,t)},e.getSelectionController().setCaretXPositionLocator((function(){var t,i=n(e.getInputMemberId());return i&&(t=i.getBoundingClientRect()),t?t.right:void 0})),s.subscribe(ops.Document.signalCursorRemoved,o)},gui.EditInfoHandle=function(e){var t,n=[],i=e.ownerDocument,o=i.documentElement.namespaceURI;this.setEdits=function(e){var r,a,s,l;for(n=e,core.DomUtils.removeAllChildNodes(t),e=0;eu?(a=n(1,0),s=n(.5,1e4-u),l=n(.2,2e4-u)):1e4<=u&&2e4>u?(a=n(.5,0),l=n(.2,2e4-u)):a=n(.2,0)},this.getEdits=function(){return e.getEdits()},this.clearEdits=function(){e.clearEdits(),o.setEdits([]),r.hasAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")&&r.removeAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")},this.getEditInfo=function(){return e},this.show=function(){r.style.display="block"},this.hide=function(){u.hideHandle(),r.style.display="none"},this.showHandle=function(){o.show()},this.hideHandle=function(){o.hide()},this.destroy=function(t){runtime.clearTimeout(a),runtime.clearTimeout(s),runtime.clearTimeout(l),i.removeChild(r),o.destroy((function(n){n?t(n):e.destroy(t)}))},function(){var n=e.getOdtDocument().getDOMDocument();(r=n.createElementNS(n.documentElement.namespaceURI,"div")).setAttribute("class","editInfoMarker"),r.onmouseover=function(){u.showHandle()},r.onmouseout=function(){u.hideHandle()},(i=e.getNode()).appendChild(r),o=new gui.EditInfoHandle(i),t||u.hide()}()},gui.HyperlinkTooltipView=function(e,t){var n,i,o,r=core.DomUtils,a=odf.OdfUtils,s=runtime.getWindow();runtime.assert(null!==s,"Expected to be run in an environment which has a global window, like a browser."),this.showTooltip=function(l){var u,d=l.target||l.srcElement,c=e.getSizer(),f=e.getZoomLevel();e:{for(;d;){if(a.isHyperlink(d))break e;if(a.isParagraph(d)||a.isInlineRoot(d))break;d=d.parentNode}d=null}if(d){var p;switch(r.containsNode(c,o)||c.appendChild(o),u=i,t()){case gui.KeyboardHandler.Modifier.Ctrl:p=runtime.tr("Ctrl-click to follow link");break;case gui.KeyboardHandler.Modifier.Meta:p=runtime.tr("⌘-click to follow link");break;default:p=""}u.textContent=p,n.textContent=a.getHyperlinkTarget(d),o.style.display="block",u=s.innerWidth-o.offsetWidth-15,d=l.clientX>u?u:l.clientX+15,u=s.innerHeight-o.offsetHeight-10,l=l.clientY>u?u:l.clientY+10,d=(d-(c=c.getBoundingClientRect()).left)/f,l=(l-c.top)/f,o.style.left=d+"px",o.style.top=l+"px"}},this.hideTooltip=function(){o.style.display="none"},this.destroy=function(e){o.parentNode&&o.parentNode.removeChild(o),e()},function(){var t=e.getElement().ownerDocument;n=t.createElement("span"),i=t.createElement("span"),n.className="webodf-hyperlinkTooltipLink",i.className="webodf-hyperlinkTooltipText",(o=t.createElement("div")).className="webodf-hyperlinkTooltip",o.appendChild(n),o.appendChild(i),e.getElement().appendChild(o)}()},gui.OdfFieldView=function(e){var t,n=e.getElement().ownerDocument;this.showFieldHighlight=function(){t.appendChild(n.createTextNode(function(){var e;return(e=odf.OdfSchema.getFields().map((function(e){return e.replace(":","|")}))).join(",\n")+"\n{ background-color: #D0D0D0; }\n\n"+e.map((function(e){return e+":empty::after"})).join(",\n")+"\n{ content:' '; white-space: pre; }\n"}()))},this.hideFieldHighlight=function(){for(var e=t.sheet,n=e.cssRules;n.length;)e.deleteRule(n.length-1)},this.destroy=function(e){t.parentNode&&t.parentNode.removeChild(t),e()},t=function(){var e=n.getElementsByTagName("head").item(0),t=n.createElement("style"),i="";return t.type="text/css",t.media="screen, print, handheld, projection",odf.Namespaces.forEachPrefix((function(e,t){i+="@namespace "+e+" url("+t+");\n"})),t.appendChild(n.createTextNode(i)),e.appendChild(t),t}()},gui.ShadowCursor=function(e){var t=e.getDOMDocument().createRange(),n=!0;this.removeFromDocument=function(){},this.getMemberId=function(){return gui.ShadowCursor.ShadowCursorMemberId},this.getSelectedRange=function(){return t},this.setSelectedRange=function(e,i){t=e,n=!1!==i},this.hasForwardSelection=function(){return n},this.getDocument=function(){return e},this.getSelectionType=function(){return ops.OdtCursor.RangeSelection},t.setStart(e.getRootNode(),0)},gui.ShadowCursor.ShadowCursorMemberId="",gui.SelectionView=function(e){},gui.SelectionView.prototype.rerender=function(){},gui.SelectionView.prototype.show=function(){},gui.SelectionView.prototype.hide=function(){},gui.SelectionView.prototype.destroy=function(e){},gui.SelectionViewManager=function(e){function t(){return Object.keys(n).map((function(e){return n[e]}))}var n={};this.getSelectionView=function(e){return n.hasOwnProperty(e)?n[e]:null},this.getSelectionViews=t,this.removeSelectionView=function(e){n.hasOwnProperty(e)&&(n[e].destroy((function(){})),delete n[e])},this.hideSelectionView=function(e){n.hasOwnProperty(e)&&n[e].hide()},this.showSelectionView=function(e){n.hasOwnProperty(e)&&n[e].show()},this.rerenderSelectionViews=function(){Object.keys(n).forEach((function(e){n[e].rerender()}))},this.registerCursor=function(t,i){var o=t.getMemberId(),r=new e(t);return i?r.show():r.hide(),n[o]=r},this.destroy=function(e){var n=t();!function t(i,o){o?e(o):i .webodf-draggable"),e=gui.ShadowCursor.ShadowCursorMemberId,o(".webodf-selectionOverlay","{ fill: "+i+"; stroke: "+i+";}",""),o(".webodf-touchEnabled .webodf-selectionOverlay","{ display: block; }"," > .webodf-draggable"))}(e.getMemberId(),(e=e.getProperties()).fullName,e.color)}function f(e){var t=e.getMemberId(),n=i.getOdtDocument().getMember(t).getProperties();r.registerCursor(e,E,T),a.registerCursor(e,!0),(e=r.getCaret(t))&&(e.setAvatarImageUrl(n.imageUrl),e.setColor(n.color)),runtime.log("+++ View here +++ eagerly created an Caret for '"+t+"'! +++")}function p(e){e=e.getMemberId();var t=a.getSelectionView(n),i=a.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId),o=r.getCaret(n);e===n?(i.hide(),t&&t.show(),o&&o.show()):e===gui.ShadowCursor.ShadowCursorMemberId&&(i.show(),t&&t.hide(),o&&o.hide())}function h(e){a.removeSelectionView(e)}function m(e){var t=e.paragraphElement,n=e.memberId;e=e.timeStamp;var o,r="",a=t.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0);a?(r=a.getAttributeNS("urn:webodf:names:editinfo","id"),o=x[r]):(r=Math.random().toString(),o=new ops.EditInfo(t,i.getOdtDocument()),o=new gui.EditInfoMarker(o,w),(a=t.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0)).setAttributeNS("urn:webodf:names:editinfo","id",r),x[r]=o),o.addEdit(n,new Date(e)),N.trigger()}function g(){var e;v.hasChildNodes()&&core.DomUtils.removeAllChildNodes(v),!0===o.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)&&(e=i.getOdtDocument().getMember(n))&&(e=e.getProperties().fullName,v.appendChild(document.createTextNode(".annotationWrapper:not([creator = '"+e+"']) .annotationRemoveButton { display: none; }")))}function b(e){var t=Object.keys(x).map((function(e){return x[e]}));S.unsubscribe(ops.Document.signalMemberAdded,c),S.unsubscribe(ops.Document.signalMemberUpdated,c),S.unsubscribe(ops.Document.signalCursorAdded,f),S.unsubscribe(ops.Document.signalCursorRemoved,h),S.unsubscribe(ops.OdtDocument.signalParagraphChanged,m),S.unsubscribe(ops.Document.signalCursorMoved,p),S.unsubscribe(ops.OdtDocument.signalParagraphChanged,a.rerenderSelectionViews),S.unsubscribe(ops.OdtDocument.signalTableAdded,a.rerenderSelectionViews),S.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,a.rerenderSelectionViews),o.unsubscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN,g),S.unsubscribe(ops.Document.signalMemberAdded,g),S.unsubscribe(ops.Document.signalMemberUpdated,g),y.parentNode.removeChild(y),v.parentNode.removeChild(v),function n(i,o){o?e(o):it.length;return n&&e(t),n}function n(e,t){var n=[];return e&&["style:parent-style-name","style:next-style-name"].forEach((function(i){e[i]===t&&n.push(i)})),n}function i(e,t){e&&["style:parent-style-name","style:next-style-name"].forEach((function(n){e[n]===t&&delete e[n]}))}function o(e){var t={};return Object.keys(e).forEach((function(n){t[n]="object"==typeof e[n]?o(e[n]):e[n]})),t}function r(e,t,n,i){var o,r,a=!1,s=!1,l=[];if(i&&i.attributes&&(l=i.attributes.split(",")),e&&(n||0=e.length?0:e.length-n.length)):void 0!==e.length&&(o<=(n=e.position+e.length)?e.length-=t.length:i=t.position+t.length||(i=n?e:t,r=n?t:e,e.position===t.position&&e.length===t.length||(c=o(i),f=o(r)),((t=l(r.setProperties,null,i.setProperties,null,"style:text-properties")).majorChanged||t.minorChanged)&&(s=[],e=[],u=i.position+i.length,d=r.position+r.length,r.positionu?t.minorChanged&&((c=f).position=u,c.length=d-u,e.push(c),r.length=u-r.position):u>d&&t.majorChanged&&(c.position=d,c.length=u-d,s.push(c),i.length=d-i.position),i.setProperties&&a(i.setProperties)&&s.push(i),r.setProperties&&a(r.setProperties)&&e.push(r),n?(u=s,s=e):u=e)),{opSpecsA:u,opSpecsB:s}},InsertText:function(e,t){return t.position<=e.position?e.position+=t.text.length:t.position<=e.position+e.length&&(e.length+=t.text.length),{opSpecsA:[e],opSpecsB:[t]}},MergeParagraph:function(e,t){var n=e.position,i=e.position+e.length;return n>=t.sourceStartPosition&&--n,i>=t.sourceStartPosition&&--i,e.position=n,e.length=i-n,{opSpecsA:[e],opSpecsB:[t]}},MoveCursor:u,RemoveAnnotation:function(e,t){var n=e.position,i=e.position+e.length,o=t.position+t.length,r=[e],a=[t];return t.position<=n&&i<=o?r=[]:(ot.position?e.position+=t.text.length:n?t.position+=e.text.length:e.position+=t.text.length,{opSpecsA:[e],opSpecsB:[t]}},MergeParagraph:function(e,t){return e.position>=t.sourceStartPosition?--e.position:(e.positione.position&&(t.position+=e.text.length),{opSpecsA:[e],opSpecsB:[t]}},SplitParagraph:function(e,t){return e.position=e.sourceStartPosition&&--o,n>=e.sourceStartPosition&&--n,0<=t.length?(t.position=o,t.length=n-o):(t.position=n,t.length=o-n),{opSpecsA:[e],opSpecsB:[t]}},RemoveAnnotation:function(e,t){var n=t.position+t.length,i=[e],o=[t];return t.position<=e.destinationStartPosition&&e.sourceStartPosition<=n?(i=[],--t.length):e.sourceStartPosition=e.sourceStartPosition?--t.position:(t.positione.sourceStartPosition?--t.position:t.position!==e.destinationStartPosition&&t.position!==e.sourceStartPosition||(t.position=e.destinationStartPosition,e.paragraphStyleName=t.styleName),{opSpecsA:n,opSpecsB:i}},SplitParagraph:function(e,t){var n,i=[e],o=[t];return t.position=e.destinationStartPosition&&t.position=e.sourceStartPosition&&(--t.position,--t.sourceParagraphPosition),{opSpecsA:i,opSpecsB:o}},UpdateMember:u,UpdateMetadata:u,UpdateParagraphStyle:u},MoveCursor:{MoveCursor:u,RemoveAnnotation:function(n,i){var o=t(n),r=n.position+n.length,a=i.position+i.length;return i.position<=n.position&&r<=a?(n.position=i.position-1,n.length=0):(at.position?e.position+=1:e.position===t.sourceParagraphPosition&&(t.paragraphStyleName=e.styleName,(n=o(e)).position=t.position+1,i.push(n)),{opSpecsA:i,opSpecsB:r}},UpdateMember:u,UpdateMetadata:u,UpdateParagraphStyle:u},SplitParagraph:{SplitParagraph:function(e,t,n){var i,o;return e.position>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>> -6;enc4=chr3&63;if(isNaN(chr2))enc3=enc4=64;else if(isNaN(chr3))enc4=64;output=output+_keyStr.charAt(enc1)+_keyStr.charAt(enc2)+_keyStr.charAt(enc3)+_keyStr.charAt(enc4)}return output};exports.decode=function(input,utf8){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64)output=output+String.fromCharCode(chr2);if(enc4!=64)output=output+String.fromCharCode(chr3)}return output}},{}],2:[function(_dereq_,module,exports){function CompressedObject(){this.compressedSize=0;this.uncompressedSize=0;this.crc32=0;this.compressionMethod=null;this.compressedContent=null}CompressedObject.prototype={getContent:function(){return null},getCompressedContent:function(){return null}}; -module.exports=CompressedObject},{}],3:[function(_dereq_,module,exports){exports.STORE={magic:"\x00\x00",compress:function(content){return content},uncompress:function(content){return content},compressInputType:null,uncompressInputType:null};exports.DEFLATE=_dereq_("./flate")},{"./flate":8}],4:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var table=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021, -3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527, -1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856, -1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626, -1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692, -2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614, -3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];module.exports=function crc32(input,crc){if(typeof input==="undefined"||!input.length)return 0;var isArray=utils.getTypeOf(input)!=="string";if(typeof crc=="undefined")crc=0;var x=0;var y=0;var b=0;crc=crc^-1;for(var i=0,iTop=input.length;i>>8^x}return crc^-1}},{"./utils":21}],5:[function(_dereq_,module,exports){var utils=_dereq_("./utils"); -function DataReader(data){this.data=null;this.length=0;this.index=0}DataReader.prototype={checkOffset:function(offset){this.checkIndex(this.index+offset)},checkIndex:function(newIndex){if(this.length=this.index;i--)result=(result<<8)+this.byteAt(i);this.index+=size;return result},readString:function(size){return utils.transformTo("string",this.readData(size))},readData:function(size){},lastIndexOfSignature:function(sig){},readDate:function(){var dostime=this.readInt(4);return new Date((dostime>>25&127)+1980,(dostime>>21&15)-1,dostime>>16&31,dostime>>11&31,dostime>>5&63,(dostime&31)<<1)}};module.exports=DataReader},{"./utils":21}],6:[function(_dereq_, -module,exports){exports.base64=false;exports.binary=false;exports.dir=false;exports.createFolders=false;exports.date=null;exports.compression=null;exports.comment=null},{}],7:[function(_dereq_,module,exports){var utils=_dereq_("./utils");exports.string2binary=function(str){return utils.string2binary(str)};exports.string2Uint8Array=function(str){return utils.transformTo("uint8array",str)};exports.uint8Array2String=function(array){return utils.transformTo("string",array)};exports.string2Blob=function(str){var buffer= -utils.transformTo("arraybuffer",str);return utils.arrayBuffer2Blob(buffer)};exports.arrayBuffer2Blob=function(buffer){return utils.arrayBuffer2Blob(buffer)};exports.transformTo=function(outputType,input){return utils.transformTo(outputType,input)};exports.getTypeOf=function(input){return utils.getTypeOf(input)};exports.checkSupport=function(type){return utils.checkSupport(type)};exports.MAX_VALUE_16BITS=utils.MAX_VALUE_16BITS;exports.MAX_VALUE_32BITS=utils.MAX_VALUE_32BITS;exports.pretty=function(str){return utils.pretty(str)}; -exports.findCompression=function(compressionMethod){return utils.findCompression(compressionMethod)};exports.isRegExp=function(object){return utils.isRegExp(object)}},{"./utils":21}],8:[function(_dereq_,module,exports){var USE_TYPEDARRAY=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined";var pako=_dereq_("pako");exports.uncompressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.compressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.magic= -"\b\x00";exports.compress=function(input){return pako.deflateRaw(input)};exports.uncompress=function(input){return pako.inflateRaw(input)}},{"pako":24}],9:[function(_dereq_,module,exports){var base64=_dereq_("./base64");function JSZip(data,options){if(!(this instanceof JSZip))return new JSZip(data,options);this.files={};this.comment=null;this.root="";if(data)this.load(data,options);this.clone=function(){var newObj=new JSZip;for(var i in this)if(typeof this[i]!=="function")newObj[i]=this[i];return newObj}} -JSZip.prototype=_dereq_("./object");JSZip.prototype.load=_dereq_("./load");JSZip.support=_dereq_("./support");JSZip.defaults=_dereq_("./defaults");JSZip.utils=_dereq_("./deprecatedPublicUtils");JSZip.base64={encode:function(input){return base64.encode(input)},decode:function(input){return base64.decode(input)}};JSZip.compressions=_dereq_("./compressions");module.exports=JSZip},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_, -module,exports){var base64=_dereq_("./base64");var ZipEntries=_dereq_("./zipEntries");module.exports=function(data,options){var files,zipEntries,i,input;options=options||{};if(options.base64)data=base64.decode(data);zipEntries=new ZipEntries(data,options);files=zipEntries.files;for(i=0;i>>8}return hex};var extend=function(){var result={},i,attr;for(i=0;i0?path.substring(0,lastSlash):""};var folderAdd=function(name,createFolders){if(name.slice(-1)!="/")name+="/";createFolders=typeof createFolders!=="undefined"?createFolders:false;if(!this.files[name])fileAdd.call(this,name,null,{dir:true,createFolders:createFolders});return this.files[name]};var generateCompressedObjectFrom=function(file,compression){var result=new CompressedObject,content;if(file._data instanceof -CompressedObject){result.uncompressedSize=file._data.uncompressedSize;result.crc32=file._data.crc32;if(result.uncompressedSize===0||file.dir){compression=compressions["STORE"];result.compressedContent="";result.crc32=0}else if(file._data.compressionMethod===compression.magic)result.compressedContent=file._data.getCompressedContent();else{content=file._data.getContent();result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}}else{content=getBinaryData(file); -if(!content||content.length===0||file.dir){compression=compressions["STORE"];content=""}result.uncompressedSize=content.length;result.crc32=crc32(content);result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}result.compressedSize=result.compressedContent.length;result.compressionMethod=compression.magic;return result};var generateZipParts=function(name,file,compressedObject,offset){var data=compressedObject.compressedContent,utfEncodedFileName=utils.transformTo("string", -utf8.utf8encode(file.name)),comment=file.comment||"",utfEncodedComment=utils.transformTo("string",utf8.utf8encode(comment)),useUTF8ForFileName=utfEncodedFileName.length!==file.name.length,useUTF8ForComment=utfEncodedComment.length!==comment.length,o=file.options,dosTime,dosDate,extraFields="",unicodePathExtraField="",unicodeCommentExtraField="",dir,date;if(file._initialMetadata.dir!==file.dir)dir=file.dir;else dir=o.dir;if(file._initialMetadata.date!==file.date)date=file.date;else date=o.date;dosTime= -date.getHours();dosTime=dosTime<<6;dosTime=dosTime|date.getMinutes();dosTime=dosTime<<5;dosTime=dosTime|date.getSeconds()/2;dosDate=date.getFullYear()-1980;dosDate=dosDate<<4;dosDate=dosDate|date.getMonth()+1;dosDate=dosDate<<5;dosDate=dosDate|date.getDate();if(useUTF8ForFileName){unicodePathExtraField=decToHex(1,1)+decToHex(crc32(utfEncodedFileName),4)+utfEncodedFileName;extraFields+="up"+decToHex(unicodePathExtraField.length,2)+unicodePathExtraField}if(useUTF8ForComment){unicodeCommentExtraField= -decToHex(1,1)+decToHex(this.crc32(utfEncodedComment),4)+utfEncodedComment;extraFields+="uc"+decToHex(unicodeCommentExtraField.length,2)+unicodeCommentExtraField}var header="";header+="\n\x00";header+=useUTF8ForFileName||useUTF8ForComment?"\x00\b":"\x00\x00";header+=compressedObject.compressionMethod;header+=decToHex(dosTime,2);header+=decToHex(dosDate,2);header+=decToHex(compressedObject.crc32,4);header+=decToHex(compressedObject.compressedSize,4);header+=decToHex(compressedObject.uncompressedSize, -4);header+=decToHex(utfEncodedFileName.length,2);header+=decToHex(extraFields.length,2);var fileRecord=signature.LOCAL_FILE_HEADER+header+utfEncodedFileName+extraFields;var dirRecord=signature.CENTRAL_FILE_HEADER+"\u0014\x00"+header+decToHex(utfEncodedComment.length,2)+"\x00\x00"+"\x00\x00"+(dir===true?"\u0010\x00\x00\x00":"\x00\x00\x00\x00")+decToHex(offset,4)+utfEncodedFileName+extraFields+utfEncodedComment;return{fileRecord:fileRecord,dirRecord:dirRecord,compressedObject:compressedObject}};var out= -{load:function(stream,options){throw new Error("Load method is not defined. Is the file jszip-load.js included ?");},filter:function(search){var result=[],filename,relativePath,file,fileClone;for(filename in this.files){if(!this.files.hasOwnProperty(filename))continue;file=this.files[filename];fileClone=new ZipObject(file.name,file._data,extend(file.options));relativePath=filename.slice(this.root.length,filename.length);if(filename.slice(0,this.root.length)===this.root&&search(relativePath,fileClone))result.push(fileClone)}return result}, -file:function(name,data,o){if(arguments.length===1)if(utils.isRegExp(name)){var regexp=name;return this.filter(function(relativePath,file){return!file.dir&®exp.test(relativePath)})}else return this.filter(function(relativePath,file){return!file.dir&&relativePath===name})[0]||null;else{name=this.root+name;fileAdd.call(this,name,data,o)}return this},folder:function(arg){if(!arg)return this;if(utils.isRegExp(arg))return this.filter(function(relativePath,file){return file.dir&&arg.test(relativePath)}); -var name=this.root+arg;var newFolder=folderAdd.call(this,name);var ret=this.clone();ret.root=newFolder.name;return ret},remove:function(name){name=this.root+name;var file=this.files[name];if(!file){if(name.slice(-1)!="/")name+="/";file=this.files[name]}if(file&&!file.dir)delete this.files[name];else{var kids=this.filter(function(relativePath,file){return file.name.slice(0,name.length)===name});for(var i=0;i=0;--i)if(this.data[i]===sig0&&this.data[i+1]===sig1&&this.data[i+2]===sig2&&this.data[i+3]===sig3)return i;return-1};Uint8ArrayReader.prototype.readData=function(size){this.checkOffset(size);if(size===0)return new Uint8Array(0);var result=this.data.subarray(this.index, -this.index+size);this.index+=size;return result};module.exports=Uint8ArrayReader},{"./dataReader":5}],19:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var Uint8ArrayWriter=function(length){this.data=new Uint8Array(length);this.index=0};Uint8ArrayWriter.prototype={append:function(input){if(input.length!==0){input=utils.transformTo("uint8array",input);this.data.set(input,this.index);this.index+=input.length}},finalize:function(){return this.data}};module.exports=Uint8ArrayWriter},{"./utils":21}], -20:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var support=_dereq_("./support");var nodeBuffer=_dereq_("./nodeBuffer");var _utf8len=new Array(256);for(var i=0;i<256;i++)_utf8len[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;_utf8len[254]=_utf8len[254]=1;var string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]= -240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};var utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length)max=buf.length;pos=max-1;while(pos>=0&&(buf[pos]&192)===128)pos--;if(pos<0)return max;if(pos===0)return max;return pos+_utf8len[buf[pos]]>max?pos:max};var buf2string=function(buf){var str,i,out,c,c_len;var len=buf.length;var utf16buf=new Array(len*2);for(out=0,i=0;i4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i1){utf16buf[out++]=65533;continue}if(c<65536)utf16buf[out++]=c;else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}if(utf16buf.length!==out)if(utf16buf.subarray)utf16buf=utf16buf.subarray(0,out);else utf16buf.length=out;return utils.applyFromCharCode(utf16buf)};exports.utf8encode=function utf8encode(str){if(support.nodebuffer)return nodeBuffer(str, -"utf-8");return string2buf(str)};exports.utf8decode=function utf8decode(buf){if(support.nodebuffer)return utils.transformTo("nodebuffer",buf).toString("utf-8");buf=utils.transformTo(support.uint8array?"uint8array":"array",buf);var result=[],k=0,len=buf.length,chunk=65536;while(k1)try{if(type==="array"||type==="nodebuffer")result.push(String.fromCharCode.apply(null,array.slice(k,Math.min(k+chunk,len))));else result.push(String.fromCharCode.apply(null, -array.subarray(k,Math.min(k+chunk,len))));k+=chunk}catch(e){chunk=Math.floor(chunk/2)}return result.join("")}exports.applyFromCharCode=arrayLikeToString;function arrayLikeToArrayLike(arrayFrom,arrayTo){for(var i=0;i1)throw new Error("Multi-volumes zip are not supported");},readLocalFiles:function(){var i,file;for(i=0;i0)opt.windowBits=-opt.windowBits;else if(opt.gzip&&opt.windowBits>0&&opt.windowBits<16)opt.windowBits+=16;this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new zstream;this.strm.avail_out=0;var status=zlib_deflate.deflateInit2(this.strm,opt.level,opt.method,opt.windowBits,opt.memLevel,opt.strategy);if(status!==Z_OK)throw new Error(msg[status]); -if(opt.header)zlib_deflate.deflateSetHeader(this.strm,opt.header)};Deflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;if(this.ended)return false;_mode=mode===~~mode?mode:mode===true?Z_FINISH:Z_NO_FLUSH;if(typeof data==="string")strm.input=strings.string2buf(data);else strm.input=data;strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status= -zlib_deflate.deflate(strm,_mode);if(status!==Z_STREAM_END&&status!==Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.avail_out===0||strm.avail_in===0&&_mode===Z_FINISH)if(this.options.to==="string")this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output,strm.next_out)));else this.onData(utils.shrinkBuf(strm.output,strm.next_out))}while((strm.avail_in>0||strm.avail_out===0)&&status!==Z_STREAM_END);if(_mode===Z_FINISH){status=zlib_deflate.deflateEnd(this.strm);this.onEnd(status); -this.ended=true;return status===Z_OK}return true};Deflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Deflate.prototype.onEnd=function(status){if(status===Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=utils.flattenChunks(this.chunks);this.chunks=[];this.err=status;this.msg=this.strm.msg};function deflate(input,options){var deflator=new Deflate(options);deflator.push(input,true);if(deflator.err)throw deflator.msg;return deflator.result}function deflateRaw(input, -options){options=options||{};options.raw=true;return deflate(input,options)}function gzip(input,options){options=options||{};options.gzip=true;return deflate(input,options)}exports.Deflate=Deflate;exports.deflate=deflate;exports.deflateRaw=deflateRaw;exports.gzip=gzip},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){var zlib_inflate=_dereq_("./zlib/inflate.js");var utils=_dereq_("./utils/common");var strings= -_dereq_("./utils/strings");var c=_dereq_("./zlib/constants");var msg=_dereq_("./zlib/messages");var zstream=_dereq_("./zlib/zstream");var gzheader=_dereq_("./zlib/gzheader");var Inflate=function(options){this.options=utils.assign({chunkSize:16384,windowBits:0,to:""},options||{});var opt=this.options;if(opt.raw&&opt.windowBits>=0&&opt.windowBits<16){opt.windowBits=-opt.windowBits;if(opt.windowBits===0)opt.windowBits=-15}if(opt.windowBits>=0&&opt.windowBits<16&&!(options&&options.windowBits))opt.windowBits+= -32;if(opt.windowBits>15&&opt.windowBits<48)if((opt.windowBits&15)===0)opt.windowBits|=15;this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new zstream;this.strm.avail_out=0;var status=zlib_inflate.inflateInit2(this.strm,opt.windowBits);if(status!==c.Z_OK)throw new Error(msg[status]);this.header=new gzheader;zlib_inflate.inflateGetHeader(this.strm,this.header)};Inflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;var next_out_utf8, -tail,utf8str;if(this.ended)return false;_mode=mode===~~mode?mode:mode===true?c.Z_FINISH:c.Z_NO_FLUSH;if(typeof data==="string")strm.input=strings.binstring2buf(data);else strm.input=data;strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status=zlib_inflate.inflate(strm,c.Z_NO_FLUSH);if(status!==c.Z_STREAM_END&&status!==c.Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.next_out)if(strm.avail_out=== -0||status===c.Z_STREAM_END||strm.avail_in===0&&_mode===c.Z_FINISH)if(this.options.to==="string"){next_out_utf8=strings.utf8border(strm.output,strm.next_out);tail=strm.next_out-next_out_utf8;utf8str=strings.buf2string(strm.output,next_out_utf8);strm.next_out=tail;strm.avail_out=chunkSize-tail;if(tail)utils.arraySet(strm.output,strm.output,next_out_utf8,tail,0);this.onData(utf8str)}else this.onData(utils.shrinkBuf(strm.output,strm.next_out))}while(strm.avail_in>0&&status!==c.Z_STREAM_END);if(status=== -c.Z_STREAM_END)_mode=c.Z_FINISH;if(_mode===c.Z_FINISH){status=zlib_inflate.inflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===c.Z_OK}return true};Inflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Inflate.prototype.onEnd=function(status){if(status===c.Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=utils.flattenChunks(this.chunks);this.chunks=[];this.err=status;this.msg=this.strm.msg};function inflate(input,options){var inflator= -new Inflate(options);inflator.push(input,true);if(inflator.err)throw inflator.msg;return inflator.result}function inflateRaw(input,options){options=options||{};options.raw=true;return inflate(input,options)}exports.Inflate=Inflate;exports.inflate=inflate;exports.inflateRaw=inflateRaw;exports.ungzip=inflate},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){var TYPED_OK= -typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";exports.assign=function(obj){var sources=Array.prototype.slice.call(arguments,1);while(sources.length){var source=sources.shift();if(!source)continue;if(typeof source!=="object")throw new TypeError(source+"must be non-object");for(var p in source)if(source.hasOwnProperty(p))obj[p]=source[p]}return obj};exports.shrinkBuf=function(buf,size){if(buf.length===size)return buf;if(buf.subarray)return buf.subarray(0, -size);buf.length=size;return buf};var fnTyped={arraySet:function(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return}for(var i=0;i=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;_utf8len[254]=_utf8len[254]=1;exports.string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]= -128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};function buf2binstring(buf,len){if(len<65537)if(buf.subarray&&STR_APPLY_UIA_OK||!buf.subarray&&STR_APPLY_OK)return String.fromCharCode.apply(null,utils.shrinkBuf(buf,len));var result="";for(var i=0;i4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i1){utf16buf[out++]=65533;continue}if(c<65536)utf16buf[out++]= -c;else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}return buf2binstring(utf16buf,out)};exports.utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length)max=buf.length;pos=max-1;while(pos>=0&&(buf[pos]&192)===128)pos--;if(pos<0)return max;if(pos===0)return max;return pos+_utf8len[buf[pos]]>max?pos:max}},{"./common":27}],29:[function(_dereq_,module,exports){function adler32(adler,buf,len,pos){var s1=adler&65535|0,s2=adler>>>16&65535|0,n=0;while(len!==0){n= -len>2E3?2E3:len;len-=n;do{s1=s1+buf[pos++]|0;s2=s2+s1|0}while(--n);s1%=65521;s2%=65521}return s1|s2<<16|0}module.exports=adler32},{}],30:[function(_dereq_,module,exports){module.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4, -Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(_dereq_,module,exports){function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++)c=c&1?3988292384^c>>>1:c>>>1;table[n]=c}return table}var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc=crc^-1;for(var i=pos;i>>8^t[(crc^buf[i])&255];return crc^-1}module.exports=crc32},{}],32:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common"); -var trees=_dereq_("./trees");var adler32=_dereq_("./adler32");var crc32=_dereq_("./crc32");var msg=_dereq_("./messages");var Z_NO_FLUSH=0;var Z_PARTIAL_FLUSH=1;var Z_FULL_FLUSH=3;var Z_FINISH=4;var Z_BLOCK=5;var Z_OK=0;var Z_STREAM_END=1;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_BUF_ERROR=-5;var Z_DEFAULT_COMPRESSION=-1;var Z_FILTERED=1;var Z_HUFFMAN_ONLY=2;var Z_RLE=3;var Z_FIXED=4;var Z_DEFAULT_STRATEGY=0;var Z_UNKNOWN=2;var Z_DEFLATED=8;var MAX_MEM_LEVEL=9;var MAX_WBITS=15;var DEF_MEM_LEVEL= -8;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=32;var INIT_STATE=42;var EXTRA_STATE=69;var NAME_STATE=73;var COMMENT_STATE=91;var HCRC_STATE=103;var BUSY_STATE=113;var FINISH_STATE=666;var BS_NEED_MORE=1;var BS_BLOCK_DONE=2;var BS_FINISH_STARTED=3;var BS_FINISH_DONE=4;var OS_CODE=3;function err(strm,errorCode){strm.msg= -msg[errorCode];return errorCode}function rank(f){return(f<<1)-(f>4?9:0)}function zero(buf){var len=buf.length;while(--len>=0)buf[len]=0}function flush_pending(strm){var s=strm.state;var len=s.pending;if(len>strm.avail_out)len=strm.avail_out;if(len===0)return;utils.arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out);strm.next_out+=len;s.pending_out+=len;strm.total_out+=len;strm.avail_out-=len;s.pending-=len;if(s.pending===0)s.pending_out=0}function flush_block_only(s,last){trees._tr_flush_block(s, -s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last);s.block_start=s.strstart;flush_pending(s.strm)}function put_byte(s,b){s.pending_buf[s.pending++]=b}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255;s.pending_buf[s.pending++]=b&255}function read_buf(strm,buf,start,size){var len=strm.avail_in;if(len>size)len=size;if(len===0)return 0;strm.avail_in-=len;utils.arraySet(buf,strm.input,strm.next_in,len,start);if(strm.state.wrap===1)strm.adler=adler32(strm.adler,buf,len,start); -else if(strm.state.wrap===2)strm.adler=crc32(strm.adler,buf,len,start);strm.next_in+=len;strm.total_in+=len;return len}function longest_match(s,cur_match){var chain_length=s.max_chain_length;var scan=s.strstart;var match;var len;var best_len=s.prev_length;var nice_match=s.nice_match;var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0;var _win=s.window;var wmask=s.w_mask;var prev=s.prev;var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+ -best_len];if(s.prev_length>=s.good_match)chain_length>>=2;if(nice_match>s.lookahead)nice_match=s.lookahead;do{match=cur_match;if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1])continue;scan+=2;match++;do;while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]=== -_win[++match]&&scanbest_len){s.match_start=cur_match;best_len=len;if(len>=nice_match)break;scan_end1=_win[scan+best_len-1];scan_end=_win[scan+best_len]}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);if(best_len<=s.lookahead)return best_len;return s.lookahead}function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;do{more=s.window_size-s.lookahead-s.strstart;if(s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){utils.arraySet(s.window, -s.window,_w_size,_w_size,0);s.match_start-=_w_size;s.strstart-=_w_size;s.block_start-=_w_size;n=s.hash_size;p=n;do{m=s.head[--p];s.head[p]=m>=_w_size?m-_w_size:0}while(--n);n=_w_size;p=n;do{m=s.prev[--p];s.prev[p]=m>=_w_size?m-_w_size:0}while(--n);more+=_w_size}if(s.strm.avail_in===0)break;n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];s.ins_h=(s.ins_h<s.pending_buf_size-5)max_block_size=s.pending_buf_size-5;for(;;){if(s.lookahead<=1){fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead=== -0)break}s.strstart+=s.lookahead;s.lookahead=0;var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){s.lookahead=s.strstart-max_start;s.strstart=max_start;flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0)return BS_FINISH_STARTED;return BS_FINISH_DONE}if(s.strstart> -s.block_start){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_NEED_MORE}function deflate_fast(s,flush){var hash_head;var bflush;for(;;){if(s.lookahead=MIN_MATCH){s.ins_h=(s.ins_h<=MIN_MATCH){bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;if(s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do{s.strstart++;s.ins_h=(s.ins_h<=MIN_MATCH){s.ins_h=(s.ins_h<4096))s.match_length=MIN_MATCH-1}if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length- -MIN_MATCH);s.lookahead-=s.prev_length-1;s.prev_length-=2;do if(++s.strstart<=max_insert){s.ins_h=(s.ins_h<=MIN_MATCH&&s.strstart>0){scan=s.strstart-1;prev=_win[scan];if(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]){strend=s.strstart+MAX_MATCH;do;while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&& -prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scans.lookahead)s.match_length=s.lookahead}}if(s.match_length>=MIN_MATCH){bflush=trees._tr_tally(s,1,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;s.strstart+=s.match_length;s.match_length=0}else{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert= -0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0)return BS_FINISH_STARTED;return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}function deflate_huff(s,flush){var bflush;for(;;){if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH)return BS_NEED_MORE;break}}s.match_length=0;bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){flush_block_only(s, -false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0)return BS_FINISH_STARTED;return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}var Config=function(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length;this.max_lazy=max_lazy;this.nice_length=nice_length;this.max_chain=max_chain;this.func=func};var configuration_table; -configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size;zero(s.head);s.max_lazy_match=configuration_table[s.level].max_lazy; -s.good_match=configuration_table[s.level].good_length;s.nice_match=configuration_table[s.level].nice_length;s.max_chain_length=configuration_table[s.level].max_chain;s.strstart=0;s.block_start=0;s.lookahead=0;s.insert=0;s.match_length=s.prev_length=MIN_MATCH-1;s.match_available=0;s.ins_h=0}function DeflateState(){this.strm=null;this.status=0;this.pending_buf=null;this.pending_buf_size=0;this.pending_out=0;this.pending=0;this.wrap=0;this.gzhead=null;this.gzindex=0;this.method=Z_DEFLATED;this.last_flush= --1;this.w_size=0;this.w_bits=0;this.w_mask=0;this.window=null;this.window_size=0;this.prev=null;this.head=null;this.ins_h=0;this.hash_size=0;this.hash_bits=0;this.hash_mask=0;this.hash_shift=0;this.block_start=0;this.match_length=0;this.prev_match=0;this.match_available=0;this.strstart=0;this.match_start=0;this.lookahead=0;this.prev_length=0;this.max_chain_length=0;this.max_lazy_match=0;this.level=0;this.strategy=0;this.good_match=0;this.nice_match=0;this.dyn_ltree=new utils.Buf16(HEAP_SIZE*2);this.dyn_dtree= -new utils.Buf16((2*D_CODES+1)*2);this.bl_tree=new utils.Buf16((2*BL_CODES+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new utils.Buf16(MAX_BITS+1);this.heap=new utils.Buf16(2*L_CODES+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new utils.Buf16(2*L_CODES+1);zero(this.depth);this.l_buf=0;this.lit_bufsize=0;this.last_lit=0;this.d_buf=0;this.opt_len=0;this.static_len=0;this.matches=0;this.insert=0; -this.bi_buf=0;this.bi_valid=0}function deflateResetKeep(strm){var s;if(!strm||!strm.state)return err(strm,Z_STREAM_ERROR);strm.total_in=strm.total_out=0;strm.data_type=Z_UNKNOWN;s=strm.state;s.pending=0;s.pending_out=0;if(s.wrap<0)s.wrap=-s.wrap;s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0:1;s.last_flush=Z_NO_FLUSH;trees._tr_init(s);return Z_OK}function deflateReset(strm){var ret=deflateResetKeep(strm);if(ret===Z_OK)lm_init(strm.state);return ret}function deflateSetHeader(strm,head){if(!strm|| -!strm.state)return Z_STREAM_ERROR;if(strm.state.wrap!==2)return Z_STREAM_ERROR;strm.state.gzhead=head;return Z_OK}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm)return Z_STREAM_ERROR;var wrap=1;if(level===Z_DEFAULT_COMPRESSION)level=6;if(windowBits<0){wrap=0;windowBits=-windowBits}else if(windowBits>15){wrap=2;windowBits-=16}if(memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED)return err(strm, -Z_STREAM_ERROR);if(windowBits===8)windowBits=9;var s=new DeflateState;strm.state=s;s.strm=strm;s.wrap=wrap;s.gzhead=null;s.w_bits=windowBits;s.w_size=1<>1;s.l_buf=(1+2)*s.lit_bufsize;s.level=level;s.strategy=strategy;s.method=method;return deflateReset(strm)}function deflateInit(strm,level){return deflateInit2(strm,level,Z_DEFLATED,MAX_WBITS,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY)}function deflate(strm,flush){var old_flush,s;var beg,val;if(!strm||!strm.state||flush>Z_BLOCK||flush<0)return strm?err(strm,Z_STREAM_ERROR):Z_STREAM_ERROR;s=strm.state;if(!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH)return err(strm, -strm.avail_out===0?Z_BUF_ERROR:Z_STREAM_ERROR);s.strm=strm;old_flush=s.last_flush;s.last_flush=flush;if(s.status===INIT_STATE)if(s.wrap===2){strm.adler=0;put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,OS_CODE);s.status=BUSY_STATE}else{put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(!s.gzhead.extra?0:4)+(!s.gzhead.name?0:8)+(!s.gzhead.comment? -0:16));put_byte(s,s.gzhead.time&255);put_byte(s,s.gzhead.time>>8&255);put_byte(s,s.gzhead.time>>16&255);put_byte(s,s.gzhead.time>>24&255);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,s.gzhead.os&255);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&255);put_byte(s,s.gzhead.extra.length>>8&255)}if(s.gzhead.hcrc)strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0);s.gzindex=0;s.status=EXTRA_STATE}}else{var header=Z_DEFLATED+(s.w_bits-8<< -4)<<8;var level_flags=-1;if(s.strategy>=Z_HUFFMAN_ONLY||s.level<2)level_flags=0;else if(s.level<6)level_flags=1;else if(s.level===6)level_flags=2;else level_flags=3;header|=level_flags<<6;if(s.strstart!==0)header|=PRESET_DICT;header+=31-header%31;s.status=BUSY_STATE;putShortMSB(s,header);if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}strm.adler=1}if(s.status===EXTRA_STATE)if(s.gzhead.extra){beg=s.pending;while(s.gzindex<(s.gzhead.extra.length&65535)){if(s.pending=== -s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size)break}put_byte(s,s.gzhead.extra[s.gzindex]&255);s.gzindex++}if(s.gzhead.hcrc&&s.pending>beg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);if(s.gzindex===s.gzhead.extra.length){s.gzindex=0;s.status=NAME_STATE}}else s.status=NAME_STATE;if(s.status===NAME_STATE)if(s.gzhead.name){beg=s.pending;do{if(s.pending=== -s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);if(val===0){s.gzindex=0;s.status=COMMENT_STATE}}else s.status=COMMENT_STATE;if(s.status===COMMENT_STATE)if(s.gzhead.comment){beg= -s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg)strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);if(val===0)s.status=HCRC_STATE}else s.status=HCRC_STATE;if(s.status=== -HCRC_STATE)if(s.gzhead.hcrc){if(s.pending+2>s.pending_buf_size)flush_pending(strm);if(s.pending+2<=s.pending_buf_size){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);strm.adler=0;s.status=BUSY_STATE}}else s.status=BUSY_STATE;if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH)return err(strm,Z_BUF_ERROR);if(s.status===FINISH_STATE&&strm.avail_in!==0)return err(strm,Z_BUF_ERROR); -if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY?deflate_huff(s,flush):s.strategy===Z_RLE?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if(bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE)s.status=FINISH_STATE;if(bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED){if(strm.avail_out===0)s.last_flush=-1;return Z_OK}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH)trees._tr_align(s);else if(flush!==Z_BLOCK){trees._tr_stored_block(s, -0,0,false);if(flush===Z_FULL_FLUSH){zero(s.head);if(s.lookahead===0){s.strstart=0;s.block_start=0;s.insert=0}}}flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}}if(flush!==Z_FINISH)return Z_OK;if(s.wrap<=0)return Z_STREAM_END;if(s.wrap===2){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);put_byte(s,strm.adler>>16&255);put_byte(s,strm.adler>>24&255);put_byte(s,strm.total_in&255);put_byte(s,strm.total_in>>8&255);put_byte(s,strm.total_in>>16&255);put_byte(s,strm.total_in>> -24&255)}else{putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}flush_pending(strm);if(s.wrap>0)s.wrap=-s.wrap;return s.pending!==0?Z_OK:Z_STREAM_END}function deflateEnd(strm){var status;if(!strm||!strm.state)return Z_STREAM_ERROR;status=strm.state.status;if(status!==INIT_STATE&&status!==EXTRA_STATE&&status!==NAME_STATE&&status!==COMMENT_STATE&&status!==HCRC_STATE&&status!==BUSY_STATE&&status!==FINISH_STATE)return err(strm,Z_STREAM_ERROR);strm.state=null;return status===BUSY_STATE?err(strm, -Z_DATA_ERROR):Z_OK}exports.deflateInit=deflateInit;exports.deflateInit2=deflateInit2;exports.deflateReset=deflateReset;exports.deflateResetKeep=deflateResetKeep;exports.deflateSetHeader=deflateSetHeader;exports.deflate=deflate;exports.deflateEnd=deflateEnd;exports.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){function GZheader(){this.text=0;this.time=0;this.xflags=0;this.os=0; -this.extra=null;this.extra_len=0;this.name="";this.comment="";this.hcrc=0;this.done=false}module.exports=GZheader},{}],34:[function(_dereq_,module,exports){var BAD=30;var TYPE=12;module.exports=function inflate_fast(strm,start){var state;var _in;var last;var _out;var beg;var end;var dmax;var wsize;var whave;var wnext;var window;var hold;var bits;var lcode;var dcode;var lmask;var dmask;var here;var op;var len;var dist;var from;var from_source;var input,output;state=strm.state;_in=strm.next_in;input= -strm.input;last=_in+(strm.avail_in-5);_out=strm.next_out;output=strm.output;beg=_out-(start-strm.avail_out);end=_out+(strm.avail_out-257);dmax=state.dmax;wsize=state.wsize;whave=state.whave;wnext=state.wnext;window=state.window;hold=state.hold;bits=state.bits;lcode=state.lencode;dcode=state.distcode;lmask=(1<>>24;hold>>>=op; -bits-=op;op=here>>>16&255;if(op===0)output[_out++]=here&65535;else if(op&16){len=here&65535;op&=15;if(op){if(bits>>=op;bits-=op}if(bits<15){hold+=input[_in++]<>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op&16){dist=here&65535;op&=15;if(bitsdmax){strm.msg="invalid distance too far back";state.mode=BAD;break top}hold>>>=op;bits-=op;op=_out-beg;if(dist>op){op=dist-op;if(op>whave)if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break top}from=0;from_source=window;if(wnext===0){from+=wsize-op;if(op2){output[_out++]=from_source[from++];output[_out++]=from_source[from++];output[_out++]=from_source[from++];len-=3}if(len){output[_out++]=from_source[from++];if(len>1)output[_out++]=from_source[from++]}}else{from=_out-dist;do{output[_out++]=output[from++];output[_out++]= -output[from++];output[_out++]=output[from++];len-=3}while(len>2);if(len){output[_out++]=output[from++];if(len>1)output[_out++]=output[from++]}}}else if((op&64)===0){here=dcode[(here&65535)+(hold&(1<>3;_in-=len;bits-=len<<3;hold&=(1<>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset= -0;this.extra=0;this.lencode=null;this.distcode=null;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=null;this.lens=new utils.Buf16(320);this.work=new utils.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(strm){var state;if(!strm||!strm.state)return Z_STREAM_ERROR;state=strm.state;strm.total_in=strm.total_out=state.total=0;strm.msg="";if(state.wrap)strm.adler=state.wrap&1;state.mode=HEAD;state.last= -0;state.havedict=0;state.dmax=32768;state.head=null;state.hold=0;state.bits=0;state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;return Z_OK}function inflateReset(strm){var state;if(!strm||!strm.state)return Z_STREAM_ERROR;state=strm.state;state.wsize=0;state.whave=0;state.wnext=0;return inflateResetKeep(strm)}function inflateReset2(strm,windowBits){var wrap;var state;if(!strm||!strm.state)return Z_STREAM_ERROR; -state=strm.state;if(windowBits<0){wrap=0;windowBits=-windowBits}else{wrap=(windowBits>>4)+1;if(windowBits<48)windowBits&=15}if(windowBits&&(windowBits<8||windowBits>15))return Z_STREAM_ERROR;if(state.window!==null&&state.wbits!==windowBits)state.window=null;state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm)}function inflateInit2(strm,windowBits){var ret;var state;if(!strm)return Z_STREAM_ERROR;state=new InflateState;strm.state=state;state.window=null;ret=inflateReset2(strm,windowBits); -if(ret!==Z_OK)strm.state=null;return ret}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=true;var lenfix,distfix;function fixedtables(state){if(virgin){var sym;lenfix=new utils.Buf32(512);distfix=new utils.Buf32(32);sym=0;while(sym<144)state.lens[sym++]=8;while(sym<256)state.lens[sym++]=9;while(sym<280)state.lens[sym++]=7;while(sym<288)state.lens[sym++]=8;inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9});sym=0;while(sym<32)state.lens[sym++]=5;inflate_table(DISTS, -state.lens,0,32,distfix,0,state.work,{bits:5});virgin=false}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5}function updatewindow(strm,src,end,copy){var dist;var state=strm.state;if(state.window===null){state.wsize=1<=state.wsize){utils.arraySet(state.window,src,end-state.wsize,state.wsize,0);state.wnext=0;state.whave=state.wsize}else{dist=state.wsize-state.wnext;if(dist>copy)dist= -copy;utils.arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(copy){utils.arraySet(state.window,src,end-copy,copy,0);state.wnext=copy;state.whave=state.wsize}else{state.wnext+=dist;if(state.wnext===state.wsize)state.wnext=0;if(state.whave>>8&255;state.check=crc32(state.check,hbuf,2,0);hold=0;bits=0;state.mode=FLAGS;break}state.flags=0;if(state.head)state.head.done=false;if(!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check";state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode= -BAD;break}hold>>>=4;bits-=4;len=(hold&15)+8;if(state.wbits===0)state.wbits=len;else if(len>state.wbits){strm.msg="invalid window size";state.mode=BAD;break}state.dmax=1<>8&1;if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=TIME;case TIME:while(bits<32){if(have===0)break inf_leave;have--;hold+=input[next++]<>>8&255;hbuf[2]=hold>>>16&255;hbuf[3]=hold>>>24&255;state.check=crc32(state.check,hbuf,4,0)}hold=0;bits=0;state.mode=OS;case OS:while(bits< -16){if(have===0)break inf_leave;have--;hold+=input[next++]<>8}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=EXLEN;case EXLEN:if(state.flags&1024){while(bits<16){if(have===0)break inf_leave;have--;hold+=input[next++]<>>8&255;state.check= -crc32(state.check,hbuf,2,0)}hold=0;bits=0}else if(state.head)state.head.extra=null;state.mode=EXTRA;case EXTRA:if(state.flags&1024){copy=state.length;if(copy>have)copy=have;if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra)state.head.extra=new Array(state.head.extra_len);utils.arraySet(state.head.extra,input,next,copy,len)}if(state.flags&512)state.check=crc32(state.check,input,copy,next);have-=copy;next+=copy;state.length-=copy}if(state.length)break inf_leave}state.length= -0;state.mode=NAME;case NAME:if(state.flags&2048){if(have===0)break inf_leave;copy=0;do{len=input[next+copy++];if(state.head&&len&&state.length<65536)state.head.name+=String.fromCharCode(len)}while(len&©>9&1;state.head.done=true}strm.adler=state.check=0;state.mode=TYPE;break;case DICTID:while(bits<32){if(have===0)break inf_leave;have--;hold+=input[next++]<>>=bits&7;bits-=bits&7;state.mode=CHECK;break}while(bits<3){if(have===0)break inf_leave;have--;hold+=input[next++]<>>=1;bits-=1;switch(hold&3){case 0:state.mode=STORED;break;case 1:fixedtables(state);state.mode=LEN_;if(flush===Z_TREES){hold>>>=2;bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type";state.mode=BAD}hold>>>=2;bits-=2;break;case STORED:hold>>>=bits&7;bits-=bits&7;while(bits< -32){if(have===0)break inf_leave;have--;hold+=input[next++]<>>16^65535)){strm.msg="invalid stored block lengths";state.mode=BAD;break}state.length=hold&65535;hold=0;bits=0;state.mode=COPY_;if(flush===Z_TREES)break inf_leave;case COPY_:state.mode=COPY;case COPY:copy=state.length;if(copy){if(copy>have)copy=have;if(copy>left)copy=left;if(copy===0)break inf_leave;utils.arraySet(output,input,next,copy,put);have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy; -break}state.mode=TYPE;break;case TABLE:while(bits<14){if(have===0)break inf_leave;have--;hold+=input[next++]<>>=5;bits-=5;state.ndist=(hold&31)+1;hold>>>=5;bits-=5;state.ncode=(hold&15)+4;hold>>>=4;bits-=4;if(state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols";state.mode=BAD;break}state.have=0;state.mode=LENLENS;case LENLENS:while(state.have>>=3;bits-=3}while(state.have<19)state.lens[order[state.have++]]=0;state.lencode=state.lendyn;state.lenbits=7;opts={bits:state.lenbits};ret=inflate_table(CODES,state.lens,0,19,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid code lengths set";state.mode=BAD;break}state.have=0;state.mode=CODELENS;case CODELENS:while(state.have>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<>>=here_bits;bits-=here_bits;state.lens[state.have++]=here_val}else{if(here_val===16){n=here_bits+2;while(bits>>=here_bits;bits-=here_bits;if(state.have===0){strm.msg="invalid bit length repeat";state.mode=BAD;break}len=state.lens[state.have-1];copy=3+(hold& -3);hold>>>=2;bits-=2}else if(here_val===17){n=here_bits+3;while(bits>>=here_bits;bits-=here_bits;len=0;copy=3+(hold&7);hold>>>=3;bits-=3}else{n=here_bits+7;while(bits>>=here_bits;bits-=here_bits;len=0;copy=11+(hold&127);hold>>>=7;bits-=7}if(state.have+copy>state.nlen+state.ndist){strm.msg="invalid bit length repeat";state.mode=BAD;break}while(copy--)state.lens[state.have++]= -len}}if(state.mode===BAD)break;if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block";state.mode=BAD;break}state.lenbits=9;opts={bits:state.lenbits};ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid literal/lengths set";state.mode=BAD;break}state.distbits=6;state.distcode=state.distdyn;opts={bits:state.distbits};ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts); -state.distbits=opts.bits;if(ret){strm.msg="invalid distances set";state.mode=BAD;break}state.mode=LEN_;if(flush===Z_TREES)break inf_leave;case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){strm.next_out=put;strm.avail_out=left;strm.next_in=next;strm.avail_in=have;state.hold=hold;state.bits=bits;inflate_fast(strm,_out);put=strm.next_out;output=strm.output;left=strm.avail_out;next=strm.next_in;input=strm.input;have=strm.avail_in;hold=state.hold;bits=state.bits;if(state.mode===TYPE)state.back= --1;break}state.back=0;for(;;){here=state.lencode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits)break;if(have=== -0)break inf_leave;have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;state.length=here_val;if(here_op===0){state.mode=LIT;break}if(here_op&32){state.back=-1;state.mode=TYPE;break}if(here_op&64){strm.msg="invalid literal/length code";state.mode=BAD;break}state.extra=here_op&15;state.mode=LENEXT;case LENEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}state.was=state.length;state.mode=DIST;case DIST:for(;;){here=state.distcode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;if(here_op&64){strm.msg="invalid distance code";state.mode=BAD;break}state.offset=here_val;state.extra=here_op&15;state.mode=DISTEXT;case DISTEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back";state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0)break inf_leave;copy=_out-left;if(state.offset>copy){copy=state.offset-copy;if(copy>state.whave)if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break}if(copy>state.wnext){copy-=state.wnext; -from=state.wsize-copy}else from=state.wnext-copy;if(copy>state.length)copy=state.length;from_source=state.window}else{from_source=output;from=put-state.offset;copy=state.length}if(copy>left)copy=left;left-=copy;state.length-=copy;do output[put++]=from_source[from++];while(--copy);if(state.length===0)state.mode=LEN;break;case LIT:if(left===0)break inf_leave;output[put++]=state.length;left--;state.mode=LEN;break;case CHECK:if(state.wrap){while(bits<32){if(have===0)break inf_leave;have--;hold|=input[next++]<< -bits;bits+=8}_out-=left;strm.total_out+=_out;state.total+=_out;if(_out)strm.adler=state.check=state.flags?crc32(state.check,output,_out,put-_out):adler32(state.check,output,_out,put-_out);_out=left;if((state.flags?hold:ZSWAP32(hold))!==state.check){strm.msg="incorrect data check";state.mode=BAD;break}hold=0;bits=0}state.mode=LENGTH;case LENGTH:if(state.wrap&&state.flags){while(bits<32){if(have===0)break inf_leave;have--;hold+=input[next++]<=1;max--)if(count[max]!==0)break;if(root>max)root=max;if(max===0){table[table_index++]=1<<24|64<<16|0;table[table_index++]= -1<<24|64<<16|0;opts.bits=1;return 0}for(min=1;min0&&(type===CODES||max!==1))return-1;offs[1]=0;for(len=1;lenENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;var i=0;for(;;){i++;here_bits=len-drop;if(work[sym]end){here_op=extra[extra_index+work[sym]];here_val=base[base_index+work[sym]]}else{here_op=32+64;here_val=0}incr=1<>drop)+fill]= -here_bits<<24|here_op<<16|here_val|0}while(fill!==0);incr=1<>=1;if(incr!==0){huff&=incr-1;huff+=incr}else huff=0;sym++;if(--count[len]===0){if(len===max)break;len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){if(drop===0)drop=root;next+=min;curr=len-drop;left=1<ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;low=huff&mask;table[low]=root<< -24|curr<<16|next-table_index|0}}if(huff!==0)table[next+huff]=len-drop<<24|64<<16|0;opts.bits=root;return 0}},{"../utils/common":27}],37:[function(_dereq_,module,exports){module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common");var Z_FIXED=4;var Z_BINARY=0;var Z_TEXT=1;var Z_UNKNOWN=2;function zero(buf){var len= -buf.length;while(--len>=0)buf[len]=0}var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;var MIN_MATCH=3;var MAX_MATCH=258;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var Buf_size=16;var MAX_BL_BITS=7;var END_BLOCK=256;var REP_3_6=16;var REPZ_3_10=17;var REPZ_11_138=18;var extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7, -7,8,8,9,9,10,10,11,11,12,12,13,13];var extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var DIST_CODE_LEN=512;var static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES); -zero(base_dist);var StaticTreeDesc=function(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;this.extra_bits=extra_bits;this.extra_base=extra_base;this.elems=elems;this.max_length=max_length;this.has_stree=static_tree&&static_tree.length};var static_l_desc;var static_d_desc;var static_bl_desc;var TreeDesc=function(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;this.max_code=0;this.stat_desc=stat_desc};function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+ -(dist>>>7)]}function put_short(s,w){s.pending_buf[s.pending++]=w&255;s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<>Buf_size-s.bi_valid;s.bi_valid+=length-Buf_size}else{s.bi_buf|=value<>>=1;res<<=1}while(--len>0); -return res>>>1}function bi_flush(s){if(s.bi_valid===16){put_short(s,s.bi_buf);s.bi_buf=0;s.bi_valid=0}else if(s.bi_valid>=8){s.pending_buf[s.pending++]=s.bi_buf&255;s.bi_buf>>=8;s.bi_valid-=8}}function gen_bitlen(s,desc){var tree=desc.dyn_tree;var max_code=desc.max_code;var stree=desc.stat_desc.static_tree;var has_stree=desc.stat_desc.has_stree;var extra=desc.stat_desc.extra_bits;var base=desc.stat_desc.extra_base;var max_length=desc.stat_desc.max_length;var h;var n,m;var bits;var xbits;var f;var overflow= -0;for(bits=0;bits<=MAX_BITS;bits++)s.bl_count[bits]=0;tree[s.heap[s.heap_max]*2+1]=0;for(h=s.heap_max+1;hmax_length){bits=max_length;overflow++}tree[n*2+1]=bits;if(n>max_code)continue;s.bl_count[bits]++;xbits=0;if(n>=base)xbits=extra[n-base];f=tree[n*2];s.opt_len+=f*(bits+xbits);if(has_stree)s.static_len+=f*(stree[n*2+1]+xbits)}if(overflow===0)return;do{bits=max_length-1;while(s.bl_count[bits]===0)bits--;s.bl_count[bits]--;s.bl_count[bits+ -1]+=2;s.bl_count[max_length]--;overflow-=2}while(overflow>0);for(bits=max_length;bits!==0;bits--){n=s.bl_count[bits];while(n!==0){m=s.heap[--h];if(m>max_code)continue;if(tree[m*2+1]!==bits){s.opt_len+=(bits-tree[m*2+1])*tree[m*2];tree[m*2+1]=bits}n--}}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1);var code=0;var bits;var n;for(bits=1;bits<=MAX_BITS;bits++)next_code[bits]=code=code+bl_count[bits-1]<<1;for(n=0;n<=max_code;n++){var len=tree[n*2+1];if(len===0)continue; -tree[n*2]=bi_reverse(next_code[len]++,len)}}function tr_static_init(){var n;var bits;var length;var code;var dist;var bl_count=new Array(MAX_BITS+1);length=0;for(code=0;code>=7;for(;code8)put_short(s,s.bi_buf);else if(s.bi_valid>0)s.pending_buf[s.pending++]= -s.bi_buf;s.bi_buf=0;s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s);if(header){put_short(s,len);put_short(s,~len)}utils.arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]>1;n>=1;n--)pqdownheap(s,tree,n);node=elems;do{n=s.heap[1];s.heap[1]=s.heap[s.heap_len--];pqdownheap(s,tree,1);m=s.heap[1];s.heap[--s.heap_max]=n;s.heap[--s.heap_max]=m;tree[node*2]=tree[n*2]+tree[m*2];s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]=tree[m*2+1]=node;s.heap[1]=node++;pqdownheap(s,tree,1)}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1];gen_bitlen(s, -desc);gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}tree[(max_code+1)*2+1]=65535;for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];if(++count=3;max_blindex--)if(s.bl_tree[bl_order[max_blindex]*2+1]!==0)break;s.opt_len+=3*(max_blindex+1)+5+5+4;return max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;send_bits(s,lcodes-257,5);send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);for(rank=0;rank>>=1)if(black_mask&1&&s.dyn_ltree[n*2]!==0)return Z_BINARY;if(s.dyn_ltree[9*2]!==0||s.dyn_ltree[10*2]!==0||s.dyn_ltree[13*2]!==0)return Z_TEXT;for(n=32;n0){if(s.strm.data_type===Z_UNKNOWN)s.strm.data_type= -detect_data_type(s);build_tree(s,s.l_desc);build_tree(s,s.d_desc);max_blindex=build_bl_tree(s);opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;if(static_lenb<=opt_lenb)opt_lenb=static_lenb}else opt_lenb=static_lenb=stored_len+5;if(stored_len+4<=opt_lenb&&buf!==-1)_tr_stored_block(s,buf,stored_len,last);else if(s.strategy===Z_FIXED||static_lenb===opt_lenb){send_bits(s,(STATIC_TREES<<1)+(last?1:0),3);compress_block(s,static_ltree,static_dtree)}else{send_bits(s,(DYN_TREES<<1)+(last?1:0), -3);send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1);compress_block(s,s.dyn_ltree,s.dyn_dtree)}init_block(s);if(last)bi_windup(s)}function _tr_tally(s,dist,lc){s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255;s.pending_buf[s.l_buf+s.last_lit]=lc&255;s.last_lit++;if(dist===0)s.dyn_ltree[lc*2]++;else{s.matches++;dist--;s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++;s.dyn_dtree[d_code(dist)*2]++}return s.last_lit===s.lit_bufsize-1} -exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_flush_block=_tr_flush_block;exports._tr_tally=_tr_tally;exports._tr_align=_tr_align},{"../utils/common":27}],39:[function(_dereq_,module,exports){function ZStream(){this.input=null;this.next_in=0;this.avail_in=0;this.total_in=0;this.output=null;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}module.exports=ZStream},{}]},{},[9])(9)}); - +*/globalScope="undefined"!=typeof window?window:"undefined"!=typeof global?global:{},(globalScope.externs||(globalScope.externs={})).JSZip=function e(t,n,i){function o(a,s){if(!n[a]){if(!t[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(r)return r(a,!0);throw new Error("Cannot find module '"+a+"'")}var u=n[a]={exports:{}};t[a][0].call(u.exports,(function(e){return o(t[a][1][e]||e)}),u,u.exports,e,t,n,i)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a>2,s=(3&n)<<4|(o=e.charCodeAt(c++))>>4,l=(15&o)<<2|(r=e.charCodeAt(c++))>>6,u=63&r,isNaN(o)?l=u=64:isNaN(r)&&(u=64),d=d+i.charAt(a)+i.charAt(s)+i.charAt(l)+i.charAt(u);return d},n.decode=function(e,t){var n,o,r,a,s,l,u="",d=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");d>4,o=(15&a)<<4|(s=i.indexOf(e.charAt(d++)))>>2,r=(3&s)<<6|(l=i.indexOf(e.charAt(d++))),u+=String.fromCharCode(n),64!=s&&(u+=String.fromCharCode(o)),64!=l&&(u+=String.fromCharCode(r));return u}},{}],2:[function(e,t,n){function i(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}i.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},t.exports=i},{}],3:[function(e,t,n){n.STORE={magic:"\0\0",compress:function(e){return e},uncompress:function(e){return e},compressInputType:null,uncompressInputType:null},n.DEFLATE=e("./flate")},{"./flate":8}],4:[function(e,t,n){var i=e("./utils"),o=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];t.exports=function(e,t){if(void 0===e||!e.length)return 0;var n="string"!==i.getTypeOf(e);void 0===t&&(t=0);var r=0;t^=-1;for(var a=0,s=e.length;a>>8^o[255&(t^r)];return-1^t}},{"./utils":21}],5:[function(e,t,n){var i=e("./utils");function o(e){this.data=null,this.length=0,this.index=0}o.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length=this.index;t--)n=(n<<8)+this.byteAt(t);return this.index+=e,n},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1)}},t.exports=o},{"./utils":21}],6:[function(e,t,n){n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!1,n.date=null,n.compression=null,n.comment=null},{}],7:[function(e,t,n){var i=e("./utils");n.string2binary=function(e){return i.string2binary(e)},n.string2Uint8Array=function(e){return i.transformTo("uint8array",e)},n.uint8Array2String=function(e){return i.transformTo("string",e)},n.string2Blob=function(e){var t=i.transformTo("arraybuffer",e);return i.arrayBuffer2Blob(t)},n.arrayBuffer2Blob=function(e){return i.arrayBuffer2Blob(e)},n.transformTo=function(e,t){return i.transformTo(e,t)},n.getTypeOf=function(e){return i.getTypeOf(e)},n.checkSupport=function(e){return i.checkSupport(e)},n.MAX_VALUE_16BITS=i.MAX_VALUE_16BITS,n.MAX_VALUE_32BITS=i.MAX_VALUE_32BITS,n.pretty=function(e){return i.pretty(e)},n.findCompression=function(e){return i.findCompression(e)},n.isRegExp=function(e){return i.isRegExp(e)}},{"./utils":21}],8:[function(e,t,n){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,o=e("pako");n.uncompressInputType=i?"uint8array":"array",n.compressInputType=i?"uint8array":"array",n.magic="\b\0",n.compress=function(e){return o.deflateRaw(e)},n.uncompress=function(e){return o.inflateRaw(e)}},{pako:24}],9:[function(e,t,n){var i=e("./base64");function o(e,t){if(!(this instanceof o))return new o(e,t);this.files={},this.comment=null,this.root="",e&&this.load(e,t),this.clone=function(){var e=new o;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}o.prototype=e("./object"),o.prototype.load=e("./load"),o.support=e("./support"),o.defaults=e("./defaults"),o.utils=e("./deprecatedPublicUtils"),o.base64={encode:function(e){return i.encode(e)},decode:function(e){return i.decode(e)}},o.compressions=e("./compressions"),t.exports=o},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(e,t,n){var i=e("./base64"),o=e("./zipEntries");t.exports=function(e,t){var n,r,a,s;for((t=t||{}).base64&&(e=i.decode(e)),n=(r=new o(e,t)).files,a=0;a>>=8;return i},S=function(){var e,t,n={};for(e=0;e0?e.substring(0,t):""},x=function(e,t){return"/"!=e.slice(-1)&&(e+="/"),t=void 0!==t&&t,this.files[e]||C.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]},w=function(e,t){var n,i=new d;return e._data instanceof d?(i.uncompressedSize=e._data.uncompressedSize,i.crc32=e._data.crc32,0===i.uncompressedSize||e.dir?(t=u.STORE,i.compressedContent="",i.crc32=0):e._data.compressionMethod===t.magic?i.compressedContent=e._data.getCompressedContent():(n=e._data.getContent(),i.compressedContent=t.compress(o.transformTo(t.compressInputType,n)))):((n=g(e))&&0!==n.length&&!e.dir||(t=u.STORE,n=""),i.uncompressedSize=n.length,i.crc32=r(n),i.compressedContent=t.compress(o.transformTo(t.compressInputType,n))),i.compressedSize=i.compressedContent.length,i.compressionMethod=t.magic,i},E=function(e,t,n,i){n.compressedContent;var s,l,u,d,c=o.transformTo("string",f.utf8encode(t.name)),p=t.comment||"",h=o.transformTo("string",f.utf8encode(p)),m=c.length!==t.name.length,g=h.length!==p.length,b=t.options,y="",S="",C="";u=t._initialMetadata.dir!==t.dir?t.dir:b.dir,s=(d=t._initialMetadata.date!==t.date?t.date:b.date).getHours(),s<<=6,s|=d.getMinutes(),s<<=5,s|=d.getSeconds()/2,l=d.getFullYear()-1980,l<<=4,l|=d.getMonth()+1,l<<=5,l|=d.getDate(),m&&(S=v(1,1)+v(r(c),4)+c,y+="up"+v(S.length,2)+S),g&&(C=v(1,1)+v(this.crc32(h),4)+h,y+="uc"+v(C.length,2)+C);var N="";return N+="\n\0",N+=m||g?"\0\b":"\0\0",N+=n.compressionMethod,N+=v(s,2),N+=v(l,2),N+=v(n.crc32,4),N+=v(n.compressedSize,4),N+=v(n.uncompressedSize,4),N+=v(c.length,2),N+=v(y.length,2),{fileRecord:a.LOCAL_FILE_HEADER+N+c+y,dirRecord:a.CENTRAL_FILE_HEADER+"\0"+N+v(h.length,2)+"\0\0\0\0"+(!0===u?"\0\0\0":"\0\0\0\0")+v(i,4)+c+y+h,compressedObject:n}},T={load:function(e,t){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(e){var t,n,i,o,r=[];for(t in this.files)this.files.hasOwnProperty(t)&&(i=this.files[t],o=new y(i.name,i._data,S(i.options)),n=t.slice(this.root.length,t.length),t.slice(0,this.root.length)===this.root&&e(n,o)&&r.push(o));return r},file:function(e,t,n){if(1===arguments.length){if(o.isRegExp(e)){var i=e;return this.filter((function(e,t){return!t.dir&&i.test(e)}))}return this.filter((function(t,n){return!n.dir&&t===e}))[0]||null}return e=this.root+e,C.call(this,e,t,n),this},folder:function(e){if(!e)return this;if(o.isRegExp(e))return this.filter((function(t,n){return n.dir&&e.test(t)}));var t=this.root+e,n=x.call(this,t),i=this.clone();return i.root=n.name,i},remove:function(e){e=this.root+e;var t=this.files[e];if(t||("/"!=e.slice(-1)&&(e+="/"),t=this.files[e]),t&&!t.dir)delete this.files[e];else for(var n=this.filter((function(t,n){return n.name.slice(0,e.length)===e})),i=0;i=0;--r)if(this.data[r]===t&&this.data[r+1]===n&&this.data[r+2]===i&&this.data[r+3]===o)return r;return-1},o.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.index,this.index+e);return this.index+=e,t},t.exports=o},{"./dataReader":5}],19:[function(e,t,n){var i=e("./utils"),o=function(e){this.data=new Uint8Array(e),this.index=0};o.prototype={append:function(e){0!==e.length&&(e=i.transformTo("uint8array",e),this.data.set(e,this.index),this.index+=e.length)},finalize:function(){return this.data}},t.exports=o},{"./utils":21}],20:[function(e,t,n){for(var i=e("./utils"),o=e("./support"),r=e("./nodeBuffer"),a=new Array(256),s=0;s<256;s++)a[s]=s>=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;a[254]=a[254]=1;var l=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t},u=function(e){var t,n,o,r,s=e.length,l=new Array(2*s);for(n=0,t=0;t4)l[n++]=65533,t+=r-1;else{for(o&=2===r?31:3===r?15:7;r>1&&t1?l[n++]=65533:o<65536?l[n++]=o:(o-=65536,l[n++]=55296|o>>10&1023,l[n++]=56320|1023&o)}return l.length!==n&&(l.subarray?l=l.subarray(0,n):l.length=n),i.applyFromCharCode(l)};n.utf8encode=function(e){return o.nodebuffer?r(e,"utf-8"):function(e){var t,n,i,r,a,s=e.length,l=0;for(r=0;r>>6,t[a++]=128|63&n):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|63&n):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|63&n);return t}(e)},n.utf8decode=function(e){if(o.nodebuffer)return i.transformTo("nodebuffer",e).toString("utf-8");for(var t=[],n=0,r=(e=i.transformTo(o.uint8array?"uint8array":"array",e)).length;n1;)try{"array"===a||"nodebuffer"===a?i.push(String.fromCharCode.apply(null,e.slice(s,Math.min(s+t,o)))):i.push(String.fromCharCode.apply(null,e.subarray(s,Math.min(s+t,o)))),s+=t}catch(e){t=Math.floor(t/2)}return i.join("")}function u(e,t){for(var n=0;n1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var n=i.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw new Error(a[n]);t.header&&i.deflateSetHeader(this.strm,t.header)};function u(e,t){var n=new l(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}l.prototype.push=function(e,t){var n,a,s=this.strm,l=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,s.input="string"==typeof e?r.string2buf(e):e,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new o.Buf8(l),s.next_out=0,s.avail_out=l),1!==(n=i.deflate(s,a))&&0!==n)return this.onEnd(n),this.ended=!0,!1;(0===s.avail_out||0===s.avail_in&&4===a)&&("string"===this.options.to?this.onData(r.buf2binstring(o.shrinkBuf(s.output,s.next_out))):this.onData(o.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&1!==n);return 4!==a||(n=i.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n)},l.prototype.onData=function(e){this.chunks.push(e)},l.prototype.onEnd=function(e){0===e&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},n.Deflate=l,n.deflate=u,n.deflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},n.gzip=function(e,t){return(t=t||{}).gzip=!0,u(e,t)}},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(e,t,n){var i=e("./zlib/inflate.js"),o=e("./utils/common"),r=e("./utils/strings"),a=e("./zlib/constants"),s=e("./zlib/messages"),l=e("./zlib/zstream"),u=e("./zlib/gzheader"),d=function(e){this.options=o.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var n=i.inflateInit2(this.strm,t.windowBits);if(n!==a.Z_OK)throw new Error(s[n]);this.header=new u,i.inflateGetHeader(this.strm,this.header)};function c(e,t){var n=new d(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}d.prototype.push=function(e,t){var n,s,l,u,d,c=this.strm,f=this.options.chunkSize;if(this.ended)return!1;s=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,c.input="string"==typeof e?r.binstring2buf(e):e,c.next_in=0,c.avail_in=c.input.length;do{if(0===c.avail_out&&(c.output=new o.Buf8(f),c.next_out=0,c.avail_out=f),(n=i.inflate(c,a.Z_NO_FLUSH))!==a.Z_STREAM_END&&n!==a.Z_OK)return this.onEnd(n),this.ended=!0,!1;c.next_out&&(0===c.avail_out||n===a.Z_STREAM_END||0===c.avail_in&&s===a.Z_FINISH)&&("string"===this.options.to?(l=r.utf8border(c.output,c.next_out),u=c.next_out-l,d=r.buf2string(c.output,l),c.next_out=u,c.avail_out=f-u,u&&o.arraySet(c.output,c.output,l,u,0),this.onData(d)):this.onData(o.shrinkBuf(c.output,c.next_out)))}while(c.avail_in>0&&n!==a.Z_STREAM_END);return n===a.Z_STREAM_END&&(s=a.Z_FINISH),s!==a.Z_FINISH||(n=i.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===a.Z_OK)},d.prototype.onData=function(e){this.chunks.push(e)},d.prototype.onEnd=function(e){e===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},n.Inflate=d,n.inflate=c,n.inflateRaw=function(e,t){return(t=t||{}).raw=!0,c(e,t)},n.ungzip=c},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(e,t,n){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;n.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var i in n)n.hasOwnProperty(i)&&(e[i]=n[i])}}return e},n.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,n,i,o){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+i),o);else for(var r=0;r=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;function l(e,t){if(t<65537&&(e.subarray&&r||!e.subarray&&o))return String.fromCharCode.apply(null,i.shrinkBuf(e,t));for(var n="",a=0;a>>6,t[a++]=128|63&n):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|63&n):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|63&n);return t},n.buf2binstring=function(e){return l(e,e.length)},n.binstring2buf=function(e){for(var t=new i.Buf8(e.length),n=0,o=t.length;n4)u[i++]=65533,n+=r-1;else{for(o&=2===r?31:3===r?15:7;r>1&&n1?u[i++]=65533:o<65536?u[i++]=o:(o-=65536,u[i++]=55296|o>>10&1023,u[i++]=56320|1023&o)}return l(u,i)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},{"./common":27}],29:[function(e,t,n){t.exports=function(e,t,n,i){for(var o=65535&e|0,r=e>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{r=r+(o=o+t[i++]|0)|0}while(--a);o%=65521,r%=65521}return o|r<<16|0}},{}],30:[function(e,t,n){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(e,t,n){var i=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,o){var r=i,a=o+n;e^=-1;for(var s=o;s>>8^r[255&(e^t[s])];return-1^e}},{}],32:[function(e,t,n){var i=e("../utils/common"),o=e("./trees"),r=e("./adler32"),a=e("./crc32"),s=e("./messages");function l(e,t){return e.msg=s[t],t}function u(e){return(e<<1)-(e>4?9:0)}function d(e){for(var t=e.length;--t>=0;)e[t]=0}function c(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function f(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,c(e.strm)}function p(e,t){e.pending_buf[e.pending++]=t}function h(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function m(e,t){var n,i,o=e.max_chain_length,r=e.strstart,a=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,u=e.window,d=e.w_mask,c=e.prev,f=e.strstart+258,p=u[r+a-1],h=u[r+a];e.prev_length>=e.good_match&&(o>>=2),s>e.lookahead&&(s=e.lookahead);do{if(u[(n=t)+a]===h&&u[n+a-1]===p&&u[n]===u[r]&&u[++n]===u[r+1]){r+=2,n++;do{}while(u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&u[++r]===u[++n]&&ra){if(e.match_start=t,a=i,i>=s)break;p=u[r+a-1],h=u[r+a]}}}while((t=c[t&d])>l&&0!=--o);return a<=e.lookahead?a:e.lookahead}function g(e){var t,n,o,s,l,u,d,c,f,p,h=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=h+(h-262)){i.arraySet(e.window,e.window,h,h,0),e.match_start-=h,e.strstart-=h,e.block_start-=h,t=n=e.hash_size;do{o=e.head[--t],e.head[t]=o>=h?o-h:0}while(--n);t=n=h;do{o=e.prev[--t],e.prev[t]=o>=h?o-h:0}while(--n);s+=h}if(0===e.strm.avail_in)break;if(u=e.strm,d=e.window,c=e.strstart+e.lookahead,f=s,p=void 0,(p=u.avail_in)>f&&(p=f),n=0===p?0:(u.avail_in-=p,i.arraySet(d,u.input,u.next_in,p,c),1===u.state.wrap?u.adler=r(u.adler,d,p,c):2===u.state.wrap&&(u.adler=a(u.adler,d,p,c)),u.next_in+=p,u.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(i=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<15&&(s=2,o-=16),r<1||r>9||8!==n||o<8||o>15||t<0||t>9||a<0||a>4)return l(e,-2);8===o&&(o=9);var u=new C;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=o,u.w_size=1<>1,u.l_buf=3*u.lit_bufsize,u.level=t,u.strategy=a,u.method=n,x(e)}v=[new S(0,0,0,0,(function(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(g(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+n;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,f(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(f(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(f(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(f(e,!1),e.strm.avail_out),1)})),new S(4,4,8,4,b),new S(4,5,16,8,b),new S(4,6,32,32,b),new S(4,4,16,16,y),new S(8,16,32,32,y),new S(8,16,128,128,y),new S(8,32,128,256,y),new S(32,128,258,1024,y),new S(32,258,258,4096,y)],n.deflateInit=function(e,t){return w(e,t,8,15,8,0)},n.deflateInit2=w,n.deflateReset=x,n.deflateResetKeep=N,n.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?-2:(e.state.gzhead=t,0):-2},n.deflate=function(e,t){var n,i,r,s;if(!e||!e.state||t>5||t<0)return e?l(e,-2):-2;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||666===i.status&&4!==t)return l(e,0===e.avail_out?-5:-2);if(i.strm=e,n=i.last_flush,i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,p(i,31),p(i,139),p(i,8),i.gzhead?(p(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),p(i,255&i.gzhead.time),p(i,i.gzhead.time>>8&255),p(i,i.gzhead.time>>16&255),p(i,i.gzhead.time>>24&255),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(p(i,255&i.gzhead.extra.length),p(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(p(i,0),p(i,0),p(i,0),p(i,0),p(i,0),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,3),i.status=113);else{var m=8+(i.w_bits-8<<4)<<8;m|=(i.strategy>=2||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(m|=32),m+=31-m%31,i.status=113,h(i,m),0!==i.strstart&&(h(i,e.adler>>>16),h(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>r&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),c(e),r=i.pending,i.pending!==i.pending_buf_size));)p(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),c(e),r=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexr&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),c(e),r=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexr&&(e.adler=a(e.adler,i.pending_buf,i.pending-r,r)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&c(e),i.pending+2<=i.pending_buf_size&&(p(i,255&e.adler),p(i,e.adler>>8&255),e.adler=0,i.status=113)):i.status=113),0!==i.pending){if(c(e),0===e.avail_out)return i.last_flush=-1,0}else if(0===e.avail_in&&u(t)<=u(n)&&4!==t)return l(e,-5);if(666===i.status&&0!==e.avail_in)return l(e,-5);if(0!==e.avail_in||0!==i.lookahead||0!==t&&666!==i.status){var b=2===i.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(g(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(f(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(f(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(f(e,!1),0===e.strm.avail_out)?1:2}(i,t):3===i.strategy?function(e,t){for(var n,i,r,a,s=e.window;;){if(e.lookahead<=258){if(g(e),e.lookahead<=258&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[r=e.strstart-1])===s[++r]&&i===s[++r]&&i===s[++r]){a=e.strstart+258;do{}while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(f(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(f(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(f(e,!1),0===e.strm.avail_out)?1:2}(i,t):v[i.level].func(i,t);if(3!==b&&4!==b||(i.status=666),1===b||3===b)return 0===e.avail_out&&(i.last_flush=-1),0;if(2===b&&(1===t?o._tr_align(i):5!==t&&(o._tr_stored_block(i,0,0,!1),3===t&&(d(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),c(e),0===e.avail_out))return i.last_flush=-1,0}return 4!==t?0:i.wrap<=0?1:(2===i.wrap?(p(i,255&e.adler),p(i,e.adler>>8&255),p(i,e.adler>>16&255),p(i,e.adler>>24&255),p(i,255&e.total_in),p(i,e.total_in>>8&255),p(i,e.total_in>>16&255),p(i,e.total_in>>24&255)):(h(i,e.adler>>>16),h(i,65535&e.adler)),c(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?0:1)},n.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?l(e,-2):(e.state=null,113===t?l(e,-3):0):-2},n.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(e,t,n){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],34:[function(e,t,n){t.exports=function(e,t){var n,i,o,r,a,s,l,u,d,c,f,p,h,m,g,b,y,v,S,C,N,x,w,E,T;n=e.state,i=e.next_in,E=e.input,o=i+(e.avail_in-5),r=e.next_out,T=e.output,a=r-(t-e.avail_out),s=r+(e.avail_out-257),l=n.dmax,u=n.wsize,d=n.whave,c=n.wnext,f=n.window,p=n.hold,h=n.bits,m=n.lencode,g=n.distcode,b=(1<>>=S=v>>>24,h-=S,0==(S=v>>>16&255))T[r++]=65535&v;else{if(!(16&S)){if(0==(64&S)){v=m[(65535&v)+(p&(1<>>=S,h-=S),h<15&&(p+=E[i++]<>>=S=v>>>24,h-=S,!(16&(S=v>>>16&255))){if(0==(64&S)){v=g[(65535&v)+(p&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(p>>>=S,h-=S,N>(S=r-a)){if((S=N-S)>d&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(x=0,w=f,0===c){if(x+=u-S,S2;)T[r++]=w[x++],T[r++]=w[x++],T[r++]=w[x++],C-=3;C&&(T[r++]=w[x++],C>1&&(T[r++]=w[x++]))}else{x=r-N;do{T[r++]=T[x++],T[r++]=T[x++],T[r++]=T[x++],C-=3}while(C>2);C&&(T[r++]=T[x++],C>1&&(T[r++]=T[x++]))}break}}break}}while(i>3,p&=(1<<(h-=C<<3))-1,e.next_in=i,e.next_out=r,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(852),t.distcode=t.distdyn=new i.Buf32(592),t.sane=1,t.back=-1,0):-2}function c(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):-2}function f(e,t){var n,i;return e&&e.state?(i=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?-2:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,c(e))):-2}function p(e,t){var n,i;return e?(i=new u,e.state=i,i.window=null,0!==(n=f(e,t))&&(e.state=null),n):-2}var h,m,g=!0;function b(e){if(g){var t;for(h=new i.Buf32(512),m=new i.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,h,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,m,0,e.work,{bits:5}),g=!1}e.lencode=h,e.lenbits=9,e.distcode=m,e.distbits=5}n.inflateReset=c,n.inflateReset2=f,n.inflateResetKeep=d,n.inflateInit=function(e){return p(e,15)},n.inflateInit2=p,n.inflate=function(e,t){var n,u,d,c,f,p,h,m,g,y,v,S,C,N,x,w,E,T,O,A,R,_,P,D,k=0,I=new i.Buf8(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return-2;12===(n=e.state).mode&&(n.mode=13),f=e.next_out,d=e.output,h=e.avail_out,c=e.next_in,u=e.input,p=e.avail_in,m=n.hold,g=n.bits,y=p,v=h,_=0;e:for(;;)switch(n.mode){case 1:if(0===n.wrap){n.mode=13;break}for(;g<16;){if(0===p)break e;p--,m+=u[c++]<>>8&255,n.check=r(n.check,I,2,0),m=0,g=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&m)<<8)+(m>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&m)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,R=8+(15&(m>>>=4)),0===n.wbits)n.wbits=R;else if(R>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(I[0]=255&m,I[1]=m>>>8&255,n.check=r(n.check,I,2,0)),m=0,g=0,n.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,m+=u[c++]<>>8&255,I[2]=m>>>16&255,I[3]=m>>>24&255,n.check=r(n.check,I,4,0)),m=0,g=0,n.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,m+=u[c++]<>8),512&n.flags&&(I[0]=255&m,I[1]=m>>>8&255,n.check=r(n.check,I,2,0)),m=0,g=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===p)break e;p--,m+=u[c++]<>>8&255,n.check=r(n.check,I,2,0)),m=0,g=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((S=n.length)>p&&(S=p),S&&(n.head&&(R=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),i.arraySet(n.head.extra,u,c,S,R)),512&n.flags&&(n.check=r(n.check,u,S,c)),p-=S,c+=S,n.length-=S),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===p)break e;S=0;do{R=u[c+S++],n.head&&R&&n.length<65536&&(n.head.name+=String.fromCharCode(R))}while(R&&S>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,m+=u[c++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===p)break e;p--,m+=u[c++]<>>=1)){case 0:n.mode=14;break;case 1:if(b(n),n.mode=20,6===t){m>>>=2,g-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}m>>>=2,g-=2;break;case 14:for(m>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,m+=u[c++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&m,m=0,g=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(S=n.length){if(S>p&&(S=p),S>h&&(S=h),0===S)break e;i.arraySet(d,u,c,S,f),p-=S,c+=S,h-=S,f+=S,n.length-=S;break}n.mode=12;break;case 17:for(;g<14;){if(0===p)break e;p--,m+=u[c++]<>>=5,g-=5,n.ndist=1+(31&m),m>>>=5,g-=5,n.ncode=4+(15&m),m>>>=4,g-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,g-=3}for(;n.have<19;)n.lens[F[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,P={bits:n.lenbits},_=s(0,n.lens,0,19,n.lencode,0,n.work,P),n.lenbits=P.bits,_){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,E=65535&k,!((x=k>>>24)<=g);){if(0===p)break e;p--,m+=u[c++]<>>=x,g-=x,n.lens[n.have++]=E;else{if(16===E){for(D=x+2;g>>=x,g-=x,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}R=n.lens[n.have-1],S=3+(3&m),m>>>=2,g-=2}else if(17===E){for(D=x+3;g>>=x)),m>>>=3,g-=3}else{for(D=x+7;g>>=x)),m>>>=7,g-=7}if(n.have+S>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;S--;)n.lens[n.have++]=R}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,P={bits:n.lenbits},_=s(1,n.lens,0,n.nlen,n.lencode,0,n.work,P),n.lenbits=P.bits,_){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,P={bits:n.distbits},_=s(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,P),n.distbits=P.bits,_){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(p>=6&&h>=258){e.next_out=f,e.avail_out=h,e.next_in=c,e.avail_in=p,n.hold=m,n.bits=g,a(e,v),f=e.next_out,d=e.output,h=e.avail_out,c=e.next_in,u=e.input,p=e.avail_in,m=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;w=(k=n.lencode[m&(1<>>16&255,E=65535&k,!((x=k>>>24)<=g);){if(0===p)break e;p--,m+=u[c++]<>T)])>>>16&255,E=65535&k,!(T+(x=k>>>24)<=g);){if(0===p)break e;p--,m+=u[c++]<>>=T,g-=T,n.back+=T}if(m>>>=x,g-=x,n.back+=x,n.length=E,0===w){n.mode=26;break}if(32&w){n.back=-1,n.mode=12;break}if(64&w){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&w,n.mode=22;case 22:if(n.extra){for(D=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;w=(k=n.distcode[m&(1<>>16&255,E=65535&k,!((x=k>>>24)<=g);){if(0===p)break e;p--,m+=u[c++]<>T)])>>>16&255,E=65535&k,!(T+(x=k>>>24)<=g);){if(0===p)break e;p--,m+=u[c++]<>>=T,g-=T,n.back+=T}if(m>>>=x,g-=x,n.back+=x,64&w){e.msg="invalid distance code",n.mode=30;break}n.offset=E,n.extra=15&w,n.mode=24;case 24:if(n.extra){for(D=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===h)break e;if(S=v-h,n.offset>S){if((S=n.offset-S)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}S>n.wnext?(S-=n.wnext,C=n.wsize-S):C=n.wnext-S,S>n.length&&(S=n.length),N=n.window}else N=d,C=f-n.offset,S=n.length;S>h&&(S=h),h-=S,n.length-=S;do{d[f++]=N[C++]}while(--S);0===n.length&&(n.mode=21);break;case 26:if(0===h)break e;d[f++]=n.length,h--,n.mode=21;break;case 27:if(n.wrap){for(;g<32;){if(0===p)break e;p--,m|=u[c++]<=a.wsize?(i.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((r=a.wsize-a.wnext)>o&&(r=o),i.arraySet(a.window,t,n-o,r,a.wnext),(o-=r)?(i.arraySet(a.window,t,n-o,o,0),a.wnext=o,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave=1&&0===F[T];T--);if(O>T&&(O=T),0===T)return u[d++]=20971520,u[d++]=20971520,f.bits=1,0;for(E=1;E0&&(0===e||1!==T))return-1;for(M[1]=0,x=1;x<15;x++)M[x+1]=M[x]+F[x];for(w=0;w852||2===e&&P>592)return 1;for(;;){v=x-R,c[w]y?(S=B[U+c[w]],C=k[I+c[w]]):(S=96,C=0),p=1<>R)+(h-=p)]=v<<24|S<<16|C|0}while(0!==h);for(p=1<>=1;if(0!==p?(D&=p-1,D+=p):D=0,w++,0==--F[x]){if(x===T)break;x=t[n+c[w]]}if(x>O&&(D&g)!==m){for(0===R&&(R=O),b+=E,_=1<<(A=x-R);A+R852||2===e&&P>592)return 1;u[m=D&g]=O<<24|A<<16|b-d|0}}return 0!==D&&(u[b+D]=x-R<<24|64<<16|0),f.bits=O,0}},{"../utils/common":27}],37:[function(e,t,n){t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(e,t,n){var i=e("../utils/common");function o(e){for(var t=e.length;--t>=0;)e[t]=0}var r=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],a=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);o(u);var d=new Array(60);o(d);var c=new Array(512);o(c);var f=new Array(256);o(f);var p=new Array(29);o(p);var h=new Array(30);o(h);var m,g,b,y=function(e,t,n,i,o){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=o,this.has_stree=e&&e.length},v=function(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t};function S(e){return e<256?c[e]:c[256+(e>>>7)]}function C(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function N(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function E(e,t,n){var i,o,r=new Array(16),a=0;for(i=1;i<=15;i++)r[i]=a=a+n[i-1]<<1;for(o=0;o<=t;o++){var s=e[2*o+1];0!==s&&(e[2*o]=w(r[s]++,s))}}function T(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function O(e){e.bi_valid>8?C(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function A(e,t,n,i){var o=2*t,r=2*n;return e[o]>1;n>=1;n--)R(e,r,n);o=l;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],R(e,r,1),i=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=i,r[2*o]=r[2*n]+r[2*i],e.depth[o]=(e.depth[n]>=e.depth[i]?e.depth[n]:e.depth[i])+1,r[2*n+1]=r[2*i+1]=o,e.heap[1]=o++,R(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,i,o,r,a,s,l=t.dyn_tree,u=t.max_code,d=t.stat_desc.static_tree,c=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,h=t.stat_desc.max_length,m=0;for(r=0;r<=15;r++)e.bl_count[r]=0;for(l[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(r=l[2*l[2*(i=e.heap[n])+1]+1]+1)>h&&(r=h,m++),l[2*i+1]=r,i>u||(e.bl_count[r]++,a=0,i>=p&&(a=f[i-p]),s=l[2*i],e.opt_len+=s*(r+a),c&&(e.static_len+=s*(d[2*i+1]+a)));if(0!==m){do{for(r=h-1;0===e.bl_count[r];)r--;e.bl_count[r]--,e.bl_count[r+1]+=2,e.bl_count[h]--,m-=2}while(m>0);for(r=h;0!==r;r--)for(i=e.bl_count[r];0!==i;)(o=e.heap[--n])>u||(l[2*o+1]!==r&&(e.opt_len+=(r-l[2*o+1])*l[2*o],l[2*o+1]=r),i--)}}(e,t),E(r,u,e.bl_count)}function D(e,t,n){var i,o,r=-1,a=t[1],s=0,l=7,u=4;for(0===a&&(l=138,u=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)o=a,a=t[2*(i+1)+1],++s>=7;i<30;i++)for(h[i]=o<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),P(e,e.l_desc),P(e,e.d_desc),a=function(e){var t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),P(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*l[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),o=e.opt_len+3+7>>>3,(r=e.static_len+3+7>>>3)<=o&&(o=r)):o=r=n+5,n+4<=o&&-1!==t?F(e,t,n,i):4===e.strategy||r===o?(N(e,2+(i?1:0),3),_(e,u,d)):(N(e,4+(i?1:0),3),function(e,t,n,i){var o;for(N(e,t-257,5),N(e,n-1,5),N(e,i-4,4),o=0;o>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(f[n]+256+1)]++,e.dyn_dtree[2*S(t)]++),e.last_lit===e.lit_bufsize-1},n._tr_align=function(e){N(e,2,3),x(e,256,u),function(e){16===e.bi_valid?(C(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":27}],39:[function(e,t,n){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}]},{},[9])(9), /** * Copyright (C) 2013 KO GmbH * @@ -2244,641 +78,4 @@ exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_ * @source: http://www.webodf.org/ * @source: https://github.com/kogmbh/WebODF/ */ - -/*global runtime, define, document, core, odf, gui, ops*/ - -/*define("webodf/editor/EditorSession", [ - "dojo/text!resources/fonts/fonts.css" -],*/ -this.OS.APP.OpenPage.EditorSession = (function (fontsCSS) { // fontsCSS is retrieved as a string, using dojo's text retrieval AMD plugin - "use strict"; - - runtime.loadClass("core.Async"); - runtime.loadClass("core.DomUtils"); - runtime.loadClass("odf.OdfUtils"); - runtime.loadClass("ops.OdtDocument"); - runtime.loadClass("ops.OdtStepsTranslator"); - runtime.loadClass("ops.Session"); - runtime.loadClass("odf.Namespaces"); - runtime.loadClass("odf.OdfCanvas"); - runtime.loadClass("odf.OdfUtils"); - runtime.loadClass("gui.CaretManager"); - runtime.loadClass("gui.Caret"); - runtime.loadClass("gui.OdfFieldView"); - runtime.loadClass("gui.SessionController"); - runtime.loadClass("gui.SessionView"); - runtime.loadClass("gui.HyperlinkTooltipView"); - runtime.loadClass("gui.TrivialUndoManager"); - runtime.loadClass("gui.SvgSelectionView"); - runtime.loadClass("gui.SelectionViewManager"); - runtime.loadClass("core.EventNotifier"); - runtime.loadClass("gui.ShadowCursor"); - runtime.loadClass("gui.CommonConstraints"); - - /** - * Instantiate a new editor session attached to an existing operation session - * @constructor - * @implements {core.EventSource} - * @param {!ops.Session} session - * @param {!string} localMemberId - * @param {{viewOptions:gui.SessionViewOptions,directParagraphStylingEnabled:boolean,annotationsEnabled:boolean}} config - */ - var EditorSession = function EditorSession(session, localMemberId, config) { - var self = this, - currentParagraphNode = null, - currentCommonStyleName = null, - currentStyleName = null, - caretManager, - selectionViewManager, - hyperlinkTooltipView, - odtDocument = session.getOdtDocument(), - textns = odf.Namespaces.textns, - fontStyles = document.createElement('style'), - formatting = odtDocument.getFormatting(), - domUtils = core.DomUtils, - odfUtils = odf.OdfUtils, - odfFieldView, - eventNotifier = new core.EventNotifier([ - EditorSession.signalMemberAdded, - EditorSession.signalMemberUpdated, - EditorSession.signalMemberRemoved, - EditorSession.signalCursorAdded, - EditorSession.signalCursorMoved, - EditorSession.signalCursorRemoved, - EditorSession.signalParagraphChanged, - EditorSession.signalCommonStyleCreated, - EditorSession.signalCommonStyleDeleted, - EditorSession.signalParagraphStyleModified, - EditorSession.signalUndoStackChanged]), - shadowCursor = new gui.ShadowCursor(odtDocument), - sessionConstraints, - /**@const*/ - NEXT = core.StepDirection.NEXT; - - /** - * @return {Array.} - */ - function getAvailableFonts() { - var availableFonts, regex, matches; - - availableFonts = {}; - - /*jslint regexp: true*/ - regex = /font-family *: *(?:\'([^']*)\'|\"([^"]*)\")/gm; - /*jslint regexp: false*/ - matches = regex.exec(fontsCSS); - - while (matches) { - availableFonts[matches[1] || matches[2]] = 1; - matches = regex.exec(fontsCSS); - } - availableFonts = Object.keys(availableFonts); - - return availableFonts; - } - - function checkParagraphStyleName() { - var newStyleName, - newCommonStyleName; - - newStyleName = currentParagraphNode.getAttributeNS(textns, 'style-name'); - - if (newStyleName !== currentStyleName) { - currentStyleName = newStyleName; - // check if common style is still the same - newCommonStyleName = formatting.getFirstCommonParentStyleNameOrSelf(newStyleName); - if (!newCommonStyleName) { - // Default style, empty-string name - currentCommonStyleName = newStyleName = currentStyleName = ""; - self.emit(EditorSession.signalParagraphChanged, { - type: 'style', - node: currentParagraphNode, - styleName: currentCommonStyleName - }); - return; - } - // a common style - if (newCommonStyleName !== currentCommonStyleName) { - currentCommonStyleName = newCommonStyleName; - self.emit(EditorSession.signalParagraphChanged, { - type: 'style', - node: currentParagraphNode, - styleName: currentCommonStyleName - }); - } - } - } - /** - * Creates a NCName from the passed string - * @param {!string} name - * @return {!string} - */ - function createNCName(name) { - var letter, - result = "", - i; - - // encode - for (i = 0; i < name.length; i += 1) { - letter = name[i]; - // simple approach, can be improved to not skip other allowed chars - if (letter.match(/[a-zA-Z0-9.-_]/) !== null) { - result += letter; - } else { - result += "_" + letter.charCodeAt(0).toString(16) + "_"; - } - } - // ensure leading char is from proper range - if (result.match(/^[a-zA-Z_]/) === null) { - result = "_" + result; - } - - return result; - } - - function uniqueParagraphStyleNCName(name) { - var result, - i = 0, - ncMemberId = createNCName(localMemberId), - ncName = createNCName(name); - - // create default paragraph style - // localMemberId is used to avoid id conflicts with ids created by other members - result = ncName + "_" + ncMemberId; - // then loop until result is really unique - while (formatting.hasParagraphStyle(result)) { - result = ncName + "_" + i + "_" + ncMemberId; - i += 1; - } - - return result; - } - - function trackCursor(cursor) { - var node; - - node = odfUtils.getParagraphElement(cursor.getNode()); - if (!node) { - return; - } - currentParagraphNode = node; - checkParagraphStyleName(); - } - - function trackCurrentParagraph(info) { - var cursor = odtDocument.getCursor(localMemberId), - range = cursor && cursor.getSelectedRange(), - paragraphRange = odtDocument.getDOMDocument().createRange(); - paragraphRange.selectNode(info.paragraphElement); - if ((range && domUtils.rangesIntersect(range, paragraphRange)) || info.paragraphElement === currentParagraphNode) { - self.emit(EditorSession.signalParagraphChanged, info); - checkParagraphStyleName(); - } - paragraphRange.detach(); - } - - function onMemberAdded(member) { - self.emit(EditorSession.signalMemberAdded, member.getMemberId()); - } - - function onMemberUpdated(member) { - self.emit(EditorSession.signalMemberUpdated, member.getMemberId()); - } - - function onMemberRemoved(memberId) { - self.emit(EditorSession.signalMemberRemoved, memberId); - } - - function onCursorAdded(cursor) { - self.emit(EditorSession.signalCursorAdded, cursor.getMemberId()); - trackCursor(cursor); - } - - function onCursorRemoved(memberId) { - self.emit(EditorSession.signalCursorRemoved, memberId); - } - - function onCursorMoved(cursor) { - // Emit 'cursorMoved' only when *I* am moving the cursor, not the other users - if (cursor.getMemberId() === localMemberId) { - self.emit(EditorSession.signalCursorMoved, cursor); - trackCursor(cursor); - } - } - - function onStyleCreated(newStyleName) { - self.emit(EditorSession.signalCommonStyleCreated, newStyleName); - } - - function onStyleDeleted(styleName) { - self.emit(EditorSession.signalCommonStyleDeleted, styleName); - } - - function onParagraphStyleModified(styleName) { - self.emit(EditorSession.signalParagraphStyleModified, styleName); - } - - /** - * Call all subscribers for the given event with the specified argument - * @param {!string} eventid - * @param {Object} args - */ - this.emit = function (eventid, args) { - eventNotifier.emit(eventid, args); - }; - - /** - * Subscribe to a given event with a callback - * @param {!string} eventid - * @param {!Function} cb - */ - this.subscribe = function (eventid, cb) { - eventNotifier.subscribe(eventid, cb); - }; - - /** - * @param {!string} eventid - * @param {!Function} cb - * @return {undefined} - */ - this.unsubscribe = function (eventid, cb) { - eventNotifier.unsubscribe(eventid, cb); - }; - - this.getCursorPosition = function () { - return odtDocument.getCursorPosition(localMemberId); - }; - - this.getCursorSelection = function () { - return odtDocument.getCursorSelection(localMemberId); - }; - - this.getOdfCanvas = function () { - return odtDocument.getOdfCanvas(); - }; - - this.getCurrentParagraph = function () { - return currentParagraphNode; - }; - - this.getAvailableParagraphStyles = function () { - return formatting.getAvailableParagraphStyles(); - }; - - this.getCurrentParagraphStyle = function () { - return currentCommonStyleName; - }; - - /** - * Applies the paragraph style with the given - * style name to all the paragraphs within - * the cursor selection. - * @param {!string} styleName - * @return {undefined} - */ - this.setCurrentParagraphStyle = function (styleName) { - var range = odtDocument.getCursor(localMemberId).getSelectedRange(), - paragraphs = odfUtils.getParagraphElements(range), - opQueue = []; - - paragraphs.forEach(function (paragraph) { - var paragraphStartPoint = odtDocument.convertDomPointToCursorStep(paragraph, 0, NEXT), - paragraphStyleName = paragraph.getAttributeNS(odf.Namespaces.textns, "style-name"), - opSetParagraphStyle; - - if (paragraphStyleName !== styleName) { - opSetParagraphStyle = new ops.OpSetParagraphStyle(); - opSetParagraphStyle.init({ - memberid: localMemberId, - styleName: styleName, - position: paragraphStartPoint - }); - opQueue.push(opSetParagraphStyle); - } - }); - - if (opQueue.length > 0) { - session.enqueue(opQueue); - } - }; - - this.insertTable = function (initialRows, initialColumns, tableStyleName, tableColumnStyleName, tableCellStyleMatrix) { - var op = new ops.OpInsertTable(); - op.init({ - memberid: localMemberId, - position: self.getCursorPosition(), - initialRows: initialRows, - initialColumns: initialColumns, - tableStyleName: tableStyleName, - tableColumnStyleName: tableColumnStyleName, - tableCellStyleMatrix: tableCellStyleMatrix - }); - session.enqueue([op]); - }; - - /** - * Takes a style name and returns the corresponding paragraph style - * element. If the style name is an empty string, the default style - * is returned. - * @param {!string} styleName - * @return {?Element} - */ - function getParagraphStyleElement(styleName) { - return (styleName === "") - ? formatting.getDefaultStyleElement('paragraph') - : formatting.getStyleElement(styleName, 'paragraph'); - } - - this.getParagraphStyleElement = getParagraphStyleElement; - - /** - * Returns if the style is used anywhere in the document - * @param {!Element} styleElement - * @return {boolean} - */ - this.isStyleUsed = function (styleElement) { - return formatting.isStyleUsed(styleElement); - }; - - /** - * Returns the attributes of a given paragraph style name - * (with inheritance). If the name is an empty string, - * the attributes of the default style are returned. - * @param {!string} styleName - * @return {?odf.Formatting.StyleData} - */ - this.getParagraphStyleAttributes = function (styleName) { - var styleNode = getParagraphStyleElement(styleName), - includeSystemDefault = styleName === ""; - - if (styleNode) { - return formatting.getInheritedStyleAttributes(styleNode, includeSystemDefault); - } - - return null; - }; - - /** - * Creates and enqueues a paragraph-style cloning operation. - * Returns the created id for the new style. - * @param {!string} styleName id of the style to update - * @param {!{paragraphProperties,textProperties}} setProperties properties which are set - * @param {!{paragraphPropertyNames,textPropertyNames}=} removedProperties properties which are removed - * @return {undefined} - */ - this.updateParagraphStyle = function (styleName, setProperties, removedProperties) { - var op; - op = new ops.OpUpdateParagraphStyle(); - op.init({ - memberid: localMemberId, - styleName: styleName, - setProperties: setProperties, - removedProperties: (!removedProperties) ? {} : removedProperties - }); - session.enqueue([op]); - }; - - /** - * Creates and enqueues a paragraph-style cloning operation. - * Returns the created id for the new style. - * @param {!string} styleName id of the style to clone - * @param {!string} newStyleDisplayName display name of the new style - * @return {!string} - */ - this.cloneParagraphStyle = function (styleName, newStyleDisplayName) { - var newStyleName = uniqueParagraphStyleNCName(newStyleDisplayName), - styleNode = getParagraphStyleElement(styleName), - op, setProperties, attributes, i; - - setProperties = formatting.getStyleAttributes(styleNode); - // copy any attributes directly on the style - attributes = styleNode.attributes; - for (i = 0; i < attributes.length; i += 1) { - // skip... - // * style:display-name -> not copied, set to new string below - // * style:name -> not copied, set from op by styleName property - // * style:family -> "paragraph" always, set by op - if (!/^(style:display-name|style:name|style:family)/.test(attributes[i].name)) { - setProperties[attributes[i].name] = attributes[i].value; - } - } - - setProperties['style:display-name'] = newStyleDisplayName; - - op = new ops.OpAddStyle(); - op.init({ - memberid: localMemberId, - styleName: newStyleName, - styleFamily: 'paragraph', - setProperties: setProperties - }); - session.enqueue([op]); - - return newStyleName; - }; - - this.deleteStyle = function (styleName) { - var op; - op = new ops.OpRemoveStyle(); - op.init({ - memberid: localMemberId, - styleName: styleName, - styleFamily: 'paragraph' - }); - session.enqueue([op]); - }; - - /** - * Returns an array of the declared fonts in the ODF document, - * with 'duplicates' like Arial1, Arial2, etc removed. The alphabetically - * first font name for any given family is kept. - * The elements of the array are objects containing the font's name and - * the family. - * @return {Array.} - */ - this.getDeclaredFonts = function () { - var fontMap = formatting.getFontMap(), - usedFamilies = [], - array = [], - sortedNames, - key, - value, - i; - - // Sort all the keys in the font map alphabetically - sortedNames = Object.keys(fontMap); - sortedNames.sort(); - - for (i = 0; i < sortedNames.length; i += 1) { - key = sortedNames[i]; - value = fontMap[key]; - - // Use the font declaration only if the family is not already used. - // Therefore we are able to discard the alphabetic successors of the first - // font name. - if (usedFamilies.indexOf(value) === -1) { - array.push({ - name: key, - family: value - }); - if (value) { - usedFamilies.push(value); - } - } - } - - return array; - }; - - this.getSelectedHyperlinks = function () { - var cursor = odtDocument.getCursor(localMemberId); - // no own cursor yet/currently added? - if (!cursor) { - return []; - } - return odfUtils.getHyperlinkElements(cursor.getSelectedRange()); - }; - - this.getSelectedRange = function () { - var cursor = odtDocument.getCursor(localMemberId); - return cursor && cursor.getSelectedRange(); - }; - - function undoStackModified(e) { - self.emit(EditorSession.signalUndoStackChanged, e); - } - - this.undo = function () { - self.sessionController.undo(); - }; - - this.redo = function () { - self.sessionController.redo(); - }; - - /** - * @param {!string} memberId - * @return {?ops.Member} - */ - this.getMember = function (memberId) { - return odtDocument.getMember(memberId); - }; - - /** - * @param {!function(!Object=)} callback passing an error object in case of error - * @return {undefined} - */ - function destroy(callback) { - var head = document.getElementsByTagName('head')[0], - eventManager = self.sessionController.getEventManager(); - - head.removeChild(fontStyles); - - odtDocument.unsubscribe(ops.Document.signalMemberAdded, onMemberAdded); - odtDocument.unsubscribe(ops.Document.signalMemberUpdated, onMemberUpdated); - odtDocument.unsubscribe(ops.Document.signalMemberRemoved, onMemberRemoved); - odtDocument.unsubscribe(ops.Document.signalCursorAdded, onCursorAdded); - odtDocument.unsubscribe(ops.Document.signalCursorRemoved, onCursorRemoved); - odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorMoved); - odtDocument.unsubscribe(ops.OdtDocument.signalCommonStyleCreated, onStyleCreated); - odtDocument.unsubscribe(ops.OdtDocument.signalCommonStyleDeleted, onStyleDeleted); - odtDocument.unsubscribe(ops.OdtDocument.signalParagraphStyleModified, onParagraphStyleModified); - odtDocument.unsubscribe(ops.OdtDocument.signalParagraphChanged, trackCurrentParagraph); - odtDocument.unsubscribe(ops.OdtDocument.signalUndoStackChanged, undoStackModified); - - eventManager.unsubscribe("mousemove", hyperlinkTooltipView.showTooltip); - eventManager.unsubscribe("mouseout", hyperlinkTooltipView.hideTooltip); - delete self.sessionView; - delete self.sessionController; - callback(); - } - - /** - * @param {!function(!Error=)} callback passing an error object in case of error - * @return {undefined} - */ - this.destroy = function(callback) { - var cleanup = [ - self.sessionView.destroy, - caretManager.destroy, - selectionViewManager.destroy, - self.sessionController.destroy, - hyperlinkTooltipView.destroy, - odfFieldView.destroy, - destroy - ]; - - core.Async.destroyAll(cleanup, callback); - }; - - function init() { - var head = document.getElementsByTagName('head')[0], - odfCanvas = session.getOdtDocument().getOdfCanvas(), - eventManager; - - // TODO: fonts.css should be rather done by odfCanvas, or? - fontStyles.type = 'text/css'; - fontStyles.media = 'screen, print, handheld, projection'; - fontStyles.appendChild(document.createTextNode(fontsCSS)); - head.appendChild(fontStyles); - - odfFieldView = new gui.OdfFieldView(odfCanvas); - odfFieldView.showFieldHighlight(); - self.sessionController = new gui.SessionController(session, localMemberId, shadowCursor, { - annotationsEnabled: config.annotationsEnabled, - directTextStylingEnabled: config.directTextStylingEnabled, - directParagraphStylingEnabled: config.directParagraphStylingEnabled - }); - sessionConstraints = self.sessionController.getSessionConstraints(); - - eventManager = self.sessionController.getEventManager(); - hyperlinkTooltipView = new gui.HyperlinkTooltipView(odfCanvas, - self.sessionController.getHyperlinkClickHandler().getModifier); - eventManager.subscribe("mousemove", hyperlinkTooltipView.showTooltip); - eventManager.subscribe("mouseout", hyperlinkTooltipView.hideTooltip); - - caretManager = new gui.CaretManager(self.sessionController, odfCanvas.getViewport()); - selectionViewManager = new gui.SelectionViewManager(gui.SvgSelectionView); - self.sessionView = new gui.SessionView(config.viewOptions, localMemberId, session, sessionConstraints, caretManager, selectionViewManager); - self.availableFonts = getAvailableFonts(); - selectionViewManager.registerCursor(shadowCursor, true); - - // Session Constraints can be applied once the controllers are instantiated. - if (config.reviewModeEnabled) { - // Disallow deleting other authors' annotations. - sessionConstraints.setState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN, true); - sessionConstraints.setState(gui.CommonConstraints.EDIT.REVIEW_MODE, true); - } - - // Custom signals, that make sense in the Editor context. We do not want to expose webodf's ops signals to random bits of the editor UI. - odtDocument.subscribe(ops.Document.signalMemberAdded, onMemberAdded); - odtDocument.subscribe(ops.Document.signalMemberUpdated, onMemberUpdated); - odtDocument.subscribe(ops.Document.signalMemberRemoved, onMemberRemoved); - odtDocument.subscribe(ops.Document.signalCursorAdded, onCursorAdded); - odtDocument.subscribe(ops.Document.signalCursorRemoved, onCursorRemoved); - odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorMoved); - odtDocument.subscribe(ops.OdtDocument.signalCommonStyleCreated, onStyleCreated); - odtDocument.subscribe(ops.OdtDocument.signalCommonStyleDeleted, onStyleDeleted); - odtDocument.subscribe(ops.OdtDocument.signalParagraphStyleModified, onParagraphStyleModified); - odtDocument.subscribe(ops.OdtDocument.signalParagraphChanged, trackCurrentParagraph); - odtDocument.subscribe(ops.OdtDocument.signalUndoStackChanged, undoStackModified); - } - - init(); - }; - - /**@const*/EditorSession.signalMemberAdded = "memberAdded"; - /**@const*/EditorSession.signalMemberUpdated = "memberUpdated"; - /**@const*/EditorSession.signalMemberRemoved = "memberRemoved"; - /**@const*/EditorSession.signalCursorAdded = "cursorAdded"; - /**@const*/EditorSession.signalCursorRemoved = "cursorRemoved"; - /**@const*/EditorSession.signalCursorMoved = "cursorMoved"; - /**@const*/EditorSession.signalParagraphChanged = "paragraphChanged"; - /**@const*/EditorSession.signalCommonStyleCreated = "styleCreated"; - /**@const*/EditorSession.signalCommonStyleDeleted = "styleDeleted"; - /**@const*/EditorSession.signalParagraphStyleModified = "paragraphStyleModified"; - /**@const*/EditorSession.signalUndoStackChanged = "signalUndoStackChanged"; - - return EditorSession; -})(""); - +this.OS.application.OpenPage.EditorSession=function(e){"use strict";runtime.loadClass("core.Async"),runtime.loadClass("core.DomUtils"),runtime.loadClass("odf.OdfUtils"),runtime.loadClass("ops.OdtDocument"),runtime.loadClass("ops.OdtStepsTranslator"),runtime.loadClass("ops.Session"),runtime.loadClass("odf.Namespaces"),runtime.loadClass("odf.OdfCanvas"),runtime.loadClass("odf.OdfUtils"),runtime.loadClass("gui.CaretManager"),runtime.loadClass("gui.Caret"),runtime.loadClass("gui.OdfFieldView"),runtime.loadClass("gui.SessionController"),runtime.loadClass("gui.SessionView"),runtime.loadClass("gui.HyperlinkTooltipView"),runtime.loadClass("gui.TrivialUndoManager"),runtime.loadClass("gui.SvgSelectionView"),runtime.loadClass("gui.SelectionViewManager"),runtime.loadClass("core.EventNotifier"),runtime.loadClass("gui.ShadowCursor"),runtime.loadClass("gui.CommonConstraints");var t=function e(t,n,i){var o,r,a,s,l,u,d,c,f=this,p=null,h=null,m=null,g=t.getOdtDocument(),b=odf.Namespaces.textns,y=document.createElement("style"),v=g.getFormatting(),S=core.DomUtils,C=odf.OdfUtils,N=new core.EventNotifier([e.signalMemberAdded,e.signalMemberUpdated,e.signalMemberRemoved,e.signalCursorAdded,e.signalCursorMoved,e.signalCursorRemoved,e.signalParagraphChanged,e.signalCommonStyleCreated,e.signalCommonStyleDeleted,e.signalParagraphStyleModified,e.signalUndoStackChanged]),x=new gui.ShadowCursor(g),w=core.StepDirection.NEXT;function E(){var t,n;if((t=p.getAttributeNS(b,"style-name"))!==m){if(m=t,!(n=v.getFirstCommonParentStyleNameOrSelf(t)))return h=t=m="",void f.emit(e.signalParagraphChanged,{type:"style",node:p,styleName:h});n!==h&&(h=n,f.emit(e.signalParagraphChanged,{type:"style",node:p,styleName:h}))}}function T(e){var t,n,i="";for(n=0;n0&&t.enqueue(r)},this.insertTable=function(e,i,o,r,a){var s=new ops.OpInsertTable;s.init({memberid:n,position:f.getCursorPosition(),initialRows:e,initialColumns:i,tableStyleName:o,tableColumnStyleName:r,tableCellStyleMatrix:a}),t.enqueue([s])},this.getParagraphStyleElement=U,this.isStyleUsed=function(e){return v.isStyleUsed(e)},this.getParagraphStyleAttributes=function(e){var t=U(e),n=""===e;return t?v.getInheritedStyleAttributes(t,n):null},this.updateParagraphStyle=function(e,i,o){var r;(r=new ops.OpUpdateParagraphStyle).init({memberid:n,styleName:e,setProperties:i,removedProperties:o||{}}),t.enqueue([r])},this.cloneParagraphStyle=function(e,i){var o,r,a,s,l=function(e){var t,i=0,o=T(n),r=T(e);for(t=r+"_"+o;v.hasParagraphStyle(t);)t=r+"_"+i+"_"+o,i+=1;return t}(i),u=U(e);for(r=v.getStyleAttributes(u),a=u.attributes,s=0;s
- +
diff --git a/OpenPage/build/release/OpenPage.zip b/OpenPage/build/release/OpenPage.zip new file mode 100644 index 0000000000000000000000000000000000000000..9c51df264a029e7c1ab05552551a7666f84d8e94 GIT binary patch literal 581961 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
HqRX7iA|+1Xi=R-LdA)P${gLy|W2%Y^58 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 Z-+wJ_nj|{kg$e?WmqU4U%N10i`+wICZI=K5 literal 0 HcmV?d00001 diff --git a/OpenPage/coffees/dialogs.coffee b/OpenPage/coffees/dialogs.coffee index e8f155b..eca18c1 100644 --- a/OpenPage/coffees/dialogs.coffee +++ b/OpenPage/coffees/dialogs.coffee @@ -1,43 +1,60 @@ class HyperLinkDialog extends this.OS.GUI.BasicDialog constructor: () -> - super "HyperLinkDialog", { - tags: [ - { tag: "afx-label", att: 'text="__(Text)" data-height="23" class="header"' }, - { tag: "input", att: 'data-height="30"' }, - { tag: "afx-label", att: 'text="__(Link)" data-height="23" class="header"' }, - { tag: "input", att: 'data-height="30"' }, - { tag: "div", att: ' data-height="5"' } - ], - width: 350, - height: 150, - resizable: false, - buttons: [ - { - label: "Ok", onclick: (d) -> - data = - text: (d.find "content1").value, - link: (d.find "content3").value, - readonly: d.data.readonly, - action: d.data.action - d.handler data if d.handler - d.quit() - }, - { label: "__(Cancel)", onclick: (d) -> d.quit() } - ], - filldata: (d) -> - return unless d.data - (d.find "content1").value = d.data.text - (d.find "content3").value = d.data.link - $(d.find "content1").prop('disabled', d.data.readonly) - } - -class FormatDialog extends this.OS.GUI.BaseDialog - constructor: () -> - super "FormatDialog" - init: () -> - @_gui.htmlToScheme FormatDialog.scheme, @, @host + super "HyperLinkDialog", HyperLinkDialog.scheme + main: () -> + super.main() + txtText = @find "txtText" + txtLink = @find "txtLink" + if @data and @data.data + txtText.value = @data.data.text + txtLink.value = @data.data.link + $(txtText).prop('disabled', @data.data.readonly) + + @find("btnCancel").onbtclick = (e) => + @quit() + + @find("btnOk").onbtclick = (e) => + data = + text: txtText.value, + link: txtLink.value, + readonly: @data.data.readonly, + action: @data.data.action + @handle data if @handle + @quit() + +HyperLinkDialog.scheme = """ + + + +
+ +
+ + + + +
+ +
+ + +
+ + +
+ + + +""" + +class FormatDialog extends this.OS.GUI.BasicDialog + constructor: () -> + super "FormatDialog", FormatDialog.scheme + + main: () -> + super.main() @ui = aligment: left:@find("swleft"), @@ -99,64 +116,68 @@ class FormatDialog extends this.OS.GUI.BaseDialog size: 12 initUIEvent: () -> - me = @ - set = (e, o, k ,f) -> - me.ui[o][k].set e, (r) -> + + set = (e, o, k ,f) => + @ui[o][k][e] = (r) => v = r v = f r if f - me.currentStyle[o][k] = v - me.previewStyle() + @currentStyle[o][k] = v + @previewStyle() for k,v of @ui.aligment - set "onchange", "aligment", k, ((e) -> e.data) + set "onswchange", "aligment", k, ((e) => e.data) for k,v of @ui.spacing - set "onchange", "spacing", k + set "onvaluechange", "spacing", k, ((e) => e.data) for k,v of @ui.padding - set "onchange", "padding", k + set "onvaluechange", "padding", k, ((e) => e.data) for k,v of @ui.style - set "onchange", "style", k, ((e) -> e.data) if k isnt "color" and k isnt "bgcolor" - set "onchange", "font", "size" - $(@ui.style.color).click (e) -> - me.openDialog "ColorPickerDialog", (d) -> - me.currentStyle.style.color = d - me.previewStyle() - $(@ui.style.bgcolor).click (e) -> - me.openDialog "ColorPickerDialog", (d) -> - me.currentStyle.style.bgcolor = d - me.previewStyle() + set "onswchange", "style", k, ((e) => e.data) if k isnt "color" and k isnt "bgcolor" + set "onvaluechange", "font", "size" + $(@ui.style.color).click (e) => + @openDialog "ColorPickerDialog" + .then (d) => + @currentStyle.style.color = d + @previewStyle() + $(@ui.style.bgcolor).click (e) => + @openDialog "ColorPickerDialog" + .then (d) => + @currentStyle.style.bgcolor = d + @previewStyle() #font - @ui.font.family.set "items", @data.fonts if @data and @data.fonts - set "onlistselect", "font", "family", ( (e) -> e.data) + @ui.font.family.data = @data.data.fonts if @data.data and @data.data.fonts + set "onlistselect", "font", "family", ( (e) => e.data.item.data) #format list - @ui.formats.set "selected", -1 - @ui.formats.set "items", @data.formats if @data and @data.formats - @ui.formats.set "onlistselect", (e) -> - me.fromODFStyleFormat e.data - @ui.formats.set "selected", 0 - (@find "btok").set "onbtclick", (e) -> - me.saveCurrentStyle() + @ui.formats.selected = -1 + @ui.formats.data = @data.data.formats if @data.data and @data.data.formats + @ui.formats.onlistselect = (e) => + @fromODFStyleFormat e.data.item.data + @ui.formats.selected = 0 + (@find "btok").onbtclick = (e) => + @saveCurrentStyle() - (@find "btx").set "onbtclick", (e) -> - me.quit() + (@find "btx").onbtclick = (e) => + @quit() - (@find "bt-clone").set "onbtclick", (e) -> - me.clone() + (@find "bt-clone").onbtclick = (e) => + @clone() clone: ()-> - me = @ - selected = @ui.formats.get "selected" + + selected = @ui.formats.selectedItem return unless selected - @openDialog "PromptDialog", (d) -> - return me.notify __("Abort: no style name is specified") unless d and d.trim() isnt "" - newstyle = me.parent.editorSession.cloneParagraphStyle selected.name, d - me.ui.formats.push { text:d, name: newstyle } - me.ui.formats.set "selected", ((me.ui.formats.get 'count') - 1) - me.notify __("New style: {0} added", newstyle) - , __("Clone style: {0}", selected.text), { label: __("New style name:") } + selected = selected.data + @openDialog "PromptDialog", { title: __("Clone style: {0}", selected.text), label: __("New style name:") } + .then (d) => + return @notify __("Abort: no style name is specified") unless d and d.trim() isnt "" + newstyle = @parent.editorSession.cloneParagraphStyle selected.name, d + @ui.formats.push { text:d, name: newstyle } + @ui.formats.selected = (@ui.formats.data.length - 1) + @notify __("New style: {0} added", newstyle) saveCurrentStyle: () -> - selected = @ui.formats.get "selected" + selected = @ui.formats.selectedItem return unless selected + selected = selected.data odfs = "style:paragraph-properties": "fo:margin-top": @currentStyle.spacing.top + "mm" @@ -181,11 +202,11 @@ class FormatDialog extends this.OS.GUI.BaseDialog @notify __("Paragraph format [{0}] is saved", selected.text) fromODFStyleFormat: (odfs) -> - me = @ + @initStyleObject() cssUnits = new core.CSSUnits() - findFont = (name) -> - items = me.ui.font.family.get "items" + findFont = (name) => + items = @ui.font.family.data item = v for v in items when v.text is name return undefined unless item return item @@ -216,34 +237,34 @@ class FormatDialog extends this.OS.GUI.BaseDialog previewStyle: () -> #console.log "previewing" # reset ui - @ui.aligment.left.set "swon", @currentStyle.aligment.left - @ui.aligment.right.set "swon", @currentStyle.aligment.right - @ui.aligment.center.set "swon", @currentStyle.aligment.center - @ui.aligment.justify.set "swon", @currentStyle.aligment.justify - @ui.spacing.left.set "value", @currentStyle.spacing.left - @ui.spacing.right.set "value", @currentStyle.spacing.right - @ui.spacing.top.set "value", @currentStyle.spacing.top - @ui.spacing.bottom.set "value", @currentStyle.spacing.bottom - @ui.spacing.lineheight.set "value", @currentStyle.spacing.lineheight + @ui.aligment.left.swon = @currentStyle.aligment.left + @ui.aligment.right.swon = @currentStyle.aligment.right + @ui.aligment.center.swon = @currentStyle.aligment.center + @ui.aligment.justify.swon = @currentStyle.aligment.justify + @ui.spacing.left.value = @currentStyle.spacing.left + @ui.spacing.right.value = @currentStyle.spacing.right + @ui.spacing.top.value = @currentStyle.spacing.top + @ui.spacing.bottom.value = @currentStyle.spacing.bottom + @ui.spacing.lineheight.value = @currentStyle.spacing.lineheight - @ui.padding.left.set "value", @currentStyle.padding.left - @ui.padding.right.set "value", @currentStyle.padding.right - @ui.padding.top.set "value", @currentStyle.padding.top - @ui.padding.bottom.set "value", @currentStyle.padding.bottom + @ui.padding.left.value = @currentStyle.padding.left + @ui.padding.right.value = @currentStyle.padding.right + @ui.padding.top.value = @currentStyle.padding.top + @ui.padding.bottom.value = @currentStyle.padding.bottom - @ui.style.bold.set "swon", @currentStyle.style.bold - @ui.style.italic.set "swon", @currentStyle.style.italic - @ui.style.underline.set "swon", @currentStyle.style.underline - @ui.font.size.set "value", @currentStyle.font.size + @ui.style.bold.swon = @currentStyle.style.bold + @ui.style.italic.swon = @currentStyle.style.italic + @ui.style.underline.swon = @currentStyle.style.underline + @ui.font.size.value = @currentStyle.font.size #console.log @currentStyle if @currentStyle.font.family - items = @ui.font.family.get "items" + items = @ui.font.family.data item = i for v, i in items when v.text is @currentStyle.font.family.text - @ui.font.family.set "selected", item if item >= 0 + @ui.font.family.selected = item if item >= 0 $(@ui.style.color).css "background-color", if @currentStyle.style.color then @currentStyle.style.color.hex else "#000000" - $(@ui.style.bgcolor).css "background-color", if @currentStyle.style.bgcolor then @currentStyle.style.bgcolor.hex else "white" + $(@ui.style.bgcolor).css "background-color", if @currentStyle.style.bgcolor then @currentStyle.style.bgcolor.hex else "transparent" # set the preview css el = $ @preview el.css "text-align", if @currentStyle.aligment.selected then @currentStyle.aligment.selected else "left" @@ -301,16 +322,16 @@ FormatDialog.scheme = """
- +
- +
- +
- +
@@ -319,16 +340,16 @@ FormatDialog.scheme = """
- +
- +
- +
- +
@@ -358,7 +379,7 @@ FormatDialog.scheme = """
- +
@@ -369,7 +390,7 @@ FormatDialog.scheme = """
-
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.

diff --git a/OpenPage/coffees/main.coffee b/OpenPage/coffees/main.coffee index 4a11b9c..4bc4ffd 100644 --- a/OpenPage/coffees/main.coffee +++ b/OpenPage/coffees/main.coffee @@ -1,4 +1,4 @@ -class OpenPage extends this.OS.GUI.BaseApplication +class OpenPage extends this.OS.application.BaseApplication constructor: ( args ) -> super "OpenPage", args @@ -7,52 +7,55 @@ class OpenPage extends this.OS.GUI.BaseApplication #if not OpenPage.EditorSession # require ["webodf/editor/EditorSession"], (ES) -> # OpenPage.EditorSession = ES - me =@ + @eventSubscriptions = new core.EventSubscriptions() @initToolbox() @userid = "#{@systemsetting.user.username}@#{@pid}" - #file = "home://welcome.odt" + #file = "home://welco@odt" #file = "#{@_api.handler.get}/home://welcome.odt" #@canvas.load file #odfContainer = new odf.OdfContainer file, (c) -> - # me.canvas.setOdfContainer c, false + # @canvas.setOdfContainer c, false @currentStyle = "" - if @args and @args.length > 0 then @open @args[0] else @newdoc() + if @args and @args.length > 0 then @open @args[0].path else @newdoc() @resource = fonts: [] formats: [] - @bindKey "ALT-N", () -> me.actionFile "#{me.name}-New" - @bindKey "ALT-O", () -> me.actionFile "#{me.name}-Open" - @bindKey "CTRL-S", () -> me.actionFile "#{me.name}-Save" - @bindKey "ALT-W", () -> me.actionFile "#{me.name}-Saveas" + @bindKey "ALT-N", () => @actionFile "#{@name}-New" + @bindKey "ALT-O", () => @actionFile "#{@name}-Open" + @bindKey "CTRL-S", () => @actionFile "#{@name}-Save" + @bindKey "ALT-W", () => @actionFile "#{@name}-Saveas" menu: () -> - me = @ + menu = [{ text: "__(File)", - child: [ + nodes: [ { text: "__(New)", dataid: "#{@name}-New", shortcut: "A-N" }, { text: "__(Open)", dataid: "#{@name}-Open", shortcut: "A-O" }, { text: "__(Save)", dataid: "#{@name}-Save", shortcut: "C-S" }, { text: "__(Save as)", dataid: "#{@name}-Saveas", shortcut: "A-W" } ], - onmenuselect: (e) -> me.actionFile e.item.data.dataid + onchildselect: (e) => @actionFile e.data.item.data.dataid }] menu actionFile: (e) -> - me = @ - saveas = () -> - me.openDialog "FileDiaLog", (d, n, p) -> - me.currfile.setPath "#{d}/#{n}" - me.save() - , __("Save as"), { file: me.currfile } + + saveas = () => + @openDialog "FileDialog", { title: __("Save as"), file: @currfile } + .then (f) => + d = f.file.path.asFileHandle() + d = d.parent() if f.file.type is "file" + @currfile.setPath "#{d.path}/#{f.name}" + @save() switch e when "#{@name}-Open" - @openDialog "FileDiaLog", ( d, f , p) -> - me.open p - , __("Open file"), { mimes: me.meta().mimes } + @openDialog "FileDialog", { title: __("Open file"), mimes: @meta().mimes } + .then (f) => + @open f.file.path + when "#{@name}-Save" #@currfile.cache = @editor.value() return @save() if @currfile.basename @@ -68,39 +71,41 @@ class OpenPage extends this.OS.GUI.BaseApplication @open blank, true open: (p,b) -> - me = @ + @pathAsDataURL(p) - .then (r) -> - me.closeDocument() if me.editorSession - me.initCanvas() - OdfContainer = new odf.OdfContainer r.data, (c) -> - me.canvas.setOdfContainer c, false - return me.currfile = "Untitled".asFileHandler() if b - if me.currfile then me.currfile.setPath p else me.currfile = p.asFileHandler() - me.scheme.set "apptitle", me.currfile.basename - me.notify __("File {0} opened", p) - .catch (e) -> - me.error __("Problem read file {0}", e) + .then (r) => + @closeDocument() if @editorSession + @initCanvas() + OdfContainer = new odf.OdfContainer r.data, (c) => + @canvas.setOdfContainer c, false + return @currfile = "Untitled".asFileHandle() if b + if @currfile then @currfile.setPath p else @currfile = p.asFileHandle() + @scheme.apptitle = @currfile.basename + @notify __("File {0} opened", p) + .catch (e) => + @error __("Problem read file {0}", e.toString()), e save: () -> - me = @ + return unless @editorSession container = @canvas.odfContainer() return @error __("No document container found") unless container - container.createByteArray (ba) -> + container.createByteArray (ba) => # create blob - me.currfile.cache = new Blob [ba], { type: "application/vnd.oasis.opendocument.text" } - me.currfile.write "application/vnd.oasis.opendocument.text", (r) -> - return me.error __("Cannot save file: {0}", r.error) if r.error - me.notify __("File {0} saved", me.currfile.basename) - me.scheme.set "apptitle", me.currfile.basename - me.currfile.dirty = false - me.editorFocus() - , (err) -> - @error __("Cannot create byte array from container: {0}", err|| "") + @currfile.cache = new Blob [ba], { type: "application/vnd.oasis.opendocument.text" } + @currfile.write "application/vnd.oasis.opendocument.text" + .then (r) => + @notify __("File {0} saved", @currfile.basename) + @scheme.apptitle = @currfile.basename + @currfile.dirty = false + @editorFocus() + .catch (e) => + @error __("Cannot save file: {0}", e.toString()), e + , (err) => + @error __("Cannot create byte array from container: {0}", err.toString() || ""), err initToolbox: () -> - me = @ + @basictool = undo: @find("btundo"), redo: @find("btredo"), @@ -124,76 +129,77 @@ class OpenPage extends this.OS.GUI.BaseApplication zoom: @find("slzoom") format: @find("btformat") - fn = (name, el) -> + fn = (name, el) => if name is "fonts" or name is "styles" act = "onlistselect" else if name is "fontsize" or name is "zoom" - act = "onchange" + act = "onvaluechange" else act = "onbtclick" - el.set act, (e) -> - return unless me.directFormattingCtl - return unless me[name] - me[name](e) - me.editorFocus() + el[act] = (e) => + return unless @directFormattingCtl + return unless @[name] + @[name](e) + @editorFocus() for name, el of @basictool fn name, el - (@find "btzoomfix").set "onbtclick", (e) -> me.zoom 100 - @basictool.zoom.set "onchanging", (e) -> - zlb = me.find "lbzoom" - zlb.set "text", Math.floor(e) + "%" + (@find "btzoomfix").onbtclick = (e) => @zoom { data: 100 } + @basictool.zoom.onvaluechanging = (e) => + zlb = @find "lbzoom" + zlb.text = Math.floor(e.data) + "%" initCanvas: () -> el = @find "odfcanvas" - me = @ + el.setAttribute "translate", "no" el.classList.add "notranslate" @canvas = new odf.OdfCanvas(el) - @documentChanged = (e) -> - return if me.currfile.dirty - me.currfile.dirty = true - me.scheme.set "apptitle", me.currfile.basename + "*" + @documentChanged = (e) => + return if @currfile.dirty + @currfile.dirty = true + @scheme.apptitle = @currfile.basename + "*" #console.log e - @metaChanged = (e) -> - return if me.currfile.dirty - me.currfile.dirty = true - me.scheme.set "apptitle", me.currfile.basename + "*" + @metaChanged = (e) => + return if @currfile.dirty + @currfile.dirty = true + @scheme.apptitle = @currfile.basename + "*" #console.log e - @textStylingChanged = (e) -> - me.updateToolbar e - @paragrahStyleChanged = (e) -> + @textStylingChanged = (e) => + @updateToolbar e + @paragrahStyleChanged = (e) => return unless e.type is "style" - items = me.basictool.styles.get "items" + items = @basictool.styles.data item = i for v, i in items when v.name is e.styleName - me.currentStyle = e.styleName - me.basictool.styles.set "selected", item + return unless item isnt undefined + @currentStyle = e.styleName + @basictool.styles.selected = item - @styleAdded = (e) -> + @styleAdded = (e) => return unless e.family is 'paragraph' - items = me.basictool.styles.get "items" + items = @basictool.styles.data item = v for v in items when v.name is e.name return if item stylens = "urn:oasis:names:tc:opendocument:xmlns:style:1.0" - el = me.editorSession.getParagraphStyleElement e.name + el = @editorSession.getParagraphStyleElement e.name dtext = el.getAttributeNS stylens, 'display-name' - me.basictool.styles.push { text: dtext , name: e.name }, true - #me.resource.formats.push {text: dtext, name:e.name} + @basictool.styles.push { text: dtext , name: e.name }, true + #@resource.formats.push {text: dtext, name:e.name} - @updateSlider = (v) -> + @updateSlider = (v) => value = Math.floor v*100 - me.basictool.zoom.set "value", value - zlb = me.find "lbzoom" - zlb.set "text", value+"%" - #me.canvas.enableAnnotations true, true - @canvas.addListener "statereadychange", ()-> - me.session = new ops.Session(me.canvas) + @basictool.zoom.value = value + zlb = @find "lbzoom" + zlb.text = value + "%" + @canvas.enableAnnotations true, true + @canvas.addListener "statereadychange", ()=> + @session = new ops.Session(@canvas) viewOptions = editInfoMarkersInitiallyVisible: false, caretAvatarsInitiallyVisible: false, caretBlinksOnRangeSelect: true - me.editorSession = new OpenPage.EditorSession(me.session,me.userid, { + @editorSession = new OpenPage.EditorSession(@session,@userid, { viewOptions: viewOptions, directTextStylingEnabled: true, directParagraphStylingEnabled: true, @@ -205,112 +211,121 @@ class OpenPage extends this.OS.GUI.BaseApplication zoomingEnabled: true, reviewModeEnabled: false }) - me.initFontList me.editorSession.getDeclaredFonts() - me.initStyles me.editorSession.getAvailableParagraphStyles() + @initFontList @editorSession.getDeclaredFonts() + @initStyles @editorSession.getAvailableParagraphStyles() #fix annotation problem on canvas #console.log $("office:body").css "background-color", "red" # basic format - me.directFormattingCtl = me.editorSession.sessionController.getDirectFormattingController() - me.directFormattingCtl.subscribe gui.DirectFormattingController.textStylingChanged, me.textStylingChanged - me.directFormattingCtl.subscribe gui.DirectFormattingController.paragraphStylingChanged, me.textStylingChanged - me.editorSession.subscribe OpenPage.EditorSession.signalParagraphChanged, me.paragrahStyleChanged + @directFormattingCtl = @editorSession.sessionController.getDirectFormattingController() + @directFormattingCtl.subscribe gui.DirectFormattingController.textStylingChanged, @textStylingChanged + @directFormattingCtl.subscribe gui.DirectFormattingController.paragraphStylingChanged, @textStylingChanged + @editorSession.subscribe OpenPage.EditorSession.signalParagraphChanged, @paragrahStyleChanged # hyper link controller - me.hyperlinkController = me.editorSession.sessionController.getHyperlinkController() - me.eventSubscriptions.addFrameSubscription me.editorSession, OpenPage.EditorSession.signalCursorMoved, ()-> me.updateHyperlinkButtons() - me.eventSubscriptions.addFrameSubscription me.editorSession, OpenPage.EditorSession.signalParagraphChanged, ()-> me.updateHyperlinkButtons() - me.eventSubscriptions.addFrameSubscription me.editorSession, OpenPage.EditorSession.signalParagraphStyleModified, ()-> me.updateHyperlinkButtons() + @hyperlinkController = @editorSession.sessionController.getHyperlinkController() + @eventSubscriptions.addFrameSubscription @editorSession, OpenPage.EditorSession.signalCursorMoved, ()=> @updateHyperlinkButtons() + @eventSubscriptions.addFrameSubscription @editorSession, OpenPage.EditorSession.signalParagraphChanged, ()=> @updateHyperlinkButtons() + @eventSubscriptions.addFrameSubscription @editorSession, OpenPage.EditorSession.signalParagraphStyleModified, ()=> @updateHyperlinkButtons() #annotation controller - me.annotationController = me.editorSession.sessionController.getAnnotationController() + @annotationController = @editorSession.sessionController.getAnnotationController() #image controller - me.imageController = me.editorSession.sessionController.getImageController() + @imageController = @editorSession.sessionController.getImageController() #imageController.subscribe(gui.ImageController.enabledChanged, enableButtons) #text controller - me.textController = me.editorSession.sessionController.getTextController() + @textController = @editorSession.sessionController.getTextController() # zoom controller - me.zoomHelper = me.editorSession.getOdfCanvas().getZoomHelper() - me.zoomHelper.subscribe gui.ZoomHelper.signalZoomChanged, me.updateSlider - me.updateSlider me.zoomHelper.getZoomLevel() + @zoomHelper = @editorSession.getOdfCanvas().getZoomHelper() + @zoomHelper.subscribe gui.ZoomHelper.signalZoomChanged, @updateSlider + @updateSlider @zoomHelper.getZoomLevel() # format controller - me.editorSession.subscribe OpenPage.EditorSession.signalCommonStyleCreated, me.styleAdded + @editorSession.subscribe OpenPage.EditorSession.signalCommonStyleCreated, @styleAdded - me.editorSession.sessionController.setUndoManager new gui.TrivialUndoManager() - me.editorSession.sessionController.getUndoManager().subscribe gui.UndoManager.signalDocumentModifiedChanged, me.documentChanged - me.editorSession.sessionController.getMetadataController().subscribe gui.MetadataController.signalMetadataChanged, me.metaChanged + @editorSession.sessionController.setUndoManager new gui.TrivialUndoManager() + @editorSession.sessionController.getUndoManager().subscribe gui.UndoManager.signalDocumentModifiedChanged, @documentChanged + @editorSession.sessionController.getMetadataController().subscribe gui.MetadataController.signalMetadataChanged, @metaChanged op = new ops.OpAddMember() op.init { - memberid: me.userid, + memberid: @userid, setProperties:{ - "fullName": me.userid, + "fullName": @userid, "color": "blue" } } - me.session.enqueue([op]) - me.editorSession.sessionController.insertLocalCursor() - me.editorSession.sessionController.startEditing() - #console.log me.editorSession.getDeclaredFonts() + @session.enqueue([op]) + @editorSession.sessionController.insertLocalCursor() + @editorSession.sessionController.startEditing() + @fontsize {data: @basictool.fontsize.value} + #console.log @editorSession.getDeclaredFonts() # initFontList: (list) -> v.text = v.name for v in list + @resource.fonts = [] @resource.fonts.push { text: v.text, name: v.family } for v in list - @basictool.fonts.set "items", list + @basictool.fonts.data = list initStyles: (list) -> list.unshift {name:"", displayName: 'Default style' } v.text = v.displayName for v in list @resource.formats.push { text: v.text, name: v.name } for v in list - @basictool.styles.set "items", list + @basictool.styles.data = list updateToolbar: (changes) -> # basic style - (@basictool.bold.set "selected", changes.isBold) if changes.hasOwnProperty 'isBold' - (@basictool.italic.set "selected", changes.isItalic) if changes.hasOwnProperty 'isItalic' - (@basictool.underline.set "selected", changes.hasUnderline) if changes.hasOwnProperty 'hasUnderline' - (@basictool.strike.set "selected", changes.hasStrikeThrough) if changes.hasOwnProperty 'hasStrikeThrough' - (@basictool.fontsize.set "value", changes.fontSize) if changes.hasOwnProperty "fontSize" + (@basictool.bold.selected = changes.isBold) if changes.hasOwnProperty 'isBold' + (@basictool.italic.selected = changes.isItalic) if changes.hasOwnProperty 'isItalic' + (@basictool.underline.selected = changes.hasUnderline) if changes.hasOwnProperty 'hasUnderline' + (@basictool.strike.selected = changes.hasStrikeThrough) if changes.hasOwnProperty 'hasStrikeThrough' + if changes.hasOwnProperty "fontSize" + size = changes.fontSize + size = 12 if size is undefined + if @basictool.fontsize.value isnt size + @basictool.fontsize.value = size + @selectFont changes.fontName if changes.hasOwnProperty "fontName" #pharagraph style - @basictool.al.set "selected", changes.isAlignedLeft if changes.hasOwnProperty "isAlignedLeft" - @basictool.ar.set "selected", changes.isAlignedRight if changes.hasOwnProperty "isAlignedRight" - @basictool.ac.set "selected", changes.isAlignedCenter if changes.hasOwnProperty "isAlignedCenter" - @basictool.aj.set "selected", changes.isAlignedJustified if changes.hasOwnProperty "isAlignedJustified" + @basictool.al.selected = changes.isAlignedLeft if changes.hasOwnProperty "isAlignedLeft" + @basictool.ar.selected = changes.isAlignedRight if changes.hasOwnProperty "isAlignedRight" + @basictool.ac.selected = changes.isAlignedCenter if changes.hasOwnProperty "isAlignedCenter" + @basictool.aj.selected = changes.isAlignedJustified if changes.hasOwnProperty "isAlignedJustified" updateHyperlinkButtons: (e) -> selectedLinks = @editorSession.getSelectedHyperlinks() - @basictool.unlink.set "enable", selectedLinks.length > 0 + @basictool.unlink.enable = selectedLinks.length > 0 selectFont: (name) -> - items = @basictool.fonts.get "items" + items = @basictool.fonts.data item = i for v, i in items when v.name is name - @basictool.fonts.set "selected", item + return unless item isnt undefined + @basictool.fonts.selected = item editorFocus: () -> @editorSession.sessionController.getEventManager().focus() bold: (e) -> #console.log @, e - @directFormattingCtl.setBold (not @basictool.bold.get "selected") + @directFormattingCtl.setBold (not @basictool.bold.selected) italic: (e) -> - @directFormattingCtl.setItalic (not @basictool.italic.get "selected") + @directFormattingCtl.setItalic (not @basictool.italic.selected) underline: (e) -> - @directFormattingCtl.setHasUnderline (not @basictool.underline.get "selected") + @directFormattingCtl.setHasUnderline (not @basictool.underline.selected) strike: (e) -> - @directFormattingCtl.setHasStrikethrough (not @basictool.strike.get "selected") + @directFormattingCtl.setHasStrikethrough (not @basictool.strike.selected) fonts: (e) -> - @directFormattingCtl.setFontName e.data.name + @directFormattingCtl.setFontName e.data.item.data.name fontsize: (e) -> - @directFormattingCtl.setFontSize e + # present the value change from enter infinity loop + @directFormattingCtl.setFontSize e.data al: (e) -> @directFormattingCtl.alignParagraphLeft() @@ -335,7 +350,7 @@ class OpenPage extends this.OS.GUI.BaseApplication link: (e) -> # get the link first - me = @ + textSerializer = new odf.TextSerializer() selection = @editorSession.getSelectedRange() linksInSelection = @editorSession.getSelectedHyperlinks() @@ -356,23 +371,23 @@ class OpenPage extends this.OS.GUI.BaseApplication data.text = textSerializer.writeToString selection.cloneContents() else data.readonly = false - @openDialog new HyperLinkDialog(), (d) -> - selectionController = me.editorSession.sessionController.getSelectionController() + @openDialog new HyperLinkDialog(), {title: "__(Insert/edit link)", data: data} + .then (d) => + selectionController = @editorSession.sessionController.getSelectionController() if d.readonly # edit the existing link if d.action is "edit" selectedLinkRange = selection.cloneRange() selectedLinkRange.selectNode(linksInSelection[0]) selectionController.selectRange(selectedLinkRange, true) - me.hyperlinkController.removeHyperlinks() - me.hyperlinkController.addHyperlink d.link + @hyperlinkController.removeHyperlinks() + @hyperlinkController.addHyperlink d.link else - me.hyperlinkController.addHyperlink d.link, d.text - linksInSelection = me.editorSession.getSelectedHyperlinks() + @hyperlinkController.addHyperlink d.link, d.text + linksInSelection = @editorSession.getSelectedHyperlinks() selectedLinkRange = selection.cloneRange() selectedLinkRange.selectNode(linksInSelection[0]) selectionController.selectRange(selectedLinkRange, true) - , "__(Insert/edit link)", data unlink: (e) -> @hyperlinkController.removeHyperlinks() @@ -384,21 +399,22 @@ class OpenPage extends this.OS.GUI.BaseApplication @editorSession.redo() pathAsDataURL: (p) -> - return new Promise (resolve, error) -> - fp = p.asFileHandler() - fp.read (data) -> + return new Promise (resolve, error) => + fp = p.asFileHandle() + fp.read("binary").then (data) => blob = new Blob [data], { type: fp.info.mime } reader = new FileReader() - reader.onloadend = () -> - return error(p) if reader.readyState isnt 2 + reader.onloadend = () => + return error(@throwe __("Unable to load file {0}", p)) if reader.readyState isnt 2 resolve {data: reader.result, fp: fp } reader.readAsDataURL blob - , "binary" + .catch (e) => error __e e + ### if not isText else - fp.read (data) -> + fp.read (data) => # convert to base64 b64 = btoa data dataurl = "data:#{fp.info.mime};base64," + b64 @@ -406,43 +422,44 @@ class OpenPage extends this.OS.GUI.BaseApplication ### image: (e) -> - me = @ - @openDialog "FileDiaLog", (d, n, p) -> - me.pathAsDataURL(p) - .then (r) -> + + @openDialog "FileDialog", { title: __("Select image file"), mimes: ["image/.*"] } + .then (f) => + p = f.file.path + @pathAsDataURL(p) + .then (r) => hiddenImage = new Image() hiddenImage.style.position = "absolute" hiddenImage.style.left = "-99999px" document.body.appendChild hiddenImage - hiddenImage.onload = () -> + hiddenImage.onload = () => content = r.data.substring(r.data.indexOf(",") + 1) #insert image - me.textController.removeCurrentSelection() - me.imageController.insertImage r.fp.info.mime, content, hiddenImage.width, hiddenImage.height + @textController.removeCurrentSelection() + @imageController.insertImage r.fp.info.mime, content, hiddenImage.width, hiddenImage.height document.body.removeChild hiddenImage hiddenImage.src = r.data - .catch () -> - me.error __("Couldnt load image {0}", p) - , __("Select image file"), { mimes: ["image/.*"] } + .catch (e) => + @error __("Couldnt load image {0}", p), e styles: (e) -> - return if e.data.name is @currentStyle - @editorSession.setCurrentParagraphStyle e.data.name + return if e.data.item.data.name is @currentStyle + @editorSession.setCurrentParagraphStyle e.data.item.data.name zoom: (e) -> #console.log "zooming", e return unless @zoomHelper - @zoomHelper.setZoomLevel e/100.0 + @zoomHelper.setZoomLevel e.data/100.0 format: (e) -> - @openDialog new FormatDialog(), (d) -> + @openDialog new FormatDialog(), { title: __("Add/Modify paragraph format"), data: @resource } + .then (d) => return - , __("Add/Modify paragraph format"), @resource closeDocument: (f) -> # finish editing return unless @editorSession and @session - me = @ + @eventSubscriptions.unsubscribeAll() @editorSession.sessionController.endEditing() @editorSession.sessionController.removeLocalCursor() @@ -453,49 +470,49 @@ class OpenPage extends this.OS.GUI.BaseApplication } @session.enqueue [op] # close the session - @session.close (e) -> - return me.error __("Cannot close session {0}", e) if e - me.editorSession.sessionController.getMetadataController().unsubscribe gui.MetadataController.signalMetadataChanged, me.metaChanged - me.editorSession.sessionController.getUndoManager().unsubscribe gui.UndoManager.signalDocumentModifiedChanged, me.documentChanged - me.directFormattingCtl.unsubscribe gui.DirectFormattingController.textStylingChanged, me.textStylingChanged - me.directFormattingCtl.unsubscribe gui.DirectFormattingController.paragraphStylingChanged, me.textStylingChanged - me.editorSession.unsubscribe OpenPage.EditorSession.signalParagraphChanged, me.paragrahStyleChanged - me.zoomHelper.unsubscribe gui.ZoomHelper.signalZoomChanged, me.updateSlider - me.editorSession.unsubscribe OpenPage.EditorSession.signalCommonStyleCreated, me.styleAdded + @session.close (e) => + return @error __("Cannot close session {0}", e.toString()), e if e + @editorSession.sessionController.getMetadataController().unsubscribe gui.MetadataController.signalMetadataChanged, @metaChanged + @editorSession.sessionController.getUndoManager().unsubscribe gui.UndoManager.signalDocumentModifiedChanged, @documentChanged + @directFormattingCtl.unsubscribe gui.DirectFormattingController.textStylingChanged, @textStylingChanged + @directFormattingCtl.unsubscribe gui.DirectFormattingController.paragraphStylingChanged, @textStylingChanged + @editorSession.unsubscribe OpenPage.EditorSession.signalParagraphChanged, @paragrahStyleChanged + @zoomHelper.unsubscribe gui.ZoomHelper.signalZoomChanged, @updateSlider + @editorSession.unsubscribe OpenPage.EditorSession.signalCommonStyleCreated, @styleAdded # destry editorSession - me.editorSession.destroy (e) -> - return me.error __("Cannot destroy editor session {0}", e) if e - me.editorSession = undefined + @editorSession.destroy (e) => + return @error __("Cannot destroy editor session {0}", e.toString()), e if e + @editorSession = undefined # destroy session - me.session.destroy (e) -> - return me.error __("Cannot destroy document session {0}", e) if e - core.Async.destroyAll [me.canvas.destroy], (e) -> - return me.error __("Cannot destroy canvas {0}", e) if e - me.notify "Document closed" + @session.destroy (e) => + return @error __("Cannot destroy document session {0}", e.toString()), e if e + core.Async.destroyAll [@canvas.destroy], (e) => + return @error __("Cannot destroy canvas {0}", e.toString()), e if e + @notify "Document closed" f() if f - me.session = undefined - me.annotationController = undefined - me.directFormattingCtl = undefined - me.textController = undefined - me.imageController = undefined - me.ZoomHelper = undefined - me.metaChanged = undefined - me.documentChanged = undefined - me.textStylingChanged = undefined - me.paragrahStyleChanged = undefined - me.updateSlider = undefined - me.styleAdded = undefined - me.basictool.fonts.set "selected", -1 - me.basictool.styles.set "selected", -1 + @session = undefined + @annotationController = undefined + @directFormattingCtl = undefined + @textController = undefined + @imageController = undefined + @ZoomHelper = undefined + @metaChanged = undefined + @documentChanged = undefined + @textStylingChanged = undefined + @paragrahStyleChanged = undefined + @updateSlider = undefined + @styleAdded = undefined + @basictool.fonts.selected = -1 + @basictool.styles.selected = -1 # cleanup: (e) -> - me = @ + if @editorSession e.preventDefault() - me.closeDocument ()-> - me.quit() + @closeDocument ()=> + @quit() this.OS.register "OpenPage", OpenPage \ No newline at end of file diff --git a/OpenPage/css/main.css b/OpenPage/css/main.css index ef56663..4a1247c 100644 --- a/OpenPage/css/main.css +++ b/OpenPage/css/main.css @@ -7,10 +7,16 @@ afx-app-window[data-id="OpenPage"] div[data-id="container"] padding-top: 10px; padding-bottom: 10px; text-align: center; - background-color: #f2f1f0; + /*background-color: #f2f1f0;*/ /*position: relative;*/ } - +afx-app-window[data-id="OpenPage"] office|body, office|document { + background-color: white; + color: black; + background-image: none; + user-select: text; + overflow: visible; +} /* @media screen, print, handheld, projection { @@ -36,7 +42,8 @@ afx-app-window[data-id="OpenPage"] div[data-id="odfcanvas"] { cursor: text; margin:auto; - box-shadow: 1px 1px 3px 3px #9f9F9F; + /*box-shadow: 1px 1px 3px 3px #9f9F9F;*/ + border: 1px solid #2c2c2c; /*added*/ transform-origin: top center; -webkit-transform-origin: top center; @@ -47,24 +54,28 @@ afx-app-window[data-id="OpenPage"] div[data-id="odfcanvas"] afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] { - background-color: #f5f5f5; + /*background-color: #f5f5f5; border: 1px solid #eaeaea; - box-shadow: 3px 3px 3px #9f9F9F; + box-shadow: 3px 3px 3px #9f9F9F;*/ } afx-app-window[data-id="OpenPage"] afx-hbox[data-id="status-bar"] { - background-color: #f5f5f5; + /*background-color: #f5f5f5; border: 1px solid #eaeaea; - box-shadow: -3px -3px 3px #9f9F9F; + box-shadow: -3px -3px 3px #9f9F9F;*/ } afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button, afx-app-window[data-id="OpenPage"] afx-button[data-id="btzoomfix"] button { - border: 1px solid #f5f5f5; - background-color: transparent; + /*border: 1px solid #f5f5f5; + background-color: transparent;*/ width:100%; height: 100%; } +afx-app-window[data-id="OpenPage"] button.selected { + color:chocolate; +} + afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button:hover, afx-app-window[data-id="OpenPage"] afx-hbox[data-id="toolbox"] afx-button button.btactive, afx-app-window[data-id="OpenPage"] afx-button[data-id="btzoomfix"] button:hover { border: 1px solid #759DC0; diff --git a/OpenPage/javascripts/EditorSession.js b/OpenPage/javascripts/EditorSession.js index c1b544e..34dca01 100644 --- a/OpenPage/javascripts/EditorSession.js +++ b/OpenPage/javascripts/EditorSession.js @@ -27,7 +27,7 @@ /*define("webodf/editor/EditorSession", [ "dojo/text!resources/fonts/fonts.css" ],*/ -this.OS.APP.OpenPage.EditorSession = (function (fontsCSS) { // fontsCSS is retrieved as a string, using dojo's text retrieval AMD plugin +this.OS.application.OpenPage.EditorSession = (function (fontsCSS) { // fontsCSS is retrieved as a string, using dojo's text retrieval AMD plugin "use strict"; runtime.loadClass("core.Async"); diff --git a/OpenPage/package.json b/OpenPage/package.json index 8408503..c67ada6 100644 --- a/OpenPage/package.json +++ b/OpenPage/package.json @@ -6,7 +6,7 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.0.2-a", + "version":"0.1.3-a", "category":"Other", "icon":"icon.png", "mimes":["application/vnd.oasis.opendocument.text"] diff --git a/packages.json b/packages.json index 227c793..eee0308 100644 --- a/packages.json +++ b/packages.json @@ -80,6 +80,15 @@ "version": "0.0.6-a", "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/build/release/MarkOn.zip" }, + { + "pkgname": "OpenPage", + "name": "OpenPage", + "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/README.md", + "category": "Other", + "author": "Xuan Sang LE", + "version": "0.1.3-a", + "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/build/release/OpenPage.zip" + }, { "pkgname": "Preview", "name": "Preview",

P9Vq2&M%1O)rX;2~x|c>Q5N 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%0DI)RN0Ged?J=W?bq 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