From 6c5d2ac88bf986170e3627f7919e4fae444af44f Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Fri, 28 Oct 2011 12:16:17 -0400 Subject: [PATCH 01/30] progress --- web/viewer.css | 15 +++++++++++++++ web/viewer.js | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/web/viewer.css b/web/viewer.css index 27ad0638a..52852d591 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -231,6 +231,21 @@ canvas { -webkit-box-shadow: 0px 2px 10px #ff0; } +.textLayer { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + color: #000; +} + +.textLayer > div { + color: transparent; + position: absolute; + line-height:1.3; +} + #viewer { margin: 44px 0px 0px; padding: 8px 0px; diff --git a/web/viewer.js b/web/viewer.js index 1ab2c555c..63215a6d8 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -475,6 +475,10 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, canvas.mozOpaque = true; div.appendChild(canvas); + var textDiv = document.createElement('div'); + textDiv.className = 'textLayer'; + div.appendChild(textDiv); + var scale = this.scale; canvas.width = pageWidth * scale; canvas.height = pageHeight * scale; @@ -487,7 +491,7 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, ctx.translate(-this.x * scale, -this.y * scale); stats.begin = Date.now(); - this.content.startRendering(ctx, this.updateStats); + this.content.startRendering(ctx, this.updateStats, textDiv, scale); setupLinks(this.content, this.scale); div.setAttribute('data-loaded', true); From e7d08e3a98cfbd978c1ddfb9e8af9396d311e603 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Fri, 28 Oct 2011 17:37:55 -0400 Subject: [PATCH 02/30] Selection working --- src/canvas.js | 118 ++++++++++++++++++++++++++++++++++++++++++------- src/core.js | 7 ++- web/viewer.css | 6 +++ web/viewer.js | 8 ++-- 4 files changed, 117 insertions(+), 22 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 70dd65e3d..d771fa15e 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -60,7 +60,7 @@ var CanvasGraphics = (function canvasGraphics() { // if we execute longer then `kExecutionTime`. var kExecutionTimeCheck = 500; - function constructor(canvasCtx, objs) { + function constructor(canvasCtx, objs, textLayer, textScale) { this.ctx = canvasCtx; this.current = new CanvasExtraState(); this.stateStack = []; @@ -69,6 +69,8 @@ var CanvasGraphics = (function canvasGraphics() { this.xobjs = null; this.ScratchCanvas = ScratchCanvas; this.objs = objs; + this.textLayer = textLayer; + this.textScale = textScale; } var LINE_CAP_STYLES = ['butt', 'round', 'square']; @@ -95,6 +97,7 @@ var CanvasGraphics = (function canvasGraphics() { break; } this.ctx.scale(cw / mediaBox.width, ch / mediaBox.height); + this.textDivs = []; }, executeIRQueue: function canvasGraphicsExecuteIRQueue(codeIR, @@ -150,6 +153,17 @@ var CanvasGraphics = (function canvasGraphics() { endDrawing: function canvasGraphicsEndDrawing() { this.ctx.restore(); + + // Text selection-specific + var textLayer = this.textLayer; + var textDivs = this.textDivs; + for (var i = 0, length = textDivs.length; i < length; ++i) { + if (textDivs[i].dataset.textLength>1) { // avoid div by zero + textLayer.appendChild(textDivs[i]); + // Adjust div width to match canvas text width + textDivs[i].style.letterSpacing = ((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth)/(textDivs[i].dataset.textLength-1)) + 'px'; + } + } }, // Graphics state @@ -414,6 +428,12 @@ var CanvasGraphics = (function canvasGraphics() { this.moveText(0, this.current.leading); }, showText: function canvasGraphicsShowText(text) { + function unicodeToChar(unicode) { + return (unicode >= 0x10000) ? + String.fromCharCode(0xD800 | ((unicode - 0x10000) >> 10), + 0xDC00 | (unicode & 0x3FF)) : String.fromCharCode(unicode); + }; + var ctx = this.ctx; var current = this.current; var font = current.font; @@ -423,6 +443,8 @@ var CanvasGraphics = (function canvasGraphics() { var wordSpacing = current.wordSpacing; var textHScale = current.textHScale; var glyphsLength = glyphs.length; + var text = { chars:'', width:0 }; + if (font.coded) { ctx.save(); ctx.transform.apply(ctx, current.textMatrix); @@ -446,11 +468,12 @@ var CanvasGraphics = (function canvasGraphics() { this.restore(); var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); - var width = transformed[0] * fontSize + charSpacing; - - ctx.translate(width, 0); - current.x += width; + var charWidth = transformed[0] * fontSize + charSpacing; + ctx.translate(charWidth, 0); + current.x += charWidth; + text.chars += unicodeToChar(glyph.unicode); + text.width += charWidth; } ctx.restore(); } else { @@ -459,7 +482,6 @@ var CanvasGraphics = (function canvasGraphics() { ctx.scale(1, -1); ctx.translate(current.x, -1 * current.y); ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); - ctx.scale(1 / textHScale, 1); var width = 0; @@ -471,36 +493,100 @@ var CanvasGraphics = (function canvasGraphics() { continue; } - var unicode = glyph.unicode; - var char = (unicode >= 0x10000) ? - String.fromCharCode(0xD800 | ((unicode - 0x10000) >> 10), - 0xDC00 | (unicode & 0x3FF)) : String.fromCharCode(unicode); - + var char = unicodeToChar(glyph.unicode); + var charWidth = glyph.width * fontSize * 0.001 + charSpacing; ctx.fillText(char, width, 0); - width += glyph.width * fontSize * 0.001 + charSpacing; + width += charWidth; + + text.chars += char; + text.width += charWidth; } current.x += width; - ctx.restore(); } + return text; }, - showSpacedText: function canvasGraphicsShowSpacedText(arr) { var ctx = this.ctx; var current = this.current; var fontSize = current.fontSize; var textHScale = current.textHScale; var arrLength = arr.length; + var textLayer = this.textLayer; + var font = current.font; + var text = {str:'', length:0, canvasWidth:0, spaceWidth:0, geom:{}}; + + // Text selection-specific + text.spaceWidth = this.current.font.charsToGlyphs(' ')[0].width; + if (!text.spaceWidth>0) { + // Hack (space is sometimes not encoded) + text.spaceWidth = this.current.font.charsToGlyphs('i')[0].width; + } + + // Compute text.geom + // TODO: refactor the series of transformations below, and share it with showText() + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.scale(1, -1); + ctx.translate(current.x, -1 * current.y); + ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); + ctx.scale(1 / textHScale, 1); + var inv = ctx.mozCurrentTransform; + if (inv) { + var bl = Util.applyTransform([0, 0], inv); + var tr = Util.applyTransform([1, 1], inv); + text.geom.x = bl[0]; + text.geom.y = bl[1]; + text.geom.xFactor = tr[0] - bl[0]; + text.geom.yFactor = tr[1] - bl[1]; + } + ctx.restore(); + for (var i = 0; i < arrLength; ++i) { var e = arr[i]; if (isNum(e)) { - current.x -= e * 0.001 * fontSize * textHScale; + var spacingLength = -e * 0.001 * fontSize * textHScale; + current.x += spacingLength; + + // Text selection-specific + // Emulate arbitrary spacing via HTML spaces + text.canvasWidth += spacingLength; + if (e<0 && text.spaceWidth>0) { // avoid div by zero + var numFakeSpaces = Math.round(-e / text.spaceWidth); + for (var j = 0; j < numFakeSpaces; ++j) + text.str += ' '; + text.length += numFakeSpaces>0 ? 1 : 0; + } } else if (isString(e)) { - this.showText(e); + var shownText = this.showText(e); + + // Text selection-specific + if (shownText.chars === ' ') { + text.str += ' '; + } else { + text.str += shownText.chars; + } + text.canvasWidth += shownText.width; + text.length += e.length; } else { malformed('TJ array element ' + e + ' is not string or num'); } } + + if (textLayer) { + var div = document.createElement('div'); + var fontHeight = text.geom.yFactor * fontSize; + div.style.fontSize = fontHeight + 'px'; + // TODO: family should be '= font.loadedName', but some fonts don't + // have spacing info (cf. fonts.js > Font > fields > htmx) + div.style.fontFamily = 'serif'; + div.style.left = text.geom.x + 'px'; + div.style.top = (text.geom.y - fontHeight) + 'px'; + div.innerHTML = text.str; + div.dataset.canvasWidth = text.canvasWidth * text.geom.xFactor; + div.dataset.textLength = text.length; + this.textDivs.push(div); + } }, nextLineShowText: function canvasGraphicsNextLineShowText(text) { this.nextLine(); diff --git a/src/core.js b/src/core.js index 4b411cff5..7e7bb6ea8 100644 --- a/src/core.js +++ b/src/core.js @@ -157,7 +157,7 @@ var Page = (function pagePage() { IRQueue, fonts) { var self = this; this.IRQueue = IRQueue; - var gfx = new CanvasGraphics(this.ctx, this.objs); + var gfx = new CanvasGraphics(this.ctx, this.objs, this.textLayer, this.textScale); var startTime = Date.now(); var displayContinuation = function pageDisplayContinuation() { @@ -243,6 +243,7 @@ var Page = (function pagePage() { startIdx = gfx.executeIRQueue(IRQueue, startIdx, next); if (startIdx == length) { self.stats.render = Date.now(); + gfx.endDrawing(); if (callback) callback(); } } @@ -305,9 +306,11 @@ var Page = (function pagePage() { } return links; }, - startRendering: function(ctx, callback) { + startRendering: function(ctx, callback, textLayer, textScale) { this.ctx = ctx; this.callback = callback; + this.textLayer = textLayer; + this.textScale = textScale; this.startRenderingTime = Date.now(); this.pdf.startRendering(this); diff --git a/web/viewer.css b/web/viewer.css index 52852d591..19895ac27 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -246,6 +246,12 @@ canvas { line-height:1.3; } +::selection { background:rgba(0,0,255,0.3); } +::-moz-selection { background:rgba(0,0,255,0.3); } +/* TODO: file FF bug to support ::-moz-selection:window-inactive + so we can override the opaque grey background when the window is inactive; + see also http://css-tricks.com/9288-window-inactive-styling */ + #viewer { margin: 44px 0px 0px; padding: 8px 0px; diff --git a/web/viewer.js b/web/viewer.js index 63215a6d8..523b7dc56 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -475,9 +475,9 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, canvas.mozOpaque = true; div.appendChild(canvas); - var textDiv = document.createElement('div'); - textDiv.className = 'textLayer'; - div.appendChild(textDiv); + var textLayer = document.createElement('div'); + textLayer.className = 'textLayer'; + div.appendChild(textLayer); var scale = this.scale; canvas.width = pageWidth * scale; @@ -491,7 +491,7 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, ctx.translate(-this.x * scale, -this.y * scale); stats.begin = Date.now(); - this.content.startRendering(ctx, this.updateStats, textDiv, scale); + this.content.startRendering(ctx, this.updateStats, textLayer, scale); setupLinks(this.content, this.scale); div.setAttribute('data-loaded', true); From 98f3bab65c58fb4d1080cf57c1410209c9626502 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Mon, 31 Oct 2011 16:49:18 -0400 Subject: [PATCH 03/30] Lazy rendering --- src/canvas.js | 122 ++++++++++++++++++++++++++++++-------------------- src/core.js | 7 ++- web/viewer.js | 2 +- 3 files changed, 78 insertions(+), 53 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index d771fa15e..d5db79446 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -60,7 +60,7 @@ var CanvasGraphics = (function canvasGraphics() { // if we execute longer then `kExecutionTime`. var kExecutionTimeCheck = 500; - function constructor(canvasCtx, objs, textLayer, textScale) { + function constructor(canvasCtx, objs, textLayer) { this.ctx = canvasCtx; this.current = new CanvasExtraState(); this.stateStack = []; @@ -70,7 +70,6 @@ var CanvasGraphics = (function canvasGraphics() { this.ScratchCanvas = ScratchCanvas; this.objs = objs; this.textLayer = textLayer; - this.textScale = textScale; } var LINE_CAP_STYLES = ['butt', 'round', 'square']; @@ -98,6 +97,10 @@ var CanvasGraphics = (function canvasGraphics() { } this.ctx.scale(cw / mediaBox.width, ch / mediaBox.height); this.textDivs = []; + this.textLayerQueue = []; + // Prevent textLayerQueue to be rendered while rendering a new page + if (this.textLayerTimer) + clearTimeout(this.textLayerTimer); }, executeIRQueue: function canvasGraphicsExecuteIRQueue(codeIR, @@ -152,17 +155,37 @@ var CanvasGraphics = (function canvasGraphics() { }, endDrawing: function canvasGraphicsEndDrawing() { + var self = this; this.ctx.restore(); - // Text selection-specific - var textLayer = this.textLayer; - var textDivs = this.textDivs; - for (var i = 0, length = textDivs.length; i < length; ++i) { - if (textDivs[i].dataset.textLength>1) { // avoid div by zero - textLayer.appendChild(textDivs[i]); - // Adjust div width to match canvas text width - textDivs[i].style.letterSpacing = ((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth)/(textDivs[i].dataset.textLength-1)) + 'px'; + var textLayer = self.textLayer; + if (textLayer) { + var renderTextLayer = function canvasRenderTextLayer() { + var textDivs = self.textDivs; + for (var i = 0, length = textDivs.length; i < length; ++i) { + if (textDivs[i].dataset.textLength>1) { // avoid div by zero + textLayer.appendChild(textDivs[i]); + // Adjust div width (via letterSpacing) to match canvas text + // Due to the .offsetWidth calls, this is slow + textDivs[i].style.letterSpacing = + ((textDivs[i].dataset.canvasWidth + - textDivs[i].offsetWidth)/(textDivs[i].dataset.textLength-1)) + + 'px'; + } + } } + var textLayerQueue = self.textLayerQueue; + textLayerQueue.push(renderTextLayer); + + // Lazy textLayer rendering (to prevent UI hangs) + // Only render queue if activity has stopped, where "no activity" == + // "no beginDrawing() calls in the last N ms" + self.textLayerTimer = setTimeout(function renderTextLayerQueue(){ + // Render most recent (==most relevant) layers first + for (var i=textLayerQueue.length-1; i>=0; i--) { + textLayerQueue.pop().call(); + } + }, 500); } }, @@ -516,31 +539,32 @@ var CanvasGraphics = (function canvasGraphics() { var font = current.font; var text = {str:'', length:0, canvasWidth:0, spaceWidth:0, geom:{}}; - // Text selection-specific - text.spaceWidth = this.current.font.charsToGlyphs(' ')[0].width; - if (!text.spaceWidth>0) { - // Hack (space is sometimes not encoded) - text.spaceWidth = this.current.font.charsToGlyphs('i')[0].width; - } + if (textLayer) { + text.spaceWidth = this.current.font.charsToGlyphs(' ')[0].width; + if (!text.spaceWidth>0) { + // Hack (space is sometimes not encoded) + text.spaceWidth = this.current.font.charsToGlyphs('i')[0].width; + } - // Compute text.geom - // TODO: refactor the series of transformations below, and share it with showText() - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.scale(1, -1); - ctx.translate(current.x, -1 * current.y); - ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); - ctx.scale(1 / textHScale, 1); - var inv = ctx.mozCurrentTransform; - if (inv) { - var bl = Util.applyTransform([0, 0], inv); - var tr = Util.applyTransform([1, 1], inv); - text.geom.x = bl[0]; - text.geom.y = bl[1]; - text.geom.xFactor = tr[0] - bl[0]; - text.geom.yFactor = tr[1] - bl[1]; + // Compute text.geom + // TODO: refactor the series of transformations below, and share it with showText() + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.scale(1, -1); + ctx.translate(current.x, -1 * current.y); + ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); + ctx.scale(1 / textHScale, 1); + var inv = ctx.mozCurrentTransform; + if (inv) { + var bl = Util.applyTransform([0, 0], inv); + var tr = Util.applyTransform([1, 1], inv); + text.geom.x = bl[0]; + text.geom.y = bl[1]; + text.geom.xFactor = tr[0] - bl[0]; + text.geom.yFactor = tr[1] - bl[1]; + } + ctx.restore(); } - ctx.restore(); for (var i = 0; i < arrLength; ++i) { var e = arr[i]; @@ -548,26 +572,28 @@ var CanvasGraphics = (function canvasGraphics() { var spacingLength = -e * 0.001 * fontSize * textHScale; current.x += spacingLength; - // Text selection-specific - // Emulate arbitrary spacing via HTML spaces - text.canvasWidth += spacingLength; - if (e<0 && text.spaceWidth>0) { // avoid div by zero - var numFakeSpaces = Math.round(-e / text.spaceWidth); - for (var j = 0; j < numFakeSpaces; ++j) - text.str += ' '; - text.length += numFakeSpaces>0 ? 1 : 0; + if (textLayer) { + // Emulate precise spacing via HTML spaces + text.canvasWidth += spacingLength; + if (e<0 && text.spaceWidth>0) { // avoid div by zero + var numFakeSpaces = Math.round(-e / text.spaceWidth); + for (var j = 0; j < numFakeSpaces; ++j) + text.str += ' '; + text.length += numFakeSpaces>0 ? 1 : 0; + } } } else if (isString(e)) { var shownText = this.showText(e); - // Text selection-specific - if (shownText.chars === ' ') { - text.str += ' '; - } else { - text.str += shownText.chars; + if (textLayer) { + if (shownText.chars === ' ') { + text.str += ' '; + } else { + text.str += shownText.chars; + } + text.canvasWidth += shownText.width; + text.length += e.length; } - text.canvasWidth += shownText.width; - text.length += e.length; } else { malformed('TJ array element ' + e + ' is not string or num'); } diff --git a/src/core.js b/src/core.js index 7e7bb6ea8..4313959a8 100644 --- a/src/core.js +++ b/src/core.js @@ -7,7 +7,7 @@ var globalScope = (typeof window === 'undefined') ? this : window; var ERRORS = 0, WARNINGS = 1, TODOS = 5; var verbosity = WARNINGS; -var useWorker = false; +var useWorker = true; // The global PDFJS object exposes the API // In production, it will be declared outside a global wrapper @@ -157,7 +157,7 @@ var Page = (function pagePage() { IRQueue, fonts) { var self = this; this.IRQueue = IRQueue; - var gfx = new CanvasGraphics(this.ctx, this.objs, this.textLayer, this.textScale); + var gfx = new CanvasGraphics(this.ctx, this.objs, this.textLayer); var startTime = Date.now(); var displayContinuation = function pageDisplayContinuation() { @@ -306,11 +306,10 @@ var Page = (function pagePage() { } return links; }, - startRendering: function(ctx, callback, textLayer, textScale) { + startRendering: function(ctx, callback, textLayer) { this.ctx = ctx; this.callback = callback; this.textLayer = textLayer; - this.textScale = textScale; this.startRenderingTime = Date.now(); this.pdf.startRendering(this); diff --git a/web/viewer.js b/web/viewer.js index 523b7dc56..d8a59e651 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -491,7 +491,7 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight, ctx.translate(-this.x * scale, -this.y * scale); stats.begin = Date.now(); - this.content.startRendering(ctx, this.updateStats, textLayer, scale); + this.content.startRendering(ctx, this.updateStats, textLayer); setupLinks(this.content, this.scale); div.setAttribute('data-loaded', true); From c74d7b8777d9b963bbb7b56dac957db5b51647db Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Mon, 31 Oct 2011 16:49:49 -0400 Subject: [PATCH 04/30] Workers off! --- src/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 4313959a8..ab2509016 100644 --- a/src/core.js +++ b/src/core.js @@ -7,7 +7,7 @@ var globalScope = (typeof window === 'undefined') ? this : window; var ERRORS = 0, WARNINGS = 1, TODOS = 5; var verbosity = WARNINGS; -var useWorker = true; +var useWorker = false; // The global PDFJS object exposes the API // In production, it will be declared outside a global wrapper From 9ddc40c3d7b82f3059e3864c887f05c649b575ca Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 2 Nov 2011 12:22:39 -0400 Subject: [PATCH 05/30] Nit --- src/canvas.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 1ed1ab76d..4edcb3096 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -106,7 +106,7 @@ var CanvasGraphics = (function canvasGraphics() { this.ctx.scale(cw / mediaBox.width, ch / mediaBox.height); this.textDivs = []; this.textLayerQueue = []; - // Prevent textLayerQueue to be rendered while rendering a new page + // Prevent textLayerQueue from being rendered while rendering a new page if (this.textLayerTimer) clearTimeout(this.textLayerTimer); }, @@ -166,7 +166,7 @@ var CanvasGraphics = (function canvasGraphics() { var self = this; this.ctx.restore(); - var textLayer = self.textLayer; + var textLayer = this.textLayer; if (textLayer) { var renderTextLayer = function canvasRenderTextLayer() { var textDivs = self.textDivs; @@ -557,10 +557,10 @@ var CanvasGraphics = (function canvasGraphics() { ctx.translate(current.x, -1 * current.y); ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); ctx.scale(1 / textHScale, 1); - var inv = ctx.mozCurrentTransform; - if (inv) { - var bl = Util.applyTransform([0, 0], inv); - var tr = Util.applyTransform([1, 1], inv); + var ctxMatrix = ctx.mozCurrentTransform; + if (ctxMatrix) { + var bl = Util.applyTransform([0, 0], ctxMatrix); + var tr = Util.applyTransform([1, 1], ctxMatrix); text.geom.x = bl[0]; text.geom.y = bl[1]; text.geom.xFactor = tr[0] - bl[0]; @@ -601,7 +601,7 @@ var CanvasGraphics = (function canvasGraphics() { malformed('TJ array element ' + e + ' is not string or num'); } } - + if (textLayer) { var div = document.createElement('div'); var fontHeight = text.geom.yFactor * fontSize; From 9ebec03ddc11e8de6e36c059b1bd71e34f24688c Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 8 Nov 2011 15:27:03 -0500 Subject: [PATCH 06/30] Implemented selection for showText() --- src/canvas.js | 153 ++++++++++++++++++++++++++++++-------------------- src/fonts.js | 8 ++- 2 files changed, 98 insertions(+), 63 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 470bbef94..05f74f24e 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -453,7 +453,58 @@ var CanvasGraphics = (function canvasGraphics() { nextLine: function canvasGraphicsNextLine() { this.moveText(0, this.current.leading); }, - showText: function canvasGraphicsShowText(text) { + applyTextTransforms: function canvasApplyTransforms() { + var ctx = this.ctx; + var current = this.current; + var textHScale = current.textHScale; + var font = current.font; + + ctx.transform.apply(ctx, current.textMatrix); + ctx.scale(1, -1); + ctx.translate(current.x, -1 * current.y); + ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); + ctx.scale(1 / textHScale, 1); + }, + getTextGeometry: function canvasGetTextGeometry() { + var geom = {}; + var ctx = this.ctx; + var font = this.current.font; + var ctxMatrix = ctx.mozCurrentTransform; + if (ctxMatrix) { + var bl = Util.applyTransform([0, 0], ctxMatrix); + var tr = Util.applyTransform([1, 1], ctxMatrix); + geom.x = bl[0]; + geom.y = bl[1]; + geom.hScale = tr[0] - bl[0]; + geom.vScale = tr[1] - bl[1]; + } + var spaceGlyph = font.charsToGlyphs(' ', true); + // Hack (sometimes space is not encoded) + if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) + spaceGlyph = font.charsToGlyphs('i', true); + // Fallback + if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) + spaceGlyph = [ {width:0} ]; + geom.spaceWidth = spaceGlyph[0].width; + return geom; + }, + pushTextDivs: function canvasGraphicsPushTextDivs(text) { + var div = document.createElement('div'); + var fontSize = this.current.fontSize; + var fontHeight = text.geom.vScale * fontSize; + + div.style.fontSize = fontHeight + 'px'; + // TODO: family should be '= font.loadedName', but some fonts don't + // have spacing info (cf. fonts.js > Font > fields > htmx) + div.style.fontFamily = 'serif'; + div.style.left = text.geom.x + 'px'; + div.style.top = (text.geom.y - fontHeight) + 'px'; + div.innerHTML = text.str; + div.dataset.canvasWidth = text.canvasWidth * text.geom.hScale; + div.dataset.textLength = text.length; + this.textDivs.push(div); + }, + showText: function canvasGraphicsShowText(str, skipTextSelection) { function unicodeToChar(unicode) { return (unicode >= 0x10000) ? String.fromCharCode(0xD800 | ((unicode - 0x10000) >> 10), @@ -463,14 +514,24 @@ var CanvasGraphics = (function canvasGraphics() { var ctx = this.ctx; var current = this.current; var font = current.font; - var glyphs = font.charsToGlyphs(text); + var glyphs = font.charsToGlyphs(str); var fontSize = current.fontSize; var charSpacing = current.charSpacing; var wordSpacing = current.wordSpacing; var textHScale = current.textHScale; var glyphsLength = glyphs.length; - var text = { chars:'', width:0 }; + var textLayer = this.textLayer; + var text = { str:'', length:0, canvasWidth:0, geom:{}}; + var textSelection = textLayer && !skipTextSelection ? true : false; + + if (textSelection) { + ctx.save(); + this.applyTextTransforms(); + text.geom = this.getTextGeometry(); + ctx.restore(); + } + // Type3 fonts - each glyph is a "mini-PDF" if (font.coded) { ctx.save(); ctx.transform.apply(ctx, current.textMatrix); @@ -498,17 +559,14 @@ var CanvasGraphics = (function canvasGraphics() { ctx.translate(charWidth, 0); current.x += charWidth; - text.chars += unicodeToChar(glyph.unicode); - text.width += charWidth; + text.str += unicodeToChar(glyph.unicode); + text.canvasWidth += charWidth; + text.length++; } ctx.restore(); } else { ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.scale(1, -1); - ctx.translate(current.x, -1 * current.y); - ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); - ctx.scale(1 / textHScale, 1); + this.applyTextTransforms(); var width = 0; for (var i = 0; i < glyphsLength; ++i) { @@ -524,12 +582,18 @@ var CanvasGraphics = (function canvasGraphics() { ctx.fillText(char, width, 0); width += charWidth; - text.chars += char; - text.width += charWidth; + text.str += char; + text.canvasWidth += charWidth; + text.length++; } + current.x += width; ctx.restore(); } + + if (textSelection) + this.pushTextDivs(text); + return text; }, showSpacedText: function canvasGraphicsShowSpacedText(arr) { @@ -540,32 +604,13 @@ var CanvasGraphics = (function canvasGraphics() { var arrLength = arr.length; var textLayer = this.textLayer; var font = current.font; - var text = {str:'', length:0, canvasWidth:0, spaceWidth:0, geom:{}}; + var text = {str:'', length:0, canvasWidth:0, geom:{}}; + var textSelection = textLayer ? true : false; - if (textLayer) { - text.spaceWidth = this.current.font.charsToGlyphs(' ')[0].width; - if (!text.spaceWidth>0) { - // Hack (space is sometimes not encoded) - text.spaceWidth = this.current.font.charsToGlyphs('i')[0].width; - } - - // Compute text.geom - // TODO: refactor the series of transformations below, and share it with showText() + if (textSelection) { ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.scale(1, -1); - ctx.translate(current.x, -1 * current.y); - ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); - ctx.scale(1 / textHScale, 1); - var ctxMatrix = ctx.mozCurrentTransform; - if (ctxMatrix) { - var bl = Util.applyTransform([0, 0], ctxMatrix); - var tr = Util.applyTransform([1, 1], ctxMatrix); - text.geom.x = bl[0]; - text.geom.y = bl[1]; - text.geom.xFactor = tr[0] - bl[0]; - text.geom.yFactor = tr[1] - bl[1]; - } + this.applyTextTransforms(); + text.geom = this.getTextGeometry(); ctx.restore(); } @@ -575,47 +620,35 @@ var CanvasGraphics = (function canvasGraphics() { var spacingLength = -e * 0.001 * fontSize * textHScale; current.x += spacingLength; - if (textLayer) { + if (textSelection) { // Emulate precise spacing via HTML spaces text.canvasWidth += spacingLength; - if (e<0 && text.spaceWidth>0) { // avoid div by zero - var numFakeSpaces = Math.round(-e / text.spaceWidth); + if (e<0 && text.geom.spaceWidth>0) { // avoid div by zero + var numFakeSpaces = Math.round(-e / text.geom.spaceWidth); for (var j = 0; j < numFakeSpaces; ++j) text.str += ' '; text.length += numFakeSpaces>0 ? 1 : 0; } } } else if (isString(e)) { - var shownText = this.showText(e); + var shownText = this.showText(e, true); - if (textLayer) { - if (shownText.chars === ' ') { - text.str += ' '; + if (textSelection) { + if (shownText.str === ' ') { + text.str += ' '; } else { - text.str += shownText.chars; + text.str += shownText.str; } - text.canvasWidth += shownText.width; + text.canvasWidth += shownText.canvasWidth; text.length += e.length; } } else { malformed('TJ array element ' + e + ' is not string or num'); } } - - if (textLayer) { - var div = document.createElement('div'); - var fontHeight = text.geom.yFactor * fontSize; - div.style.fontSize = fontHeight + 'px'; - // TODO: family should be '= font.loadedName', but some fonts don't - // have spacing info (cf. fonts.js > Font > fields > htmx) - div.style.fontFamily = 'serif'; - div.style.left = text.geom.x + 'px'; - div.style.top = (text.geom.y - fontHeight) + 'px'; - div.innerHTML = text.str; - div.dataset.canvasWidth = text.canvasWidth * text.geom.xFactor; - div.dataset.textLength = text.length; - this.textDivs.push(div); - } + + if (textSelection) + this.pushTextDivs(text); }, nextLineShowText: function canvasGraphicsNextLineShowText(text) { this.nextLine(); diff --git a/src/fonts.js b/src/fonts.js index ca02bb020..9462ac88e 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1797,7 +1797,7 @@ var Font = (function Font() { return rule; }, - charsToGlyphs: function fonts_chars2Glyphs(chars) { + charsToGlyphs: function fonts_chars2Glyphs(chars, suppressWarnings) { var charsCache = this.charsCache; var glyphs; @@ -1830,7 +1830,8 @@ var Font = (function Font() { var charcode = int16([chars.charCodeAt(i++), chars.charCodeAt(i)]); var glyph = encoding[charcode]; if ('undefined' == typeof(glyph)) { - warn('Unencoded charcode ' + charcode); + if (!suppressWarnings) + warn('Unencoded charcode ' + charcode); glyph = { unicode: charcode, width: this.defaultWidth @@ -1847,7 +1848,8 @@ var Font = (function Font() { var charcode = chars.charCodeAt(i); var glyph = encoding[charcode]; if ('undefined' == typeof(glyph)) { - warn('Unencoded charcode ' + charcode); + if (!suppressWarnings) + warn('Unencoded charcode ' + charcode); glyph = { unicode: charcode, width: this.defaultWidth From 686f275830ba749d02f04e41c1954d0d0427bff5 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 8 Nov 2011 16:05:11 -0500 Subject: [PATCH 07/30] Fix font and spaces --- src/canvas.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 05f74f24e..83d9c34d1 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -494,9 +494,7 @@ var CanvasGraphics = (function canvasGraphics() { var fontHeight = text.geom.vScale * fontSize; div.style.fontSize = fontHeight + 'px'; - // TODO: family should be '= font.loadedName', but some fonts don't - // have spacing info (cf. fonts.js > Font > fields > htmx) - div.style.fontFamily = 'serif'; + div.style.fontFamily = this.current.font.loadedName || 'serif'; div.style.left = text.geom.x + 'px'; div.style.top = (text.geom.y - fontHeight) + 'px'; div.innerHTML = text.str; @@ -560,8 +558,8 @@ var CanvasGraphics = (function canvasGraphics() { current.x += charWidth; text.str += unicodeToChar(glyph.unicode); - text.canvasWidth += charWidth; text.length++; + text.canvasWidth += charWidth; } ctx.restore(); } else { @@ -582,9 +580,9 @@ var CanvasGraphics = (function canvasGraphics() { ctx.fillText(char, width, 0); width += charWidth; - text.str += char; - text.canvasWidth += charWidth; + text.str += char === ' ' ? ' ' : char; text.length++; + text.canvasWidth += charWidth; } current.x += width; From 6fec709011c6570b72ced48e003692fa989ef2dd Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 8 Nov 2011 16:14:23 -0500 Subject: [PATCH 08/30] Adding 1040.pdf --- test/pdfs/.gitignore | 1 + test/pdfs/1040.pdf | Bin 0 -> 299340 bytes test/test_manifest.json | 7 +++++++ 3 files changed, 8 insertions(+) create mode 100644 test/pdfs/1040.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 443cb155a..dce433acf 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -14,4 +14,5 @@ !sizes.pdf !close-path-bug.pdf !alphatrans.pdf +!1040.pdf diff --git a/test/pdfs/1040.pdf b/test/pdfs/1040.pdf new file mode 100644 index 0000000000000000000000000000000000000000..12b9a66429417553b31b1bc57ea254e44cfc3a9d GIT binary patch literal 299340 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

`1C*m-*)5T|AAmSKf1R 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 Date: Tue, 8 Nov 2011 17:27:02 -0500 Subject: [PATCH 09/30] Default font fallback is same as setFont()'s --- src/canvas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/canvas.js b/src/canvas.js index 83d9c34d1..590af469c 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -494,7 +494,7 @@ var CanvasGraphics = (function canvasGraphics() { var fontHeight = text.geom.vScale * fontSize; div.style.fontSize = fontHeight + 'px'; - div.style.fontFamily = this.current.font.loadedName || 'serif'; + div.style.fontFamily = this.current.font.loadedName || 'sans-serif'; div.style.left = text.geom.x + 'px'; div.style.top = (text.geom.y - fontHeight) + 'px'; div.innerHTML = text.str; From baf395ab16dabca43d977162534b35694ab762fc Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 9 Nov 2011 13:53:27 -0500 Subject: [PATCH 10/30] Removing 1040... (duplicate) --- test/pdfs/.gitignore | 1 - test/pdfs/1040.pdf | Bin 299340 -> 0 bytes test/test_manifest.json | 7 ------- 3 files changed, 8 deletions(-) delete mode 100644 test/pdfs/1040.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index dce433acf..443cb155a 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -14,5 +14,4 @@ !sizes.pdf !close-path-bug.pdf !alphatrans.pdf -!1040.pdf diff --git a/test/pdfs/1040.pdf b/test/pdfs/1040.pdf deleted file mode 100644 index 12b9a66429417553b31b1bc57ea254e44cfc3a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299340 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

`1C*m-*)5T|AAmSKf1R z;9o>@i8n;}L#iT>;EpETZOgk45G@VPo!M;5XW#C`JT!!Ul@df7!$m)V1Z@BZ_^g}D zCvq?AjB^Qa>N%}n_ogH=y&Wo~`jki%ubNm+YTcX!Fg8(xNqY~8rCl-pO6Fd(;ogU; zxqeOh^5*$Grj4Vl(Z{;UupUTEF84=mON(;p*Ixa=CKR{~AJnMojoWd$4-~yG7DxoF zf4y-3aNF!3rJIB8|1ebk(8hC7`ixBc3@Qff#TYIo zs|%vnexO3@zges({$Sr!pe=xt0whsDS;>|X zm7*5KJN%_SidQf@{{v)dK3Y6lRGga*BljoDY)wl-Hv?$ebTejU2r4Eny|}RI0zQ_X z32XQM_z!)aUREM)g)u5(%~4`wMIPb!x#}eUTJTU&O9kd~>7Py$CmZ`Tp@rMs89Lt$ zK8i!sL?M#7w6_D~#eoa4LD2g5psz{^0^R++n630T44KFVZ!~Zx#c;ZdX_Hd3oI1l$LiRMpNluRHB5424|%{D zeACj?%s=$LHgit1F_b>9JHXtIoUOTyPNP~`Y_728wRjxtgR#A2{&)>ib!jai2qo4h zQ=!QmECZ4uN4)bR2p#bIUhDBW{eWO|2f336;wIsVv+M&iNNFz`2MTK6$ULCfmj2P8 zV+R4|iAnotUVvTz*I#Wf1Cd>Pm74!(QPh&!X8Sz~a%u4A#kg5Q78sY7-QB|;Uf)zN zW~d*za?m`w{jl!o<*aW=#|e%U*8bE{=X}y&7&$c@O$9uENuC&}myqde$k^I*)a>dm zP@09yQ0!Cw4{UH*2cwQwg?vn%Ymr0OI=qKX^nGO%=Yj7JNCQ2I@_8ySM=WaEAYS$@ zZ#ju$G$);IFZM6X5CSKDAXf5*x}kiX7!*V-qGS}Fmiku zepjpjVKh#QSOYEQT3Q=T*_#$`LmTCt8CKBubK!V;zZi&{Yl=QMjw&pX%E}_+C$Xr? z)j}YLO^O`#`EApREUK{~>OukVZ7x_l=)SQyG8fS%|NhGkKlo(=J?DqN#y8Sm2p zGwCw$clZ0(&Cp(hNYm>dCt$PDJ4*O*acQ~I8}!Od*4S{kY(HOE9mR`bv1I{q5yd~0%qR)k+<@*buWdZ;h~PqjlwyUJlWL!KD^r zSgBvAw)K5PCxMtvI?w^Ao@LVx8XtXmloYpN_9l)1!yxptEK{R*Unrk!l;!a75dwtzKX9ff$rNAP|ugy$t@(vUxCr=22g47dsg-v4hfvz> zj~xihUw0s%eFx2N8yN%rr@n`S>CZ>_es3p59rSH1t;}uk#cZ9-%nko`m`~8w*7Cpg zAisa>|9w~a`2zp-{J%f_cNZdTY;FFhCgk6h(Vw=7zuaFkFth*f9mwyj=YMq|pYD(U zU~a?4!uG#3Al&lW;$Jn9v*IUHD^6TF4K~r)W~38zu!u@}5-bN;ghu(uJH~h;Kg~r-rXw7D+IcE(nCSThB_Cq2)x`)dps>Z zR(5oD@HK8zYV9Ke=T?+f=C(ZZKkK9&7fF8~c`*-XZERpXn9?5goBx6G0@tIXWcK4$ zvKgY%`6Bpo9L83qd%n!H<<4S>P~hpxxoI0n(NO{Lj8Ds?$(wf9M9JjE5#hNjV zSt0;+?mO*942CkLgf^jo26ljiMv26C8`CE)5Cs`RB$HuCnNd-)nYHKCvT5N2OnZwM z9#P80)PxDOkTQku^9!o*9^6UdsTOQ91rmba6($NG^>Ko;!d+uTmFLu3BODM}jEH1@ z#?N%12rnYXCCmjDGn;80aKP9ovLNPz#=G;SF@9B2FqB?ksdE_HsQ}5{@^Nfq|J`jSq*z1eM8!m3A2q?Dy!t;p_ zMF`P2(5ya^gyiNY9kmzNUe>t;2G~sj_W19?qVfZy5`#y|OuX)8W2{91K&PygmyMf) zC)5~JV8BgHe3uh|nHMe|9n06RxXzb{w!&S958UQ%jV1VhIQz=5IG3bt+=D}K2=0Ts zLvRZrxVyW%dxCp#g1dW=;2zvvg1gH%N!Z=9yXWkAukQ!bJWuO%b=Oo^SKYPHr;hB8 zdmDAzNLTHHswjL3CLZN04MJMdvj-xXbb3zNItNf~NQTsQVrzC=RWMAFy?Lx8V_pnSJ;f1VK(RwY&P<@M+YV!FNA?0)MkG}+E5qHE$Kx(>+sk~Qt0 z@+zRV>7RS)AH0h5FONgN4nhvj)_>$cz>9=G3sukZlLGwS@tZ zoTG!qf1HDU?e;(Lp#O0WGLUop8xHhWk<9-_!NtnN@^1|259+_a_S|P>{+H+ef1iMW z$`5PQcgV}il!}%NHGa^qlEF(u1H&*kg+N-b!ao?;HNvXQWFv8^WatmY;0pza-MZ{4X{CHM zaF#szrCe$iGONijvOb2T3Y-snQDBL#;0e@$TQGf1a2SoCvXZjlL;d~uXcK~2i!o_! zA2x;*ll2&d*>}np2eyLc)-%7$ND#+lh|>!xX?xbCa%w6<0Bx6x)^Isw7Tp32hTqkv-8fi9s{0hFJ zwc5Cmleqq%cUK8BG{o1jIuq3g^%nZQ?PojcsV+n(ks^w`K<(W1Y&5&{*0Kd=te!@9 z2qbyOH9_PlFHusS$bf6qG*7lSoi0oJ&0kkmW?z5dm9F8vspFNuYIzn_Z$`VxbDYF^ znCA^#n{c@vnvhu020Hoc)&LA|FJ(U%>QP4{*{UX7(n%Z z3kW~4H~%0Y`~ec-ulFYhE9?Ih5G+m9KVY>v%UH2}#FlY0mblz5L6=Ni#_rWwij=OJ ztBr49Gwli!UuCl)zOCHEqtwkUXCxtAn7 zS&+kT(8BI{-i78J0lwpze%&&<=Bkx$Z?W!@jwC%S{Y@{n!#0KPos<++ut~J2aUR`= z<#K{CZjzX#-UVL7`#1F=Bqo*`bK)Fp!KEkW*B__p0QI3e-p|(pZSrh24n4$?M@zUk z)gyXguRt zw?mK!E3b7te4H<*Fynv$Ejv4(G`c1k=NIWDDgQjy?Fk)X844;h6}V!t@F1fiwSn(v zO^xT#{u9h;a!zRR1Zy1W_*U?vuFVa@7Kw{*tip1Nb3HZ=zxFzn3-63!Ql*+(+4Vv{5@DJ0%6X7}?61>Mt;Q zVYoFDElY+8V=2gsu8URqo#7)$I0vG@7zqYc5Ox|1wgAt&>4*^I7G(JBj4qgO5$+j3 zzqN(%mv({{q9Fo51%D?%;1{*&nq#1xLd39y#xMqHzMxjUpt%;PqITpi8+1q;VvK@! zB_;F38l?lBTA2YB95N_$n8rR@-ts)*+{(Y=a(&MKu!{W%byDK(0h42G)ww-fhAMi{-$-_Ht!xU+*LekLBoLZwJk--k8avCq_|eVjhVF zOE+^4w}FFB&g$4-#i~Z*AYDDZ%AKelGaDn1u{faDS^Yg!7k>vo^R)zqeZ~|~Ju`@IT{HLxK_!Ix943Om~*2&Kp zhCt8_PBzBBWq|*wrv+kg{$Kgu<mhtET-c5rvWEZ+IZ{zaNtRPZu=6Fnj+?NO4fK z{Hdl*e`5f(#2amhRT7$p5FSQHDCh^JScLhI3B6T~0lyx^Ab{>i{^m^x=Dt#QoZ6w8 zR3znWX&$_i@6QnY@RQys^x#$F1ir*RCt~ zJc*$OYodu+^$KbWO#9t(yzHhEnQ4+-S zlzQO+g3Zwc?v{YpH=O=3{4ozZ8@Xq-h}D%1-v&m-#X~|j_4W1iZXpA=Ai*-WDpUfQ z;4}1?;!$*@0+=w++g5hJc;O}#mIfk;rz0^cnvie`;Gq{REAt*OhV2KN!F zxN^}TbeeWx;EF7C13r-0kLXkw;s!+!0!0WJfc#C-4~8Oy($9s}M}_N?iXbYF6=P+D zIK?yyy%1?{v~^5#UwJ>_gUQ$H#~_1uRr~{G15f+b=hjzWcaNic2R@#$nc*2`UMW0h z)jD8%`dkUcokv`pAcU^GAL;x2^u2EFBH9wYCAdlD0?vad_zm3YE*^YaM<2agzyRUL zHH?7XxXJ!I;!RvC7f8V4O~3(R+@%zMm9`3H*TPi{HGO28z0QvEOuRE|4Kex;3m{VZ zrtLc@?5$TxLB--&#uRhEit%qJWm2Y>qQ@i_)gbQ1 z!yl2zNv2WnLNn8=hgb!$H>_phX7d^}zb?^IeI0UeS$fuLnZ|pq0UIi@AMNcj8I+at zIbq-dy-=54`WOtm1q47An$_s~2^CFQ-5KV>uHZbAW^#6#grMp}3cY!}s7iw%T}m`| z8It;?JKEVoAGC*@C&c>&q6+XnK)Oc5gcIB9UY~;+s9&{Q)1sKxmC$1*0!!DM10qOU zZ=ng4V83E{gfK;ON=sCDSM*JXb|Doont?Zn$y1c!3Op7y9hyigyaun!-h6|1&g$^T zX@?8uC9!Kcx$he8o;~ zmK3C~u`aQQ&sT7ByS;tRy!iM%wb_y!boSF9d=@WZa$ZZ>Ww`5p3F((<-z0K*_Sx|g zHo;O*G|xdh1VKTc{UdpwFd1%gu z-tcBbhTyUjR|^}W>y;D#QVTAO^>f=M%ZP~k``Ip*u_@#rK)?2BniCfJBmOz-|ev?u{FY zjLh;!C4r$vW@v7lNk{m?Z2Z%Z)g<%c0MGpTB1d$EY4ClEcc9}dkhW%!C#;hwvjZyRb>yV*)0I| zK5aIZ>bku$hVQy{k-Yn8ji#;HN<4J^=tsev?=I$y>dt4{eC9zB_B3TSQC1EEVwcs8&P~)81NI+hLea|GokfBu zr6$BCL`{~8RVZN6-+FO0L&&pX5Ub>=xU2V2AOr-ua;%SzUx|TIwxbXfD-nHsWppWV zI?ACFzDQ6DL&WUo+haqAacWJT((uys zF(h;;P7pHSmxYKkp`I!mVR(y`#J2vAQKR3bk*u%~6t3IMc%5vn>kbKRhQz>GCaU$% z)g3<+)v$W^Ro+lGTKzD2du=l4_e4vNtXr2v%cPu)8>5lZer4qi4TGK&COh;>tZFbm zk$Q5dRSM&1k94c$3+@a#2fbG3r@k^_YL~>x$4u3py17Yd@QsM;0qW%^9nv?nO zHDmuJasHnz1O6}a=Kp8FV^(IiKODLLphUE?vUad1dI22-V*de=H0_CgLjelgS=$I% zyQnkJ12y=-KOk@)@ROYr_^AnyF*GpM{mWeWpJKiPFf{p3eWd~rwbLGGilJ|4|1-Wa zuoGY+%%Ba_HnIaFk^d|Jd}1VG1coAic>qo~=g)J70zi@Rce&qJ8^9-EId-7o-Af*@ zAUp8ld0k_}e@)jv)Q9SfoWJ@7cJgb!fa$NVN5shS>stWRmwfhL zW^q4<_H$%E2mF%$8YvMY+e<#%uWto>eyRTpNDx>asOI@q?>8nP@cE_P-{6o$jKJ{f zzw%jM+Wi&h8(0q*M*a8umvQ}`86rlYcK6qNUdfmv(_6<9|QDw9E9;E-;+> zulK-c;=j|EaWcNN%lI-*#+Q1)5cI#w0mGmFPG9mFUixGB-5>CJ?PvDy6-D$yG|u0B z0x>gx=5hS)@r95azuV*Z-Q4dZBhd?Se=E?4ere)?^?tYVLU8uqt+4+d)^C#_qL)SR zvIc%zG7|kZj3oMP2TJtY0F~%vS-h-@mqqciCSI1rZxl-+*55t6(EWwHFVtoEo%cf9 z7t+2^_V>midZFJ7`Ch2^LcAB+y^szFEBbSKfN|@8CBG-+g`6+cd?6;&Z<_p!1plij z@Fw$j`kMw!KotFSKNOp(PW;OL?H8^H)8Fmo@T2Oh(S%^%yyS zjZpI+>cpSD{jFUnBLfr1zk#<8DK7!R+i^VoT%olN0;|OppThCbA?Itr9iSkc*xOV| z{R8!AKIT_0MQc|7+{BN_ONhEK?dl&-Qw~}Klag(`)u6uB{>hCb8|=$AmE{ z06UL^7|TXy-bS{s+oEZ~=T7u1iFn-42#n4UpZbSnlJLvV|Wuu~@bdNA#&et;BujU%lVCjU>>p4P}1A&=Vm*Rsi~1 z{%wXId_vZWd&s+#Xx>h!V5$^Goou6d;`lHSg|sf|9Mc}(c8VQA8#w0<8NSh8ACK7~ z#BpBwh9PER6BsP{wpPsK09R%9Spj@9yM3XXEc#JKj(qS&SiIQ9;&xpjn|x(r^w|75 z&g+Z4g6oM9=6CpTlKs&Q&1;cVrXZCgj60pr3vrXs%3Fj0vGzmASDiVMwe3^7f)kHf z)x^Z^5YUdtaK-^}#fvkMTk8`7b-Ie!b6UI}gxo0zk$FoRrdw%tB051d^3Kt=i$(We zTS!S6#1L*_;xcj1dbdU_Tjem9Yr5(A*ozOhkrRxQ(ELf|`a|PnTc6vOF72ymrVt*r zI*X6$r=XS+k<@PVrWX zwe$lxP>m3HvMphusgis zu-!I!@Fy;^g{cZ910nxH$k5TW+L;FJdsKZ1tw8&Cm4dQoLy(9QZ*`*lTdi6AIQ237B?U%raP#C#t&U6U$~W`Tvk zI?yHNqrnXO9HLhK&KNH_hfkA1EZqQK3{8%$yH{Gq$*x1~>zTBaW-Mdjmx=0&IoRyj z2Z)B(;mT7BtM`2j`Ft554`^2muez2^(mAC!zo%b4fqE_-Q7fvmiWTQ+lt00uf@iB` zHa%!4zI`u5mx?cbSH~2-psJR+Rp!!El$t#^RnTyMWctC19;GS<7+N?K_Ps&w40Zz% zYSHIJ!u=twSOI1T=qaB?pk6JWNQ||iYH74o-BDERn6pLd0WBcrBD4>ikS*wkiTPE~ zc9{P}+@wm)biFO!LVZ25zx&aF=R!W2TEgH`r-3{n{KJ9OmAvK5E)-YQB5(X|ZR3fP zd6Tr!*!YGeCSvb?=5VUvyI0H3EytM4%85RiGE0h@;@g4BJnXNvD`qA=o_U^aSA@PU zOLph)l}w&-Dv)c~^`@_ruy4USs~2uA@7v-vE~LbeE}0A0N<|$qn>mX@bNvXaKr2rs z8Ml=UT5fYgFuFmd?C8EM3y#I=H$3q&zV+g6o?Bx7P-%kfGKngUTeVo{%@Byt%0W1G z@Vv$Cd*mZ?a*4HLz;uWar~0|;<^sGW^ThQQtqQtgRoC5Wsh@EJI_vH9Qq4rs#)o?1 zWOalD@zQH__jHZ>*2Ch=SW?gG34tS5TZPLhN=eBR%c9nFTb!KStKlVQ?SWcW1V<;P z=ds|W_tkd~7Z{JBnv%ZbkIIug2`1I*D~a*8iV0r&jV9;!4dZ_82HgSGbi(+c(H9 zmMw~a*pJO7L5t=r<Nt@Oz=jtYwB6;>HE8WMQrME$4goE7_HEsgkP$iHD-~+gv zH+)wLKeGHSweRmbk-Un|5llLBS);a%t%V*(t>z^$r}6QZ(=(L5<4g)xd2(WR$kKVw zDw!8_EkP=TiR>47M2yz#DzseZ_pyk}61_dH76{|weftR;-79LdbQsk(Z6cgT(j|qG znQ_FN+hT`$*c`fs)3G^HnWw)7a(6R&yAH7}T)`sH{q3GoE*#EizIJp^-7rc`^&a2I zcX`(a;!v35hMDgzUSM67R4G%|WNPJX#g|r=wR@BEH*b#|C(y&i3|!xI^kB~r-xAu> zWgoa`d?dmQf!u1lB4?s;{aW8GQARPQid1Vs<`ALQhCyH3gi$z|A{6@X06{;VwAzZK~W-HV#{d`j5b%09$$m??TpD5;I@AZZj$$fv5d@U ziVMsybV%!Lc-)?(=VS?_2AA>w;1!fdK!KA*l?RO$(`!-$#zMv`qZ<`p9Er;f{`y0s z2J2A-Nr3pqkK(hLCAf4F;ZL(I=c9~0Z+j46Nfl-GZ57Peq!z7$mOrntI6w>vxH4?9 zsA%+lma^~NMdj={C$fP>T=J3J6QAZB4gi>U(JfiYj-)X2!q5s~BJy3`jtT9tC?-yh z1szXsFn6iaC!L$JbVK+-3?u!Z-j0QTobK-gKnDRQ#+uV*aqkh?OX17KY&TW6 zHbnDDMzJzQ0mcoJ`A6LYVYT`rb1TP^*G{n~<9Bs2`+;vwcnh z`L^W}B7D?}6ab3s>vH7V;CDJrQ2+Y0!_}Jxmtn%(UQ+X+Zr-D0989)U>6*JMVBWkt zUV%ffjV$%3>@9tMvw4<66n;Sw^qeJeXdl6=k&b1ZZiT2cwMxVqO@((l_cIVarM=*| z7Vr24AVWda^#Bz=V5^{^wbbS88f3DYRW%b#Y70}%>MK^;ni4vVTkvzcR_i|cAYKh z9sD-`YJo+!2C_D3US8fnyo`~3(%ce_dPtdD@(c13)g zVK_+0%+m3tIlC}=>Iibj-4#41EJJ{{J$uH0a9~dhHCygt{5=4WHjEwKtf(f04Ike+ zGGoKLG9!Kkr=24r?dT4+Utk4JIz5x*mb7o~@g|(=Xg6xEv$nvm`%r6x%8IkKfs@x! zhk)8@i_$9Ip*QO;T>8_NVQ*;mvVva-@LRPscqV{0JYnod%Xa`Huuvm_aKg2q0UV2$50utdE1s>umCZXpSy| zFmr)s4#gfI5UGqs>Gx^SA!hSKG+cm81}X7{9OXM7ZgEbLcd72Do{?UMLeU<4snR@R z8mQ>YiT52wKfkdITZY4_`UK~Zpl!u0rVI~z9CGnysa7yzVyXW-=d3%OALAJ=u3&MA zrtjzC;~x$k=li=njldv+s)S=wF?jp_as`oV7#A0-9E0Iv@yas_-yaOr-ii|j^a3iU z0d!W%G*yL8TfQL?Ec>3G4^=@Tq?_kWJaM@`4y}{Dt*+gxeBpUk?K+Mh^WEoL1q9kk z3C~lDXS|w*vB?!BQ^yq3?{|N^?KsO!Yl~6BHmL(k4pd_t$a_yCGExB`NteE@1xx(W z2UB*aXOff*-4YChF`2nSfEdkvH_G6GmvaEAS^e#Yiv~y2dIa#wJcnjvG%`hmJ0)$g z24S2Ye&Wc>*4e}2s=JDD6a0rsYw9id5ajL6B!2;-fx0kqs$=CoW=r6B9_WU%Frin& z8>5JAlocQK?v%MY0$6BUK_g zzloM$Bq1u6v=1Q%?^o!>ZG8x2=&#Uc>DWy2>k~R?-JW@FT}T|gY@<@%ln2n9tOnb; zE-DYhQ#sL`(cGMpr8p5enp5#j-XBJ0u{YsSzbALO>Fm^O`)nV@5}gkV!@N4Q0F2?u zm9bR&jy65DXgO{9=tP?;ozZ6{Fa|!fdYU1Dc&o$22+;ye@tdCeg$_8zsOPN4D9`Mf zi-lhmDXwm__9oX9WoKbueyG0enjIC+{*QG^77YQR`r$>VJ2)zb2(G5aRb(;nfbLKd zEj)Q{dV-u!%TaF&^ga4Yc+^y)&vv0Pb0XiH>lQ?o7emTWz#52V8E#vC*aVd|PyE^+ zGlUnML3Q(CIvrY&O}a_5lscEZfNYQ0=3*m%p-Wu>H}dLI#iA%54&70kZK{nWZ`bwx zfzI1GT6gPYi;6k&c-yj}))YD9*L zYf54L^;1|XX2t~UfiYEpBcJ`X0^NqY=>SHLbpW*HSl9Z=NzlViP%ByFr8BBf0iK5M zSzj3zbPwxfG;YaxGPH#gzC{89{A+ZsXk(ju#-n4>OBJmU?aWmZALhZkFw*@zsKXLdW=X|ku25SJ8^AMVb5vUUtmDrGnc^dF?mT0a6TCfJ;ZHJ z0J^%YGGAY^+vcl5%%#m+Q>~rYjl^iwQ9T=<`fc>T5kFm~NehQ~-P){ddIE!?1Z&c` zRkR4cRlHQSoDg)oQe@Oh&rWkzQ(h0@eg?XP3EUqXC^7IXGWL$5Gg6|qZ_qx;U>(8C zZUo@6Q<<>~>JGCHQw=FdB;$AcO%>x$rIKmPflnx|8$$0ej$tSe zq?oC*Yz-)$+xN22uIQ-~uD$9$KhLAK^ktSr(Y0SZ7X5LJ&XlvW$C{NX2+BjhE=iaF z26t|zilXY1n$m!TA*l|Rh>=W<_EO+|&X!!2nC~}^UVp{>s@x3NRBwI8?~b9p-YPOfwOe56 zwv#zZ*tc_BjN6=HXZM+M@Jt_v%|JQwF`D?!fcinlxvxa3A}@<4V92e!1go5?ft*PBa0-Z z352*JdfT3hTz#brg-Bg`ZUi+F(3h2?VLq?n&3)`jZ?ky*mYbrDMJv&KSjDTfPVM(# zx)KRDQP$N=-;d*WT5eMCY(1;?CFtAc;%2;gyf`wR(UYHnJ~OxVY>RchA9V;wfnrY& z3UWS-4Qm95V%$fcM@tD2BduvqP#5GQQ>yC71^YYxZYrOfKvSsV(g>Ah;@i@7pbL`ttq6W(;4v=rH}vEedIKStLj}aaoh`=~ z;+S1%10LH%Ov<^F>?E1jx#X~_nPXvCbG#lj(6bC5Gug0YULS`)BJwohOD~j(5MUx7 z1+$Yc`&)o_#?6Lau_Uxzox5$A=_7v9pLT(lj5kxR+7R{QnQRD44`BhLcuc`DDiYhXk-^%I7aMz%*{?s21+Q#1VEBHj%{9T+P2tr6qn{bwNY{@-9r9#T@j@qwVOPW+ zz~N{62QOnV6`TSODBh3>+o5m|slg)QlPphh=bY;t!2*{$&z{+3!6i%ebQ$=T9A%d;r&px&l)ztwsr!Z&p#@M&iW zV5O|%B`_BLiqR>~XIEV+E^1*q*{k4MJ!WS$V|lUtLEi%*-*opqRVxwcz^*}I{z~tz z3_Sx9VrAH%KMXcLvhhcu1u=7U&){LxXc2`8cBr}+-$iO+Pgi6494;7_UNd>n%6aHz7>LWHO|zCc>QZ{k>cMtG!yS`Et&IZrEi^T zwH1>~WTiZbx!2OwTau0gPWXpN(yHX`GX$yQ;|4#y@9(mb{4OOq0xlv%Zbsz??-PA_ zy}%3756Xe%i&| +P8YckstVz9Vi`Xg1ZW%zkn`qMh+{8TIUE1w}{uDfEidGTp=0 z75<$m&X%~`JrKa%lVnK3RC2=dDC};`_A6r4+0|EFAI7M5?FwZ_74QWT;kTr1Zg=6* zc5{lkQQj)w48b%(G~;QukBMRH>hGd@1Qdg4!3Mr6*eJI9+Fe?q5}lu|>Ru7Pj3gC&d(BcWgbn}x`e>qsaZ|MB_GGkJ!!aL^Ex zsdgms9?n?54zgAaB%IOC)AN3uN*Q9EYo%liJhj6AY>TSK-ORJt8UAy6$ws{*gqN%j z@oVd(Y@x4)VQ{>VVOltkoe&kfLZPzbW1)PQ&1mmvgGM8C$2C5^g>qY}dp|jbg>GpR z!sM;Fp4Mm;;dHbCP;l8tC`q?=*A_tZn0CE`P7cDTR*B@Yq-fn^TY!{Jh{ z1zGL@*CN}0YL73Vj4OhmnT6)*;7F0Z3zvZ{n3$WG6YfV_dx#$BC$dVW3Zlgo?dgyO z#15pZ+l$4zXEaL_8|V_qP+xJvJn}Fa2ZzGmuo-llL-3f`Vpw41n3nq#B98c@y<8FG zpyn7mxasXioG-^4u2t!JcDkdkEZgNgc65!C=E@VW`&AVeJQ&Rht#_purnF7S!NLw2 zj^lJ<*%NHh`s0CZxZ(7o?aN(sLU#_c@Qs_Km{Ox+QAE(iNKO zp{T8+nzXWh)ir^do;;l!Sfi*v!~{JFM-C6ODEOqpSEgj}-r_vPRE1R9D@!Ec^Cz`W6=|ZK~#o6OCX1QQ8#EVMg>I3cQo5w zeHa@UtP@+8&?rS>Avsicl%hF$lY^2AK7I-KV=fV<5jmF#U3lLLtXJ*=+j1U>{J~Khx>QaZ684bq9*4NK4xmchlv^bT|EFaG}Lwko|N8WWZ{kM2S`78JG90weolZ zhuMj)vM>6EQr(9*MtCud);{817Ee?1`r&s3T(S*(t^=!c6{^&)mD-49LW5&Ed|K3z zcNYMLm*N6n)DOOvm{x6ZX?qf#G(I4y?tsKxD8+K4PjA zfT5F@hK{4<`m8BnTCyfgarbH^EouG)>iyx?diEzm%vIor(ppu*4A0^jKG#Qg6OAsK zbd|ZY!=3B_U98eGP1V=KfKsQHM_*d2vxl2!J$3deuQ~LsI$6EVOu6}k7C`2vMn_ZL zK_wZ8R~a3VKwl)3v5SX!`Z`~aj2;UzoE3bsl^=ZAidlt%h%naW4e zy8GVy798yQq4X#I!fT+O;p5^ULBs*wL+1Zu25)XL>jopzU zTR8dN>1hj0d+AXQ=hcE1CKIyy2!+uQc z*0DiKU#`(L;?9)^4EacM%gVWJ7yW=r-r1u-r)ZbmowprPz;dVTYq2L0PH04N+kTuo zXM8>+dy+ab(i|;MJs>=3yJ`i3_+?**rknNdFMbx~M5yY(ij>TH?M$$L9rR5CuK{5f z1BVFz!+SJqq*~e6c$CQkCN`Uf(V+0TZW0C>1oJeg6IA6cjoWClXsvMXWpI|_pgM(w z=zZ3Zo5tz-0}>K_D{dMznjrHqFwqM-UBSkzuc zR9~Nt%OsuoT7+53Mi7l|rSlk`SY(F0p0lc_I>RuP)}B(Nq1p$>IBw4d~lkA0a`= zH}{|Ok%wI&@6EyBbQMJ;O($ItP*~+fgxn{V@n3QBW}oGXYiE>(Gk>(^?%qJxq9lgx z(fVW}9dn<3*BP=L^KscdEr|D2uoI$;EW-Y}u!wD2*3ZxIWvrk~EO`Y^=V+cA9)|Ko6^Ska9=t6)g7i z<^iee`^|RhXhNU9eJ2}iFhPh$9kBdPk5{k$^zEw$I)5;y6g4l87j&*;x8OElmCSqP zX`G~&kuMh0Wk`pxJ#W6%>GP=DJypocV5-l;>D%BARMg>t@4vd=pwMIcwE4wdR>_w6e6cnmmH06f;Ua zDIEDr73F+TnKjm%rFCU(@F>l;VYXrB+os)13WuGU>oI|ZFX5ZK-@0xg`74*eHdYAN zDo{b@+K6ovWRq9vwSTC#fuVhtq_`9HUBUhGzU7GA)R-NtV_7^^51T_GbeZCc{tUK7 zc2#Aclw>hGE~6D7sq8WlaWZwPbdMRPV0U*&vhcCDpnaj*2)qub&Bj7aA1?h9v$_OM z#%w|>L#5$;(t5iQ=47TB?1hu2BF&kxl3*`~;?k1?hkTh;h~E9a)WUUXQmA%BlP(@3k-7y%iLJDIRH`iL`uk@dtBVmwMTDSSmOZq&^6 zBo*Qx%X#~hDba;$3nQZClo3a~lK6J(Q|Q}ywa*27B#&jcpgNtHgZf^J7z&7e9i@<9 zGch%5=Y=BkZUP8{?AV#SWmP0k8ivnsVh@RyC{tnSdIsUCnrjBGi0Q*lJC{dOg=g`U zvbZJ5YsGso%?;fs#oV{-alsJVZxzMn?cJT)4z9G>vt2Y7VK~90TQLWlucooQoHlg_ zVjIB4$!s`^rp{89HFvbqRccX}zMw-7W$`I=I&08bRpHMmK}f#KuC@tHEa~)Q04Ih` z17BZo3M?;nY}=bwHFO|!obP^>rVP0#7%Xw8(-)(VvC82{{bK;F3#{y+1jj-WJmPMC zHR6H8WQhT0b~mDeuD6aPK27a&gsQp@M<_$?cZClzEd~Xky3>lT-!P$NX-%N~pkztL z_urTHKiUw0tl)8b=LK~K_ysNT&UeI6?b6FE`N*Tf>wrQeI1FpC3LZeAdEH5l8Esfx zye;gQ!)}N35KcZke{k4Ex1%&+>a1z#htcnmK_Vep9flz}7U*0>mMMD!2T(iW<0hQ3 zv4A%9i4&`sh*WG9sYF^-xv`uROXVReuZ9`A*5GHs&kSM-6XlN9?$Tr6mMHZZ4Sp;v zdbE`?Dm$+TK=qy$c_@2@Q7hQ!>6?oX({ly!HpfvT{EY;0Vj$&rqO>5o&vs;{`&s>n zcY6r!G*OKqG-&atrl|1@n3Hu35fOFrm5!QhVI?0O&*`hCDYUl+>0L~mT0Jt{QjH(X zw}XdCs8fud@(eLfaXY-3PiN35img6bwSYeC6ATZfCiLkjAiuI}?dE-`S5osBcDoNIf2gC*+Iuaih!R3PVE) zaG@~TUGSk77tc-`{>%lbcYtdt&8u#;E<6X&t&x$+k+_Iy@5`yqPZrEbR0|Ph9TN+H ze_e=@@M+4=c3?*b&$im7a849Fkiyu2X#|ynRem@*SC8|=(Ig3N$+@DHoSeute+{@%^<81@ zt~)k+#r-BR9ENjNUrBwVogZCYIhxTneA${9T}crMPVaCkjLS)fYaL}wLgh6b5gt4> zt+*jgiN!OGmIh*C35n4rrQTZYZ48AFG`I+&5b5>6w7Y;UXlpMb#ksRCeTHHaG_rBz zZ%<5cg227=xam7FS1C;w+-P7?Pyp{AxW(kdKCm=Y=hP?-8`PYhgOON}lSX1vN*K2| z3IStZEAd<+q~56y?(JZbeT>ngH67sei;N8%U3<6Eh{l&s|ROne$=f9+mZt?SjZ+qx<$}z(p5q!`R+qd+4=WdP34vP zBd(3W%d+Zamy&yi{+&FDL`WI`E|GL!vh**0dwEsLBI~NnX6vMybV=&wTIjjc>kg&z z*u7I;6rY!t53#WiHO{!s@ZCVe93}gNA0@Zl%t+$aL_R~JZuuazm1KK1I^rM_=F$={ zu#1k?cO}1eJ3JYzb%hX|f&y5rRkU_Tw(dUx+Cjd%Ai4dCS^G~j#}|Xcf5PQT>e}d9 zF;W5To{dfI9qe2w1r4nA45@(r%QiL^hL%4~qyJ!z{nM!OZ%r0|LK*;@GSszv1t%VA zrh^5Uqk|sd_l`lq2Sfk}{RmP868$Hm`)RlNw{5eqGyl`I`Y$naJ)%0ye}YUK&mUk; zFtT=hp;^j9D&(!n4fP{(p_bGy)iX7dlB?>MjR8hK{=5W3)#^e$Pklk`B9FB9LDB8B zBK;db(X$VGIj0d@v+t28MAquzW83kmXJqg@JqX(=tg9y5Z(^ z(en>*BjGp*BumWq{U1f3r56Uousvqqt7T5bp9Zxr zYv#qlmyv~$;~#Ljzf6Gt=(EAb{4cCrX7+!$?E+Jvp}){i4*@z>prJ7xFbimB542eS z+1S6i?Mhj@IhyPK1KJ2^w@;@eK_v4>Xro`&$G;ks)wMJPynxdJ>xo$diz`Xc{q#m~ zwER^9XxVS*pl<^BZ#<*F!pmi3Wc%N61+0HSRQzdm{4zQJ36}fcPGK&x}89r2lriGco_0?el-2;-*%nNoVd;ZdUNq zE`W2?#b9I3QI5Q^=I@5bm)7xr@Z>*Lz5C9?iq5pl{;8}R!INl|qdOU2C|H=tv8Ww7 zvA%54sz%}`D((Of6<5pWYe+d3ygwLr#`7WNQm${r5S z71Qoq-fM2+T|ayrfLq_7U=n|CZwzwL_YAMDhFx39={M>)^2tC{+->R)G^EdRD+OiF z+6nQ6Wjoxq%GZ%d-L0+VpFNPQvKEJET?Y^)qgaKAT1u(9A%sfB9)Usm>R_#B{$!p1 z@*;Sdt$(s^2_O=ugQjqdAvOa64hqB<#P`nz^?x#8XJ+|V zn83f}*#AU1hl4pqK)9H3lJ1w2eAR~l1UL`fd-wyuIm9o3^P?3MCR%T=bp6(EITxPv z&)404E3bhF=c{Wk2g@&eehSn8`&w$kCR~hit!x>~ArX=)91TD>fwhDFu3)7!LD`lajfdsuR8aoC-*+P&d58Xq*weFwmMhN%_{FT2r~cVjsHE6e`kunU3vbBEBni~Q|0^e-Oyho85YRGVW~FFX?G-+1J6#tofk z(J1RJ#9f-dC4=BjKjSA|z3?%;V+njXo8`RP!FqgYMYUBU0yIQcN5OcqT_lv=Z_E~2 z8YZ^I7r5L8a=aF8vcs4T%-t@%pi~_MMR0gdOuJ_5!w4{3`pxs9M-we*+oPwPVgbb0 z!7B`G9C$gEeL-%DTUteaXT%?EHREO{v@+;`~dm9_y& z5P|Yz^oWyb<986%D1N0#$f2S1O;n3Ryhddsi>c}E`ds()3Q)N<#ZS=Bz7R_{Qi}~X zQ^V3+psgF(smHb)D{C7KvZh0}n%9s0JEES?6P=;xufyOt3IV)KY8Lm;mIB6KO0P88xJ`?^H~ys zls1Y2$0BMw#Jk!qFdWet{XJmKbYVUcmt^_k{K&?70ze3Xg9}IKf7`{Iq&mo2#j1;% z7e9$^dUE|%LkJU!YSxU=ZtXQY#YWhJ3`h7y6p@^0$`aa!D3{3=y3_TOW>jE{{I!FD3ppyjA&6YX2#5z$X<~>WXqN{Ve9q@{KId~j=Y7@)Sq__dzwLYT za_Cx&Q^Ngc#mwlyp^TVCRy}q*>byN)H*IswiTZGoHG<1=O-}Td@S2d^mwTV*_O`ST z3#ZRvIC<;Rv+=}B@gu;5OtR@B5~!&!iK4*oqwrM06LP6%%wmZ@8!urZM9@M63nP$F z;9fr%FC9lPXV=Bm%pRtuQnTFSirRyccXDt5294U?L#B{@H)cBeTQ!t6t{uA^;;)3R z-ecpo6S`buGA7H3tQ(loO4GdIa8%|Eo}@@_>0!T?GA~vf%!&mY1l7d>s{beqTE)`Q z+HEJ8EQ?k(b91rrFvO52(Lxtd?Hi3ZH`c&RVFxtH6Lz&Hn#xL9QvrG?0zyxHhpnZ# z+xLFrE*3CZ7DWL6Tr631SsYp9v_WhMx;b8ifYP>N!H5uWpn<}QU_`+LL2U~bya|X_>njis8hd zQUnu`Nnkdhm>4uI8E}q4M@D0YNY}=~+R_av8ChtS^Y^v^p0P-NYX#ZW=)VxB!6fY# zkVruhSV2>tp}B|Tzj!b&(Zw3nR`9}`w9(og=uK8&YN)t40jLUu0KB`ZnFo+R3imSz zq?Oi0VJSdJBB1z10UR*RQH&reA`VK60M#XmcquSekBl-nGhi8n8Qd5!;GZaiA=r$B z#s^5{L{0_3pM>)lTsQ)e8W#>mNe?bj1`SYXo4o* z#vV|IKyHtlrGllolZE9ttv(>9`zM=y#UngHcUc~3a3~D+9~C-b^&toCYWP~@_;pm7 zP_$nF$LM|M*-6njXYJqwyBFKzwbdSW9G|f?=;@-|?3$$=M^Dr``^LnjylG@rG04aj zOiU;;xfH%Py0M#=6>~Cd@++fQ4yjTNfZzkSi_EuI7%FHiLAzRX>gF=@t>QA3^iCff`JR$xiBZhcy1mn zZLq$V*=`$0YvAcY`UCtr*wLe$gbVZsXAd$WRBkA^#v1k03B<*s?GqwFQ^Y3(yT|^TcmIE{x5)d@s=QPV z5)CAD88Hmzm$Z`1>+`?ryC@zJe078EfDDI!jZf^3EjA@N=K8lw6gQiv&7OUB6aNj= z!#*^V!+l@unyU-*@m#ATuHKG%6dcE8Wv{4WKk_;7xL)6f1IiyIKct2TV66l(eXrIj z<#VfxZH=nL9I9?(TXluosb~Mvd!TcCJc4`Kc$SRH7o$;@KUp*JU$bWa<8nj#e4u{^ zDlV;#pBMp<3H|+!A50eWSBoIO)6(1y7y=Xy8R~#Kg0OB;Ov3jc!0r04bpWZ99Y;Xg zeMs4H1d<4#%J~It|6e<56Sy;^pS>BRSbp$kaDc7{iwAHBC>-b^f&L!>^akFuf01M*kDP?eBJT$-N~44(_j$`%6STI06HKl-7H^jxLdQZwaO`nnHk+x!mO5 z5(O91U!o5e&E67Bvqi@BgXN(SY5JplD3~wo7Xg4(R{tR<@TV}@xS=kX3yn4=xLGx% z?i`F46BNh(643u~`=EGaO&wNSR9lqs(RuA_&etSGk~l<$FDXO`&d}O`3kVexk>7wb zmlv2JutA=YlQST6fr!=yb7cY601iHprRJOx0io+eN;$5{h(J`2vOes)#%VfXnlW-& zjfDk4fC~xfLCpffBuDlX!8hGf%#);WBSj>A;-jE?p1PGQTaGz#$(9GLD+Z4 zd>n+F_c!@CI1CuuMd3t22n@u@aTw4?21lfc+YyR?L(|&Ae8aTs$4}vqKdNJbpD3n7 zqi6NUD=pR7+60#LKc%H8EtMNYt+a4B3Qk-=D7C*UEmXLFH+cQ49TO};9K@|DN(<8e z;3GPemZk>*lZF4Qm6pl{nxKOJWOe>@r6o*0O!lABl9d+bJRhf}g$J7urG?Yr$CMT> z+~20OSUkve8B-<1{~9QjS|F$Uy0fuSR^dyFALS($XX$28OK;H4VKb$%-P>c1L{K*A4{ zU<4M7D@_)PfZ$;!$|{5xq?kf@bcP}*sE|;^i{=;!ynxXZ!unOQ!HC8TB@r{Zp(M~Ay@MBOnnHkd%8h~xksE!uXh!Yeb*QEg z*RKi=fke?aaj3nU)KJolaKP(rO(8%!1xLY!2#!8nG&_Ota$-}6i*CW;ATJArLm+|d zE@=7?js&?TlNm~yo(a5a+7#lOOm1-A)puA3NIGEQY0pxD*MyrwSagexJSGVvq8Lgs zQOGfw#G}O1c1+;4@1_voWO5^qNm6jZ`bH-%nvMy)wBHos`bEKsi9!h*V3q?sFAPd* zo^&u74|^sP_I2PT45ttveS#aqg$Ry5T##!rF)pgW%v5x7epPS?B#PjmNh-AMBqFv6 zdpht$(0^WR6jX@V=s`u(pM)3LoI+H;Dl~X55n0#7Xk>y>W?|xKdz0`|qEiTuPF+J# zAtIv>6-{3fUMF=5QPC|lBvDFC44OKNB_~RW;h}uDNqk8>m;^>+>MXn->=Xi=Ol(L_ z@fa>RQHm~HVziwSc)8mt#PzF!LqtUp92oeV#6*hGc1hqxeWwr}onoV)Lc~T7Dw+-n zyv{Tk6}=;$e^kB&ykPb(0{GKMf#4O!X=D0t6o@hNcoYa(N_}h; zh_ZY;I6-EHfc!Z+Cky^+z6A~o&D zeo9yPvy_%9Nrqml^T#VK)hN#dnEq2*iqcXI7*Q)NR4uk5N=wd)g6H{S0N2m&Op*e= zEMRURD=ij8xgj10I+b?9E*1t}UjE;#wHRQ+etF{hpRTqT;M-3I>OZ|D>n%ojAHb6GXNgT5o@PZ69AFol z&<~`9fW&BrfH0y|p42}mI0`UCbo2qE83n?KPVP?q**-2tl*-AOz#;qz!5`mRQu9Ag z0P4TilG0jI(?9>vT7J(fM(R0LYY7+d?`kb^AT3cGB_>Xu!$T5>k0#A5#xT%~DPgD? zt0$-=Kh^v{s(*^XQ29CZBKY%lm&%Em0MviFJEpr-9uc+f!Zm~J=_1VAW055c!X^Ei z5{z;1Jb*FX1&jk=99NtU-K9DG9;{UGXSqxykaY!m{|LbVUKAQNBhnt~6ayRzG=^U= zm_Ng1q5y+kCOU!9%;mwrq{id`!&LZ!zc>Ix#zYYv2BN~4gaT8H_Q)9qrum&hg!FY& z#(*KBqX!s{_RtxIn)&%p5FLz(L=hcK&^if`5{~xh8HSq2c`6XnDLM!k$W}zU(Rc_L z5l`Ek;3jc){xGU%7!xpLQ|EU~~wYn@cA!np7-c5v1=Do50ii$pQc4-B*~O{a+nF2a6Vr zDbfUD`Og8TIN)HBfU&|FbHE|e3k;d4AENn3YC5I+jGTc7k$#gCjwKOcVlO-vva{k~ zh94d|#(|b)BJM%T7%%PECCqgDi`D&)*WrIXcQb|#^5*|^n4-fIvN~hPw9bge!r?G- zHyS?ke7s&_HlQ_p@bm$rnP82XYS!jo z6&;KTu)xBzZ16Cd^CZy}>?H9bYX0V_sGM|)jsgr39eu!PCt6VRI!^_#UlkpKi6T0f zd3%!ZGj@`A5jD&6R3M~NbQEBS=;#ARd*pzcl6fkC{i^5?Occ>U%lb?fe#SD;?vhP4 z`7)iNqX0uhM;|cSzUowyF8`|NU`%5MlLWWyw4=1xN!q%preCI0bQEBS=;#ARyR8F@ zJB)=%{sgTv`^0&(VpM^ksX$1l=qSKo(a{NPlD3X2L1-#~(XDmJ zXb4!UbS$Zm0CDL|mQ*-d8VEH3^HkuQOmN6VH!>`Etd34twA(pqTIQ*M^{Zk-L`5E} zBS2g_69pbANrjk6+Bs^H=BYqPr{E~S5Yf>GjCMOm&8R#TzkThKPG(462F#&@A!fBLn z8Z}SykKr`9B5Z|MuExMM{f8kfxR8HWI1R}OCEy59I|4X(pqx+wm;^sztAY$?O|q^s z22bVeOi)pNs_K9Ia26dL%Rhnov-Fpm`FH}c{HMPZ{iUW%{!xDsK4`N3{xqBg7xM4Y zUuZ}giyG5kFdz+%=+R%=ofT@f<*9Hie${mn`#uAT0P)#P-dUj?3@7|kxj!{G4Awu|vV>)DQqrgJMMh`67p#cJwlk+EtO&sEzKvL%k5SQI# zMv`{;d#dS>>C`m@6e2QuK+z5fP*WgJ-~j#P!u|1nDK-Bwy`cUqzm%Hccmf3f`K1)U zl$tmBN52%V2;_bxT+@H(SHgw-yZlly;M$0x2*5jq87Bdcl^BW$yi;&A{?HDkUrF2K z{$rHN7_#36j|UJzCN~B&YS0ir7BGboaZrOf!4lh)Ff8r-6KYQ72{hneXqc${8hSzf zVTOsybD03ae}-wyFj4tKe=$r@MW7faC<^+cVS)_Wk&=jk8M|m3 zCfeQ-HAnLV73JTjztp_U^n&`c^p~1}c>)Cg=`Tfpso9)=)L*zFko6a?=|AW%T*$vm ze=&GyK{Sf~VhGSgXu9;5cE>=RDj+mLMfn%%FI6~*UQmCS{!Tt*_MiTa=`WSL^%wnx zGqjO_HC)qw)L(Lo{ChYuVIl(}7LbsDg&$z;1-aZ4ko8hJ1+;xL$O_%mpQihOSYt zbTxOeadvZZLBVVvThS_JOZ+* zfiDaQFvtG`I-1CrKkSHuvv`pI0beE#j68H=!h3xG0=fxh`+j!(I}yP;Pd`3~@(if3 z;H$^p>HEE)mx1m_DNxEC;Nx-McgjK znmg9mQum7})=NWMNmEmOt*nL94oeLiV7t(eaRQf^Il4in3eXS0elmKaqq&oXjiWVM z$->gn&Bo1BSn&r#C5qN|0yYr*$Pxv!Pi_5fxu{=)x@$vu31wYvMScCX%1&OJoitpW zwkZj#T3Xn+JN)!6h*R)OuL7+QKf$X|bsT6Jz+yk!3eY6BB02Fv{2%}_%TPym;nYbWI;pg6E0MRAyLI# zrw|`@VtizF8)$_YNQQ743p6wWW$e&{aFQ8xSYXnpRDu%^31~Huzb3S@ z39x8=Awf(QkjX`1!OENfCJpPP!QjGR$>7Xj27kIRxH4!l*f3Z#ID#{74DRq* z8Z@Zj0pD%bR9NN78XIKAU#Rs2(;^UR1VEWSdDaAEjcG<$u++rszZKaJ%?uzbg}{*8 z84R@a)A$wiyK6VeBxWo%`TB1KM&T=j*Dt03Bg>2)V3SPo1)MG4>*5cF8rB7P5;4f7 z*#sMF^d@^VH%kRes5b>-KQ0bXC^G7k ziDF7{a*BSQ9J94tH{jq?t3OYlCCb3HeaXSOEWikpZ%;AD)Ew%tIaWg<#RM5&IW6$& zTHv293Ih)RCv^df#}M%1Py?;U{*wDBS>%qlpJ9 zjvWm?()bDK1JU2a0rq00-0o$AEwx)G}dU&T2Yv z(F_%1G1S2pIVTTL(-19%I*4Ecn*Nho|5=VDHA(sp_UbzVdTbR~pXQg06%=#=x(TmU z2s)wg5H3_jscaZp+tS00ZbQZsbeH9k28Y66|52e6Rv&WEu7s^fmk!j#gavr z#gRo$n}vGeNEVC;0SD|hRs^gUC5F$2c{~7BRCIig4H~17b#!zB?ItD2ilt_6pFraOY0V^BLroMvK^gv}HGh`vq$Yw_ zwy|(EgobHA^##K9qb@kZqN?otU{L~ zS#Hn{<<4;43HXWt$4=lK^5q1WH3T|?ED{3kkRL%9!%sPZ%m4>J0V5djqX@_haOlj~ zZzwlLrk;YYkXfeC4jC~4p0f!(6Q0}%?~oA_;CXZK88Tu5JS7W0L%B0N-v>HFDN8V4 zkNiHAvLsN-l0Yd-0;RwRlma7A3XDK0Fff6Pd>pH3Maro zXOI*JXooBc0^86Xi3B!e?VIPePZkO30mh#q`~Tv@~KHaG(VKid=L=xGN2xq1+i+#R=RQ?%6LM3*Ttr3jfKbxIAP)Fw*Jqf|vo-5jgOl!{H!A<7$5AW&)wx%kG^ zhg=L4-Gez+08*Gu2KuCYPcaNoV-L=Yk)H<>SV70+=fPZL&@uUWFs&SPOfF@ZArLwy z-w!5x1jjI~CG<&tf0&^ZIwrqAMO-j*Iyg_M29$b1wlm059MJdV_oUP1t>D-m*b3Ki+I>iasPBwa{qgTC%U}-v zL3eiq_g4d-4#20d1Re!4oJ#%1P(e}kyy;mTUK=gv=7>f-8l+sYh(eA3Hb^4t_n}Ve zr$bfn??0Vv4iIZF&cn^ICRjXh_Q(8k>XjCd_a`?6SaM5%C0iCO(hgAF6SjPa;8b9d zS%QUT%^9?TdEWsG?PpgFGKzm69N>|mSlhAooKjs06hlNnn%{BW(;Q?k|t}sksJZBV;g?297{!@d${O zr1w!`e|Z#@9g(Bt$0%Cb@3wTaF*p03g`;cZDC_8IGnNW7LCzqxXsGPS&v#a{bhlK| zhH@9>EGB*mjYLK)qLTlvOh(YELWy)@zzc#C?I;OpZDPP3AOIDFe+>4a zPaJ4rDHl!l3EvA`1KoqNLDz^w$KY8+;8qZUD+Fx>(AeUEJ4gg_qMXl#T?dDD*wNfqTMPh2Wi`Pv{+>Off8Y2GmuA zuA}~he*>KZ&%*+j5PE;;duX2oT3F~jbPZ+0L0Ocb#lrzN5&8}f+%9p@f_LE%7wf_xvi@Sq9-or7*J z20ozz1z|9Fg9{ZZAW#VKy}@tb@4&O5>&3zE;51IC&;UlL0*tqjfFnq$5KyI{Y*2-u z-r&jraKRM;sti;c^j`2W^gY!!Rx!wehlKmr4XS8=Jx8eoaHW7M2H4=r^Op)isTgo& zCs!o6VnEV^HmK~O^B59UiXvh|$TnRTN<(x*fwk+<@@CG8mNwQq-9TQ87&$4>4J8bG z4``sw+7*Sv!Wq(Vut*q$0^sj}_(4g)Yu`aZJ`@8$OI0v7ce)N?)c2~vFAg}Q4PDmk76n8x?o%UH!x-MB{@0c7cJ7b1n%99$$tEe9L)g zTXw->^UD?Nj4Kqi8S#qvUFkDyY%h3)^0Gc)@C&Nk5gImAX8KN!GMA#&p%qM~GB(BM zp1-nNu`{^nppR`v-OPh4WL;VqJmTIz&}ItX%hVWJsa147w35I7lv-fjQBpnIb75JR zz`B_m?#R1j>bohnFAM*YB+tJ%ZA(z-oHJW;-&nl5Dro2*HqF$Dcm9?|io7fgi#<$&DZj zZ4XuOr%$&(Bp*D8^;pEt%ZFUjS@8>_wWcq4988s1x3|W^M+%pZhS1fI0 zc=CWjbidv+%@flUuh}w$+u<0V3or4jTR9VT=d{KCI;-#*;dhmup4^lv#45;sb2Go^ z;c1Gz?-&GYHLuS$y|PN)wz1Jt?8p-hJkuW5ujX>ZR)ckD4ZPSKGhIc@BW~e~g7Rhd zThsWvw_uiKI7<&Xf2n=U#iyQh@F+&|uE)O6*G0uwLX!IS>?w$>Y$XP%T)z9njU?|6ertO7y0<((|HDD%qMo|u4^3aY?%qAa-r?xj5$iip zUwS5_L!|cQeW@HT*DW)BvV43mry6e`?)qvWJ?b)er|@xcVDVsSknaji4t6JV$IQI+&_*D`H_Y5Mz_zpOT>RpgO}h^kkC-{LDJO~)7Ci5% zFPAv|=#^9==Cz>K>BO%V>ua}Pw%8&NCx3-as^gGQbD?xSdgGj*>+7HzPv5YMD z{0@~@_qYrnYpRdtDptN+CbUs;t;D5S-e%SdPirnb=A<`Th~~hs3~$Zn9XKDo;YE(q z*CO=0*4Lyy+pk4j?^^kFqss+u`r`H~hFO7c@>`#`I(gv+&s0e|>`WxOrZgpVL^r7l zUT9LisZIp%+mT2NPe_cCY)&K=q(2f`Z8^YYC=LEND(^l|a>l9j7oBM`(ST0JWmp8J zFs^!BJadln?yVBnxvhMQ- zB%ro?6aUkwScM0hxo3J_f5di9Yd&G*+|AZ~l8Tr7KVrDM<{!o?X8FtDa~X|p6|>)1 zcH|PVJo&I!@h;Kj88_$ku9V=_bV}o#-}|UWKAB6?Nfafhuz@FuTRT4L46a-==nSFU z<`rYgvb=C+v&LQqyJu;Q=JCWgGbLj3Rl6dz!Z$v^HZB~*OG=ts4xS^V*z@sz=FFIz zZf3c+Pinf#vFmAP-!l&}e!gsKxwm^{ZrR`-(cL>Uv0PA{scWQ2B6&33dfiO6(aQI!?R?q_xdjYi9P=a&`aEjx=?+}92-CPq z;ayA={*;Mpta%i%L3+8#nH#lsg(w!QUiHy0R|aO0w$>f#%?n=@d!#G3H!ot9Bmdx* zAYMuTL`?8SPu~4jRg$~bZ*4f@+Sz$Vc;V+Qg(+E_g<@Wxye!^uW`5+~@O~LXPE@V< z)@IMjX#L*YCdHIh1rMb;NlKlCo7KE5$~X%J_kQxKE9cAiH`@|XYF;4Sk?{Igt@M6Ke zU10%QsR^MC=1IKe{kipuMXRoD4wl-*I?`XTdA(ZBVPQFf_1XRb@Dkw)O03PYE_W*Xd7Q4ucS=Z)QceJy%5v3>~zTqmBD%?&kZj3 zrEGGfZ0^e>U)$_>|C+mZPu{N9&DX9TA5718*x-MU!D?)r}#FXpcu#*$eDw+z z^dkRKL!au#J)w`3XVpCM|2B*%*1MnCb62J2$)V1Q7abDAY}!M{(aCAw&f-&(hN|9n zYz;`xSn#5I&6aq{`>fWNMSRo?_HGyQkyi8c=_oj9qPJ~cq>g`-jE`<>-?K-8+fVti zo^ZNv_jSPv*|o9&aC6%e8$C^U5{Hfj9s(E$K$Hv zbM{mLq5g*zT1B6Fd0q%epB&QYl7G&=LOMG!p)RoW?#ZD}gHzzzRpt-z*AFk%<6&DD zeLg|5Oa4r01h_H$mzog|VeD8z$ zVXH_x^+6%5>3_KWsTSw0l$YUr5ksakKlL*~?+Z@f^u1Katlk5?)1~Kj55aZXT?ZRH zrO#dfC411?=@vNCX|ZfgzvgrH*fTJOCoM%M8%A|yeL9(18Z@N^KJAg>W4_7fQaIYQ zzZ=!Cs(f_m3f~c@1?n!rqYFL1oW=9|N^j;JjdADMdY@yTl=aLnZ+ogTn>;ZGZtm^W?K|uIh0tErRo?7Seb3>2ru$%qeRcEKtM=8O+upYsB;*?yvAGdociMC z;AgK>*Y^I&w*EKLW5i-gX{O@)MeLE;1~r58jX;wI?? zos_utR%U@h<{ODq_eLF?nl@Sp&XUWWUdGUpWP8YM4S&`Olfg165z?AcW6ksf7j#`; zW${>_cCE4uI1;f;&CoICo+Qb<-+3h}#xJa7ID4hnw$M`R6`tO@;emGH**A3Rj;Ahn z+Og2{gvXKsgJoQt>ZLI^t@vKuTq)kMotG0J)9K*fP>&ky<_SHRc^k#-80LZ5 zyQCcD8n?90ZD#0AZkd9|3@(cq^CIS;N=5xD&rGXZxp>W0B|_*K3r0^xLTDiJ!Tx+^ z7k{~olwj>8qwu+POH)Iv`}!Bk-V>Bqb6sh-o9T(xBQj}R26Ab{>CdHRh2}@O5f2^n zd$XeXlMi>%RneKD0*hrnClxA|9G_M<2RwJNOuUG->cfpoKPfb>y@6{2|IEQU49vQC*Y4&Qu* zzF^2?t|w-0!1FZCZBxtjzss8;hpd&r@3~x}SNGA(M(s(|VTK>WAmn2tGsclL+&}Yhs<<4 zk@^gt5FUeC^?bHV_?&GEz(-gNs(8=b`!gGgI$b+w8KH>J>u;^)47Ir~650ed8_X7- z9`0doG5yEazpS3Qnc1OaM%P3AELo|?Om)ZN-4E_NF*}dT$H&)q@LT2ecWL+SAL|^J zt{TbR({<6Qx_ac>V4PF+?K$dy4ylh9QBv! zJFI9bh`M<9;zbETi(&uU{;zaG%h7o}bHk#}M(WrEg+1ja|A~CM(eE*7kC7fE(iI;-5g{mqFL>1&d8l&)^Ijo5nSq(S{qxT{p` zp5RYP!&{r9w%k9}Z^WxkI(_oQk+p@{mO2H(ZaQlCOCIuPZu^V_3w{B$gLy60(N7 zk1ncrG z%1(2+xtFtU!)lqTW7F%57Uc75`R$9DUUx8Jb&p%D>i!wrf)WJN&{nIN7-FDrS=$XVxyggU-k}JzwGGgb=(V3&(1TDj!v&rc+WD!Lxd&t zPNcoR>$Zg`Ts})E>lwpoF3VW1UDfide6>o(aS=DlHGn0(Urmzr{l}%OTHLXGw=Q1S z_nBYE)PG%ODDAd%z|xWj^+c!GSn1x6vj=5RZ4F6%Pj&qE4SefqA1ustT5NTEiD#R8 zs#DwCnzouZ5(#_q8WMXVJG+?Hc0^W17QQo9Eg>cK9O`MF-RyX2_COeJy;gX7pHtVf zR1=?}-7Od0FVu%_xmu9qr7v+ZBln10S?$N1SM|NuNAEn9j7oWwu&4R+<>YNIOZp<0 zYQ9;^TwJkMUHxToG5^gs3!5DC_|ti|Ug^G3_kPzAV#|l(x>qfi-;3cjq=s-;k$&EFq^OhcqYPDreM2tPzfI#cGgK3{bi!Gz zZ25Ay+sWx=L(AjM`x{t2*v{T<-F1mKRVazeW%`#>4^GBe4+(0|&U?q|iAo$YpN*50?q1+FnYoYIOFcwWgKKVvHsC*z?w&YiIn#k~iq*J|oxL&t%&9 zqnv<{$aN z)_NmHu8Cz8s<;|=y-qIoSnrO<&78BAvz+(f|Mt~TOOVy7m{ZYZWy9O#rUCcS6VE#_ zn>WqDZFdp8cm8SB?G*mR+wJ^|J+OhT0axbWAL;}q*4oPNsc9D7zxdXny|dT8e|F>0 z+98*@&m>Oo{dUMCe;&*I@OhoD-ppI-6R>BYPkkkhwc_~RhzkpRbS`LUl`KiG(cQZ) zz$*WShO5Y8yT?vVWnR|^gdLx|ZgB0>opYL{HbRdnW|!_tpO*o7%R7zp)=ld^UX-Rb z1FKNKZUL)Fiqe8JD~>MWZ1vOL5iHDMIHyix2Jv0b7NOP#hub|ODctaL^)Q{* zAfCK3MvIA6JV|1avsLHphVUaZVqVT=6)!cz)ns?pN=DW@9|~Caajm_;(noSaY0C;$ z>k?*hEpPJISK3kI9QkOv>S}%Y8A}%(zQi3Pt2)DbjkC^1%>?f0c=5G~GOu53edckl zQ%?PDN|_km?QW5dyZ_o-MjzCqYg)MvKl-?nLB=diY)%39hPkg)%&_?0%KhD^UpzA3 zFjq*gvHbe=<0b3&e9Ttcuv)h?nK{fY&WppaFPV9#==Dp?-|S<({K~9iB~BTIU3l2J zB}O9P$@*x#%CzKt=DWUqym9tOD#yC6O3igeLyxq}7Z0%W@%l)fip%;%b%slV|SZateD{) zws1j@mXVrlbqbb6MCjxJWtRAJ4w3g-rFOJ6SXYmZbd;8^itFKU(JGS9+bCO|EZFeQ zTE)fK`zhFAx0r9<%Xm6h?@H1|^vTQj5>B?7_a0Z<9WTO>cV{3-w&0!h9G3zq^HA5X zSHX_Yl7lffN0%mhd2GlL|Ot(IXTictO2JaPe^NdZkU(s;izi zlEjs~3Lh%H*~_LDUgax#RxpRpV3ksb(h}&jA~?M%yvkKH{FYQe*u`F4DIG=v= z>=B9KZeQQgfzGD8A#r?s{R8`aS_1En^mkvuo$(;KtTuEexy+iKxjDF@!g%zAr_TEz zC)>TAn(gR;rSbk+yGV7j&iIV|ks3^VX_M74%(f^ep}Rr;t)X7)$c~(VC*Lmd;WSwW z*pJPcF`~BmeyNqirQ7!}IR!-Td%MThk!3(FA18dTszuw_&Ty3PBYOHAhG{_;4vcGc zsPaPSw>reJE+s}3Po(Vt`0M6hvwta%zHGB5{vM*nG z429nW>`J?RHmJ62mDID5M91}?oo|{2KU*SEy^n)67Bg#Q=7!Z@JMqkGtGMQ#E;Er- z=rTH#Qdt^*;>)f0$PPR1`g`of`$EiQJ=$*w9vb9f^=-diPilBkA6&MSP&)6(V+Vy; z*9RB&_1$>a$#n0u3=hL94NsMIgmuoVc6?(p58K1~Fk!Xu(T$0-mI~s8Sy`3%wr}5U zz@bkPKD>R8tWjPbEB8AG!tzr0(2#APDh_9NVQ0w}G#$*-7pXoR6MSzTX?|J3`RRHp z3RMh?IKzm3Gi)EaCT_eQ+M~HnBf~FZKku=CjTb}Mt+pte#y8!(!Ehbbxner&yhVN- z{&_EKWG#;0LZ!u@n#N=wyGX$p=gr}H^%knD0(`-xV5Lw{!6e`^!Woojw$*=^py;N$ zt2UTC%f!MhA1*$*q1VKzCn#z<{{V~pXO5X!GD~WhR%$F>B^t9p$@F~kU2tEQ0aTh5 zMswY3rkUPHR)|)b%$YuWV_n1(Z3Sa}m5mnarZPgY4;F--sFB%mWZlXh5utk;3TnLp z%UxceGx7CYgc}Sm&HSIJv9hc7TW%Dq@2h#-vU$jRs6TW6<-#xhy-lUE>ED_g-v)b|ea`3{eKjbx6uNfq|=?Rwc#e4p(K&+R?eUCvd>zBD7SRX=z( zPqKN)q_di>z5Ag@R{Gn>zEgL2wspwVn>Hx7c|J}2kU%)g{-QX+${}5)&1leVzkS22 zp3zqlw$>R(l+Eo-=Er$%ALQR<@&mSogTy-Dnmj3CrMMqn$W)3yK5yR<>XE`MCSjwPxm$-S=-jcah&6YiyFxmwO=w1T@u? zbcP?aB^9q}(|p-|*(ZK&VMCKbRh3d<@xfS+H4a+~wQNop#HK9RM2zi`JbS4@sqk_V zb8L#Xs<8UDiWvA0{LSb6N!>lC*(LRRAKQDTz4_egxuz|Dt$G7G#`9y7q`+rR^>^r- z4MOQccN=U&q6dAk7_GOL}Bev3tj}H@0lEcKJOH-rbi`!FcX9 ziy)KStRuc5Cv@?m6{Ss&Ro*PSTcM=0VtC-ph0H7Yn2J;HJYKplRMoz6R@HW2u>BhM zHr?V&yP~X0vr4SC)jH-^UTM49lEr(q5Z~^QmlaGHSQ3|?>V7u=>NVDvEmd=D;#&+1 zQ?QQ=Qr4f}p}P!I5z~_O;wGL~Sa+FbuhEszyylcGYqng|d2zDY;>osU%gsOBh<T7d~%jcatuEaLIOMd=JpEGm&9+o?);a2>8I$G}p3MwPldRfz zi`TBato5!Qf5z5i&ry-95sE_hQdpG3nsc)*sP283w7`XUMUB62xky52;I();UWuI0 zoUK|c<%3JsSfF=r&78kRnU!R(ofLXun^bz}g_TiwC8POD!gakS+df3wB`#TUPBU-) znIr3BQVKr3yJn@c!+ndzHrCJ#?TpYX+glc%dUC7R;8hCq`_*k$SHnCbPH)RIu0x;I z>ygWli%nP5KbIjGl@rRPS8{UQvGc7Z13GI8w=^mblq)~lsBXBgC+G48gUs|L?ynt$ z<O*)EYVEECuVdFKDQmxU%Iqau$-Vy1kNKLbGkpi_k{i~%^zN%EE>zv!5I8zi z+a2iS+dbGJ~Z2!UvF0j_id1Je0pDd zWy6aB^qRr&5EVdsdvj+0iqtvUWtf zTT;5*x8LH-UW-a8(pL{(kF+??ppnnd4bPZms#jG68OA!;;p&ppn0ZqTd52$JXgEW1 za2UwG>S!jVD zTE)QXIO>|)y>Hju+midaIHtfSotPA3AD}OZYUp>E-ftq{!Etpv=8Cgq!Pp6O#Yq{4a0X{zFXRA2IXzptK&3FjnzEo z>*bAp<1SOWZ_FLPp=$l+r>c-R74WSEFU5JgRObCI-}7^C1xMB%+V*<7({kuvhkIHp z`^i+hI_6J|U-p0dDBj8VEqLGNSb>pVMrYq6-swTlT$wwWKT-ZkeER-x?w3Oz^4a`V z98QOIbA`GVd^zgTDgAJise?0HT{hc~y>r9E?ty|n+b=P!EuPc(hL}CrI(a^lT+Zp- z3i5r&`H}R%RVDZSy&#=q9-X`&H#~4+`t;D%uVGg1!3O7#U<02Fg%}NX1nZyl7aCekGmh>GVUHSx@p$oC_a6OTKFNxS-hr#v%{E^xdChif+0}UOntp{5i+dlJh?nW|WVtpL+(`W<$kx1nglF)$`Tbpu zuj4nff0T)0Gg|+ZFHmaPfLp6P+u8MQ&1E5#`fIi8(!bja!}l(ouP`M z3dQCeZ`bjl?Lk1nvh{szJdGRT(H%?sl1iNvef-M!zM3?=a~kdHC^hRdKcB1c{D_cX z;>pz{OnvT2PUSGY=-jOql zXNBO2Pz|}QvyZG0j0!cCi=LglGUKVgHs@9~MG5|1{~pe5ih2TO5&rIV2cj+uw62zT zs%C9{y|$G};>5D$tYHCpau)n)9QudXDJ+5yw^*!5o3DQ)MPb|WwP6u?(BZuD!}bb< z%2B zvoHCy@d7W+#*Oh@0l#UdX=4Icgt4}l=HK0^_q^0|?#;o0u8-=2-p5S@?vD;N_ICWcbUFned^pR_QqYq4snOcl}r3au0?ycdrh zsvLN_oh1^O0ZgGs5hu~^z+K!X5xi{koa`;tru{9B^Enm>xu$il$MNVLFy+=*-8dvt z@SY&3XUHjTdyhZqXv*gW#`)Y>+k%??=Eoz%ziLP(pO$y6NijR%`uuvCxVzqY$8zVj zF;e>&EuYNNjB!=qF2FBe*1%iLz}|Xf`_&~^zH}DYW?wxwqblRZQm4VPuhV6O{;n;!Io{rrJFEkp)7WxEb7dmbHzL5b@rd$k79`CoW{+{d3m-er@7%v zKjXJquh%insGFX)G?X=u&FHdUYo6{j(ww{*b*E%RP|T-Totm{#x~xmUfqIbEjJgtr z;ptxe?X${Qm+(*j);wRGYuwLvI*tMot-U?m2P^eKnACnv9LBsq@vH zY%^q94&^x~8!c}v5{#BN*Sq4sbNNv#M!$5m!(Xp2V$odQWu=vJsJCwV>{nMk=eE?` z^qk96mBtc%tLXES<$4O;=gU52;TWH_mM|@OA7q7de)Yj#Z?@rvdor^Ot9aOg)1w)W znO&K&i1}H@XBoQ;Yu9sSyQ^cx#ot6T?l3I)+}XO(k&St?jjPP8Id6HmtGyaH%wD69 zthnAhyyU#ht!Tz4BAy%VZW~9-**|NREGgRcZrQ@~#;DT=*q>!Fwz4X;uvz)4L30^j$4!lzUG|k})@1 zNb+XjiAM!3XUy@zr4Q$+H4dg1btiTzcC;jRRz^Qlt-0e&G~Q{=eSh)O0@2;LptEMJ zR@@Sg^*RSd_YO*}&rek@^j{gX>BO7H&rMJ6iW^=g8eX1t%+5Ot&+^~@al5wyw!c{%dIXkUEw>n&vlfq8MwR)zY@7U zz3%b~=#9ZV79=5H$?L8wi_2butmG=(3*L5CbA)h2=q8q-}SKfbIgzuv@lMQyJL@Ea_ zkmZn14JS4RIc?fdiZ5cinvOv{+-3;dn`pc zGjA^Tvah#n{Gy}QzhslWnrJHpv# zrA%j6m57~PRl0q>`qdV{)>|#_LkdG>z@o5w2(7VNkYklT_Zc z>E^96mX#vq^A`uEr`PrQ!`NN2+M9woj@P$cb$AN$f~POZ(irKN=PiY4|dse(1^&x{tS|==n9v z;;u;Sy~wR4xrUrhs@eE2YQlE5SCi8dOQH>IY!i|r61V+jCm}I1+Q8N}Ir+z(owo7G z0f~#E4Sv|UllVD0+RpY`@{c<oMa*ML`;PdGDD`DJo_QJP)(t(4^BiG=8iowmiJqkNsv5KCN~!TfR6hiVe% z-%=m(Nk&*MZo@blVdmUD>cnA~A-HrF*8S!DTY;;+_Q&48Sn0-ET@*jd_u}E@LP?7s z>$W(|=_4@T-^5y5YJc}$JHcyz@u7K472fmD`J$)W5n@aUhO*bAE$5rsS2Ml-EXh=E z6^_|$c=qJ3is+air__&iJPym$)a)E%Vs3&w!fT(;oG3P&qo!t`&0=wE-F3s=F7-Bd z^3wOd6fEU+;1bGho1bm{K7o7dSN_4TyMtOKD!xoFR}=c+cHyGqtB!ic@Ik99)0p#b##nW`p;~sv-sLbTIi>LJcFFQb&mwp# zzP#ScZ@nepL5=M4Yo9mfDn2626F0%EZ)o%X7-j8u<79RcIM==$ic-0Nx1C?hs(}~GG3LNmb))MO<&kC z)X%uxn)&dajpkocImB1W6JnxN6N3t6<~+F`eO2GP;O2^FOo7D;@*bZP91c7_#?^Q1 z`fc25;WdkI>2-43?-w|}evx>1p#9-zyW7$p-0+;Y50!C(Co~}M`ToK5#{wBMf^R;b z_TIW-*(vsOUcTpIa)M`~o!Jh1dV705+dQP;RBa;Vd_AWqB+BW&&;1zT$?^6$AI3&*UX|MUvfn z&3YbJt-mU&bT;j>lbG9^_!D0Rk}ch(f=c$@RjY945xE&t!D-SJXt_;`xsBa&*w$Oo zHYa1mp>};rg2_-g+UHP8^SM%a{pyEr_M9vADM~RJdZUE)+<4{XWvS|wWaNVABTYaUs6|0X3d5>gx57~9S7qckNQZ*vv+YSt& zYmcqGtIB`ose?=TTc;D+Q4Ito_dC#zzN-A?mo48yo4eLaUChc3X206LUg}m>%eSKD zYqdsK?gsBk76Ch#kF|J2HGf)Pm5_BixDWkyc%CW4O+y#{ag~s2>JI%%NE~a!Frqjy z+74@wp0eYLjU3rqK0N5Z5+~MmUl z*q=H5j)3t9Uz_gCeMdvza0UAv2F=f1VYff(&x?=d4BQ;jY88LNROFc)Ph{`f%xO(r zju$q?mG9;?-|3h&ZSkv`UGoE%oFLh!A3j5B;3?X4JfFw5HTRC`w{Q}dipipp3i8EAlTIpEBb&d7>TILsz(A$Y+&rduI zUNTL~d!VOFU_psV)j8Y4iWN~&nbqgy%huM$8CMybRLjb0pk>uGPND?zltbrRtWXpw zs#ti*>A<$x222qGjVI2f-IbcP=59;OH~3G=-P&C156f0bwX}ht3^oo{bc_xShNMQl_q?<3rlj=QYkMxlID~d+ z77+6KPN_$~tF`&^rE}L!7vrjq=!A+*&+RoFE?7m{E>%Aj;VtFxFeRnC%g`#h*BGb# z|JwTw_&BO-ZxJ8?gQ=ke{KCeDAcLiyUKCqImSn&nY|Fw190z8n$O1K_l`R_*N8y)$#?o_oqY_uNyi z`(l-}-v0MIc8d4zC$}y<)_d&0rGGoeJ8zHWtrzWa-Olg*@`{)3Q&am-`|6ZqKI`9Y z&hFbjv*MfXi7zfYRljEL2N!L3^gbIdeg1D>ZvN>)<)C{XIrw#Tx9k3S%3V7@v*d&m z?%L|sW6zj(;69IRv-dj(FaPZ!#x-9*I{340{TEwa_owaNopH^br>6FKWabM$xGrTlaWef|v_@4bzF*E4^3{GaV#&42p&<6Ae~ZKuaKU2*-VUrd-h<*sM;o%;4OH_y~( zcIYwZ0^18_LaK5MOM8SRpuS$SF8oJVe&|NVm=`_4v_ z?wqjMGrxc5((3Qdzx(1X7p~DPt~>X#Cs#c^|N1G{9=zR(RU7ZHVDmHXKlZ6r8#kQt z)b#3k5AJQ9cHnm}+4l7NpW9JeZ;OYI-K_oXV^7?2t*!Ls{a4?8%fT%d{&C_n$85G> z+wXqwk0RszdI- za^6O}&27GD<99CJC$;&~-G21w%-2r2wRT?9Cf8j4&dTQF8fuO??DSh7PM!MS)eleV z*j3o&xL+?jBPF(8eZ?k|I=-s@(WLcupK{CtugqV6lV8nk-sQM!H+wK8-hBJ!zk0a( z=YO7Y-lX%kxonO4zb^dsw*PbXoVC99{IuIA+poKRx^26A!UOBxvaIIVjrLd9I&!OBaDe*q)DtJPUWLKUnReQiKeN{v z|I}?SREx)*rhLD@`NW5->u%a*lS}@3?M1I0diU-xTr+?9q%Xhta8=KF4^Dire(woy zK7RL)Z+W(U+6K#)-1qf?eZ4mtn_qSG2A{2Z?@v!Z^up^89QI)I+{JG%dG3nk_NPB+ zoUN~Q#xWbM{LQL=ZFK#OUw%Act3O_G(&9zO_5Sstj)}{io&Wgc;ZJ>UpZZ1h2kvqC zO|w)*8vlzsFL?a>@6Xxcx+xcbsT{P`Q|vN*wx9VAbAm>$6IzV7&fR_P1v@Cx-+Q(` zcGI)YzPI|;n{Qlq`!`qJwC-c4kGr|WxV`PfPObMh<5~~7#kwZ*&C^HD-AvwWziTp` zJKR6-kv~dDNZY^gFYi~UkNfJJ@jq_6|MKrFy6VuDwV!KUd)D`@cE_R$`{Gv{9xZ(G-1b}F^4vxr{r2v!U%LIh1*y*QuWj}Dj_!Yj)d3D3vF7tZQTiXZ8uRi|Iiw->JtS6p) z;|}e+A02h??ORN~XR*`MdfSEnknZ?o>V#>3{_DD3vvyi`%aZv%eOxH(E8@!uRd9|&!ca>w(r*m-+lKF4&UmK>pwi|vp=j{wQBKmH|%un z&KJCS!<&cv?2YTM-|4y!dw%)Njla9+z)A!%{>T@c9$J*MIzl_xY{A{N-JD zZ+-T|H_qyOcj>BE-uUVc`*-JU_|N-JIPb7W=j^dd*Ryl>SciUX`HyA4oPSdGkPkcO zy}bO`wPs%6{&Mn3KmG8OKcBJDx}R;4x^(hM&)vD=z2yskxcGZ#&oDQ>W7^K<#<$V0 zzkUAo`4bQOaK&qX+5Uldr~hlm`>Wo0?#?aqirRn2Gut$BG25b~N`*x2!dXAlH~MDB z)4zKD-t6CRYVX`_c&%#=zQdiL))Ib@1wKC8)yC_v+v}lrB`M@ zp775J&mQ&BVgR;eev{0b6&jXr8W0_eZj9T*>a#~yVPAh z$N%Q!XOF$`q$$%j+p6=6E1&!CMF(B?-P_mPYT~l~2{RAhY0buyZ}!e>xahbw54~{C z#n&}lay0(6&RgsFWA|C3;gWd^R@5##b@O$O_{Z7f|MAiz7wYf+_hG$jUwEjNn$z^t z%mEu;`N}?hcV7CtaqItjz3&{e{N=qSTzJvsbziAD>4}#ww5C0@)_CoUwZ>ZmM@(izFux5X{L-F}hNf5MuX9}SFayy?t?W@ok=IAYbqSO4OvJEvd!mmf~v^^Mmat7?0( zW82SeS*$&_PTPwOyVqWH=CNDu^6KGpp8Ni<>W==wE?XaCA2_+=hK`F)zU_zGFIsf= zp%*^z%C*NmpZQr^O+(|!*ELM~VB6lqXY6tH=@-t)_8JYBH0`HqxWZy(KC zvHbIu?|%N$m)mUfhb^wSr|IPNH$CRvPY=57&DVbPqaWUN={D-Nr#||Z2T#~?lVfdr z!K@XpzJA7yFMhXE*53N$G~<__cI~iW&yJbz9JIqPUcanGy6^6{-+o(Dm(J_j@V*H( zC*Ec4_J-K<+`fFTpXUD-IQG4o=dW=))xVx5&Aa5OEgP=Co_WX2IBU;cf4J<#W7pj;;UlfnQww z$K$-SZF&8!=YQSu!POJ~vd;S3Ts-0SwWsem|08>&2Tz>-@=EE7PgZ^0aQZQiPWqs8 za{pRKUNULZZMMC6x0&ZpI`OFQYd&inn(ycG}sjQ6 ztp9=Z$;RtwJN)dRy^m`=R^9ZApC347THDI^zCE+^f!9Aj}`;FWD=p=bk%~fqPHxMsvo!NW#eQMj&Z*G3%yFDB3y7ce^zd7fS z&o4gVx2zr}Vt&0cl! z{~Y$G=HIW`y!_;QuQ>R4^__tqd{OIO&s{H7ZR4qaox`7f-TSvBq-8$4dscF!6+3~ca&rCV3szSY%7Uj4$U2RyOy zX4^k~(pi6g>u=&~UwmA9?Z@l(P2KO=KZ{kH9eS{H=o(kn?a=+uYe)X%?O*<7Wy{ki z(SNVcR@=t!*}UhRJ=>ZdZF=P2?Fa9CWUYtKeDlsnF1`OTZLo2#>HdFz zK5@xhYh7#Iw;JCX|JL}8zqj%C-Wrd$ZT80O#y#gy(_7>BeE;M7$KA0G{yTcfo>PDO z;7$+jv_spYyZmYV{EMVxHvJ*{@7bHB(+)hZm;E<*3D78rBszZGZQ z_w9N@)t&!!ft8mUBW~-BJp+{1(@%LPszDk>mdFe_d?^9+Y^&YvkK}P-i82FP4$dPL zRTwJjxmU~X{(~)U)^e<@HI%Yt>P~~bmVJPmO=aBnj_zp_Kf3F_iKz}}+Qj*4i_p^B z=q~EmWm%s)ciA3o_Ob(P)0wza{kW-vb%R~KUFa<}*wxwHUpF{yqDAHW>hPJG(-Twd zmh1u3CbBwzsl8fery6_u+>}y_Jl-|7faHxTs?F$_eU4Yx+B740A-+wUxG0!M6T`WYfn=_g|r~0C8-8?)buay z&RT;t-TjmNPQre|%s3rA-6`tV%Jd9mr%jwlFUtJ{kahLuUew)R%b={ad%DttR&N^R zFVeZ5@!(XwI`HZHZ1>j#7HXzzCWQq6Ob)nAHq6+DpWs|7U_y`{l;Fc<;2@J=Q$H{w#xdg9 zbsnWp%GO)Gy~vkjWr6f`uj5Tk4_%5ti^l!|zcR^CYdFy9R(m+`9GNf(Iy>r-K&jKp zbhO4OJBU5%I<4;ZX%h!)9M`i3 zI(ZWHnM^u>qA zrf9BvV7zr`(Dieh>*m)rHni5Y%pPeZ@h;d%`1jE$P%E_4jlYeJAr6X8NV zMG|TZR~Ks(*)eM}az?9hkT}|Q9Z9!MCG0oyY^mo7NWkhFEQLve7|cr%gLMry$~5(N zWI8%gRhKF-4cHI^uJe;r)@pBeov9=tlea}?gk2@R_|uVxqmZoNb-0}%FfS(qhqsX0@Yk6!Hl(L z=d4+|a+=vDpu5mMzPhQ7>=U9W8iE0P5t$~o7liGDyYOfM%LC;w?(3QqYJb(C z_7}7_OOp(3l7V;Rxg*?@REOK<$!S<0a>EiuY`j!dZqb>A!XH++F)2JQWTvOuqSXcW zy_3^zv{kH*@AD$n1qS8#b0IRcJ}HX=Kz(wCTv?ooG{KDn=5&Po-?v$u`*8_%5pFuSb;?E-MJ9nRfiRSKOg)9=! z8dNJH-ewB?J4|@2aQ7)xU?=e`D?gQJGpYJStPSMN!3#o2(h%5y757R!Ya#=BqCYTk za(p5R8YSmIM4hZ8j!>_N!x1pf!G^j=$S$9FucT2i3i=7@UKAyR>iWdnWPz$XCE6r@ z4rK5dcORwoPduv#RAwXIpCVC#w?vylHH{K&8kIOnw3$>!E8eDxloc@1CUf*6s_-7+ z?gIfP+fe4HX}YAyWCL zL>rY}NVaKt+Dt085`Wf&Am!R*su-2HPesLnWEow#YJkL^MHwbehDm}#^{W#1 zu{w8&Hj}Dz#oNG0NnD~t6cw#X+{a2GCfal=_7rb}=;ZoCuswgDLKU$R&uXYIkZd!k zC|~?O8Jy0w$y5#}aUY16YtyM_SK>aCTT@6JB6n?H0R;MQ3pJH(QE8)nB8y^-~ zzKy31356xOF{2PflCC6_2IAXPZe5j-xS%^vQy^_MM3$mnf^9Qw#lf|+u zaXN@BD^x=?J{DQy_)V5gZrzf>TS@*!Ef{`I6;}5&{thf3Ng4tdak`YO${bH)`K20P z@%~VUm771PQr!IIS<7UsW&E>LIw&vOnFR;$m?)41uQ& z0}2dxpTgtZ(0P0q{Q4$i>bdzdWuC@?at^LqT=YB+eDlM3tcUJS!3^rE+aDr%x)9#=k={INDHTUeCcQLuF87 z_*FpA9BeWOfxD0DY$u+@pt<{?HYI6SQFuB~6cg2!68!-kTz{&}$sq;mE{8YOM5Urc ze;TiYpz0LW&7+^3?yaCmG1s4FP|?o#eW(}i>i^8CGo6|jTzUbQFYw-J9J*ZhnmRI z8cLD#^I`~`j)Vf`+#VaX$~is)$8dWW)ldZvmj*BYU}}}c@T0#MOUuK zgNi(;$b*VJ2xp)o4=VDYA`e1tsOSe3c~FrD6?ssR2jL7<}}}c~FrDAvaX?gNi(;$b*VJ zsK|qG1}gHPA`dF^AmoOMeo&DI6?ssR2Nih`&Ok*TROCTL9)#Rb(GM!}pdt?{@}MFQ z!WpQ@gNi(;$b*m@D*8c19#rH(MIKb-K{x{yc~FrD6?qVHLq$KR$b*VJsK|qgJP2o? zA`dF^pdt@KZm8%76?ssR2Niixkq6-nROG>braZ{@Ssk5j-}rG;r>5t2EOS}8>GZBm z3#Ovfs@xhZ2Bkr6)Mpr|>WU&+ieb!{ zK4XU1AWAa?seWNSii!7Ut-h>Z%vuyt$$Go(nrF=zKMwU%QT8X*li7bfUcI~9-JV^9 zm#15Mda^VK)Tv6f7C8`6QT68O(}hO0K}5Yq(`=NQ8c@ndn2vhDGc=)oVS3kYuO}r@ z(bvo>9PhU!u>g)ZP!!uI4ZE3HY-mBI1>g!P%-L<;Lj~jd?lW`XReeHFGsx{=Q zmHEo6M`ofG)x#GkvQmr6-=;bC5#P`~eOs7DiSaDGWqya#?q<^%oZFpENmP-I zV58BcsKZu&Fb&<^J=t{2ZZ!UeY6TU>(+#unr3wG`cKcHjm3+g^vpf%-pmbNN6}RjW zUJV-Pskw9yP>M?Ngf=P>7UC}$wOK1+oESTBixQNz271?OF{{Ik*~dqVH3$Mo$+5xD zNntjt|MhKEZ<0;5QY)>T5@R__lQ0V02<;cqvplML{fs%~3smasblk0s>_KqAGY4K$(GC z41iIjfpuTLM7f>#Ya^N)m@3$Bzb-i6tR{n?MfOUii;yf(9H(cy z3kw)1zP|EJ`ZQGp%`qshkYLO&RH#;J44(nPk~StNp;l&)aw`{txj1!NFYm%mg<4|( z1_T=d=o4&l07j9ThhWRPtSiaYAV8cCNq{&RdpGP3ONF=??T+;>2&+S0#DxGd#1#o( z0mR8so*Z+yl1qfIOb3tz%Crp41)JGYAxSwDRtZ_2jYdBpd zfHxmgp`0uVz5-|~>;6zrZtMeoV}RrYr7o6EP-=18##jqVJ*lz;cnbmaskAr%3m`70 zl#e-F!>A=bBq6^UwBD6WP{uUyF$XZYrw9-i0_Y>IH~thO;SxtB`C|PndnK)gc7jwzBPXjQom84m=-i#ei1?(#i)_eznB+9te0%De7pf zxML!`qDJq@yl}MLV;q_5QS2-i8 zllZ55IRM!qQIP|Bs0tAWTYQN`q*7j$#7wFr0op?Fe6$qA&kW|b>?0u9R&?44$ zd|OSRW1g!e1zKbt@IKTc`6@@wh(s(4?0a6glZsm)m55P8nWV!IIFh%xPh`dE07`i+ zfufLP;6N<-@cBZiIQXLM%N?00Rb{mVig2)t^JsuJgE@zUh=bFA5ptio>s_2vo|?swV98Sdo1H zQB|OQmR_38u>zmOGAit%I1H6!TEDD&vK&lKBGejMW+$oXQwp`x*mMA6H5r2VX z5b9bgfR`ZD)k1Qm0P4!RB z|GNx^D;x+C1ukX_h;1WEsK8Kot|*ZT7N~B1j4u?mFg#b3*v2_;un)Gs2_;5SD7+_x zUcx$oZ>tG=Y=cp9*duCdEKG~d%m^`BA{V43L0KcB_AxIpm*LfgJtlxk4Z9!Q#lo^h zKjtfncbQSeFnH%wyQpjmWibK`OQr$IRpr(3=1c@~nN>SJ ztjk9o0|miP>?~DfL0%=&fTS|(cq}9;s^bNy3nBF3Ee^sFQ74sIwPRslQNVmhuK-yg z>R3cxiMEVV++r}+el;QsUyDK*pw35D$aTd*SO9e~lfc*mmQ?Km)cK%$m{J0CgdR zKI)2tumI}HdSoo}frU{}0M4edfwJv$u z=o>CH3fT$FG#Uj;ll_O`jDi)Q%|}&; zI0}>~ycsS|Sc+v{=U5136v6;;A%s5aii5BK>dL#$aY3&E>U>Z_)KRQNsSYH>GTYZ! zU}zrHg%J9vD-OZ}s4K61jYWS(0rSreHCZD*gQqr~9cpj|D}w8yfJIDDi3DP$Hbtlr z6I2+mJ7j`lvB~+fT8JzPGzvSJ;G|Rzb{OFBZ8c#ZD-R83WKtt0s4#GM2zC~uJRI!F zT}8mM%8-|aMnN*ATO`YCgkd4QQQQWy)`!n$*W%!dQZ;9S5zB0X;X<$jw88W;@3~~&cjMd$I6axg-k9{uwwd5j0#Jw&#(~j;7E;yRfoAb*ow~r zk%w8+xnNh{+@#~gR0M~TeO`i7wJwv?86kt7@0JvWeojh^r@M_EE{#2VF%lG3F~dQkmbde_o~sr=mlOnoi<#7^HIXT_Q47N+4k$b`iNM@ohC> zkMU@!VP~ImXB_GA=pX%!SX# zIScoS!_6on{~0M4`4Hfo!5v_Hwcw8F;w6WhQF8z{+n_|xhFQ?cF!*K>1yQBlUvG5^ zgUdxC=`1d(M3G44-E6bqi70%&nv{c&t+_?Q7p3Vu+mdp6Ynn+mrN}B1ITdNMmBSlT z;R~WI4pw5-5#g&--u(!a^SD>M!rc6QSOOK0b|ZyWoxmWO%!tgvC$Lk~vIW^v?$QK& z0qWS^m~;lR2aEzjDSyJ<(94Q2Sk|ox3KJwC6jf3PnW@f%eT#yx{vFaxxQ`KFu~l@e zl_Duxp@J0v@Bs@*(+8{=#Kk!-4_Gn9XzamC`i1#!B`oiU9B`a5npo6i3TTe!r1IL5 zB`(rNL137QC|qp6WO%+)I5B-i5C^^%k}Og51-gx&Ufus4ORiqxl^$Meq_?t_9)&gN zb7ZBLSfEt?m0sdvaZGZ6BXUKF4l+3xhvF#kb5a5A&aUdKa#5JWVt@Op`m5$vbyT%i zb)zL)HNaZSxI6-$gaqqt83;+QWFf056 z3$KrHMCM`9n8rHhLWo5jMHMw4Wg%bz&PERyhp{pr`b#X#C<>SY3y%si6!pM@jQo%6 zJEiu_6YoELE^6=0#eeftBA7i_-^Z5(ftsThQUb)WSu0~jAJWqs7YO7*4Vx+|?Ib>+ z`jcO2Xb)5}Vp?l6h!eLipHIPQEMNot#g$f77wxMHB+)0;u zk#O5uL*iqrkd5C*5|c)VHm3qmqb^ics_Gtl zpvD&q-3wMs7QPs+nCxO;7$VZ-%2`DYMiNXHv1lZe>*Ck@-8!891uXuj6@z3Oc&d+< zE2b6M;c;)brF|vUFM2h~7cxKiR^*o@)gku2$ik9)AG-@?NL$=jQ2wp=iK?Ho043b~ zKzMlMKL@=Z*&3cKiD~G98^A z*`?K}B{yIL7}xnpDr>d3yUyfvOOKPAAq4RvY94j)WYx&cP+Lc~)2+rXMo7{7Qlg*; zDE}6cTu@{$kiacg-vLx44{Hy7be)uEb@sbplomH@Iabyp#%7_y=?1&6$L~>P$5O3W zq}r*JT#(y*E*ouIpX;(}eh4%n>ho)7G@_@@p7!W4xQwk5^l}B6fON{Kg?t^fn=EKj z_h~oKa#VJ%)S8Z1)y1HQTp9IJQRR}h%E()w8Kj33XbOzV_+03;pg7RVs+a;aT6v?( zw*q@<4lr2Iiv}!EX>xXrA>`#&J0E$aU&N_M6d8zzc!E3K5-E=zPPf=0WUzGWBF=e6 zs*p4c#uD(9)tUi}C4HrRJtPDT!h>)I&v4g#2HZ%e1nuvoPiTSfKP1fb!7yrMsXO7oxqN@ z#taN5x9|Zl0cbvPYH)fNMmkq54z#kGM*&(y)rt~l=(@owZemfW6^#)x5{#NS$3(h} zK%86x*FbVIe=vpZ<}_5wLmHgn4Q|EZue_c`Dwnu50LBN5NlgMw8a-S&D~!LsmG|HU zwHp&Fc!03LSvp`j(!RtI4wZ^SS-HLVRPIn;A@fU06KNx^=xj}wMm$!^3s}tlOO@mj z#WjoHo)xV4C}Ix$!CJgZHU=h zLQ`9)2o%KJT-yCceWt_2eGGH#Dl=Q@e}K8&n| za=HvdiW)n!iNYvBx+3E%l~`rDD9OWysi(t3m{$@5nX2)#xJ zv6BB2lc_){`%d0|>S%XQF|{DJ_bu(Js70*Xn2>}*poRACdAUub&%4uAVsvJB4d@>w2O_-lY2VY?ukA&5A3~W52rt3P6s<KrMn-<+6xfmV+#cO7f#4 z-c(FlR#25G44G=#31o&!0c+^#RT^);*YI%4yX(Y<=Y5-rztD}RjFt5sR<}L5K%B5Dz@oETa zz^kJJwJ2UKhuGy3tL1o=Vh%y7A+IWQx<0}&nC~l+RQzJ=YD~8+F|V>LW1)f%5yNaN zp~+KYS=NSA@VP8k0k6WNOhK$fg0_d}Rrb98wT`IbMY&6yFP>a`<&M zaqd!TUiFPW%o41zq)A}SAzls4YldDR^$PFFMY9hXtPP=UYb< zRAcXk z@`nsAWTy~@R~_?XnKQU3<#q7|+LMZ*k2&njBcA!BO90eSl5ig2#^f;HkPQRI@H|Ec zE@x2y9AehOv<%9>!JByiE4^xjE!zlyk;ICUq#qwj;gnFn#G_mrp%WCMp_}GF#7pSM^%=!IP|Gwpv#RY zT=kuKH5ua@{bqC-VsS+?NB5abHoOjRJjT zR$jPRmjHbfmz~o;1Bh22fn`=-xM-IEfgx}{0)0v?1l%Z4SY`!=4}4)s-DJp@Q2&&f zYxn4bC=voxE4Ko}1-}Fc^g;8{R~%?XqfaZh0>eeYD9Ca}Sz2T`zK{r25Yy^^C&R>O z_wErpc_Kcf#I`p-$60Wu6{a`K+1^+{%y330J|MxTV3te>jt2f3LP#&fr3u3$w>i|t z=9p)A6@Uvu2!IJe^J%yk&_+SQF*oS3-$C*52tN9ll`vGnWgp_zM_`#PPh3z!fWQzq zAA!XIHwqM%S&QSM6C?$huwgItvtS@8jsJ}$KQF;LGA51@BXD6d|A8!0<+%Vj7SAge z2iho5SY}O*Hz_rOp7D5Hz0$ON_oUt1(;()_fcz2rRQ2GfbXUIRwr}U~#~Wf&S2PNZa;q>fJH-z}0}c$Jj1leXqp-Y6jLzi+4!{Y4 z^Lfzc$U?x40)^#OV{{10I12s5C6Y?+2!0L)3E3fvICSE8Fp)0EDD!!m&SIUTLNuUG z23m;B0%abHJLxsbe2k{EknSjG0XRNrK4r4H#sxK(QBY=ituQ(ldmf-q@$K9ZhzoHa zN12I(3ZuLk$B{`j>4gvg6N2U=kdRpjv{9h1yef>&C9(Do>LsM^p#715wk`P(7lN`d z0?Vtr=v;Q{0GtpwSm>d<6bD?7`w1Q+>2!UpqH5cSk zODuZkI1X6O@{Q*Vv~eTY|=1I;q~0qJ5=Z}AbB1I|ZaalnlN zh2^!w=v+2#Ux*@`ENN%VJ+ELM=HgTsv)n2Smp?lI#|Mp}uSn2Ffxa@UFkIS>0DY7r zoQ~>!1QNun&wu4LzUVAhM^pn1fC)kK5m*dpqd;GoRT!47Bno4IK9mR?QelFu=&O&w zGOI8w`$`nJ0D&QJJ_3Do76Ptl6jD5wFcy)s!ye}9T;7-fi7cgk2y=lFoyCbz0u%tOrC<7FdEBcTaC725lY9T$8P*`RI3`+tO1ume; z5I7%+#Q--d6qZ?$;gT0gNYJI^3c>hE(nTNULP!kYEFAeu*c_81rQy@a>RckDfL58; zeW-L731~6YTIMB@%VZQ#YY3iCt)s$Y;UFKvW0_Y+K8=yTcVbzo0+{_GMun)gFcJy8 zF-Rsc{E{do<3s|0eBgW(76;rYL{7q;bjb(X^@Dp-9^45D`LXApw-Uqhphbc6 z5f}o;5Lg^=qd?&p<-0?h0hGm!bx@oFimEPU$ZqF`4E_Ec~w6c92gA1tS zJ(-2+U*z+`bgSFnGth^6Tu5t<+F$luH@hG`yJ-ehIAqD-_nO6Ok)@|k?-@izM869r z$i$$=AH9-prIL;)=H*&l5b%gV_ zSIh3k5+uqSVZQ@6F-8V7S;Y^!2Uu_XudK=wE z9lI>+bLTGGqs?A+fNeSxcd8#Zb+B%*tG5fq#!`b_o!$L)gVQEjRGh62pQ$-LF~x4l z9x!d9U$t$omf5Mso<27P!$pk^2O-36A#Or8C2>k>?m%~HmYq$(zJbDJfL*T>l{(p+ zSU)b6N=@x^yt>w=8Ns{oZQ8^|*=%oJI=y7clG-J5ZBJi&n(9`j1t~2_HMpaue`$Bt z8m#H=pX7HE_Jf*nc3(#?)vQZVzgDJaAUkd1M0!!~CjiRo&Aq6*zm@@5i-L9OL8~_n zqD$v`#)DJQSjP(0xm4+`o+{zhh+>Usvl^&1YIrQeCK6?7vdU`tR z3lzMIbQL_1=nG}%I=rR9crX|N|Eq17T2-!N#piP4iQJj&BPc0XR4>tcgMOx_X__O` z&TvXImS``84#&=6qj#XMlOf%)({88R<#uQLfe|r|5y!6cz{*y(-s;uS3_qu-a0f4Vvo8`tGj*L#K9WJ^{j!;?8N$lB^O5;bo^~>(D{c)1GlLZWKUmw zcx>+Gx(CKvhX!3ADfBqfNa9_vk?`-MQDmu*V*G7v3~^8}fT1zupSXA}#*xMr@0yJ* zHVXgQ5^w-WH^%}ofrJYne>qP6XsinhVn#?b);vV0Q>i^HmRVTv#O^LNr$a!twB(00 z6un(tabVdabxl3?011O#o9YJ!I-EK|aSfcSIyJH@$u){?xHX1o$Thm|A*HvYDYj=Y zA==UseKs;He!shR_h+qc+YS4bB}*4Q#jWvNS*uZWS*SrBKC?zpWZRY^Jgk zspknuz``3Wg-L=K%u5l2b+KZlq~9cpl};rInY=ABBkU@vNPjx=a2yN<^-}A@da1$V z{0*fB-f|Z8*h_|C2&#ITv9b+x&-|Xg1H8_jCH#^dbWsQ7V#OAxrsE9}pu-D`-M)Tk z4)s`ThVBjy zZYqlTP?@e`W+``1Wx8@xQOt+RbQLp8xqC*Mu5m*K7?^XWOissYU1~)tzfIG$d?{x2Xb!mnYg}3O7i!sZ^C3B?{RM??c{sJ?vEnxI|v+Cy~$9>mm~fxCYgH&a`Q%JUX_Ptz!WHhPuK$z5$EQ{L{WpG zE69{ObVZHAtRWkI4nT}MiFR0;C^L2V3i>Naf<$SC5^czE%(dy{8ke}wq@$2{n}{N% zT$@Zes1oH$M1t-ntK+Ia@=CFr1IgjBIYLts%cOP!Q7>YV3dK1NKZJ}NQq`J3$h?{ zG%pJpM+358P+s$}d-^NMqQLPa*np#DSyVZ`M-mkdk+Nt~qU!iNB-B3V+E8bkYty(T zMV1Vz7ZLAI7Puuv#*GmIqWg(;IXNQBJVDB`8RZTCSw)PZB50GN0-pq2h&fq7>E)qe zqR?9^haJVxI0(SCNqUr3nX04EPmV2Qa4m;1Rp*u>$S8`5k3XwHsB>)!oq8tjW7+P* zHsCZRg@mOUl(sXxM1N71M2xO*A}B962|8wS=yur6B9~Z|=ddRc33`T}GNM!j>sv|= z-){(%MmbF|LI=8OL;9hQ4O{z{uy+vlS;bmBfE z%6}5hqe3}}6@a1{W4D9wu|g-?AZxicC>Y5$2;m5#CCKM+vJ?@AW8Cd374C??Ueu$a z7QC55g(8}i_$s^|(mO{AP-`e;F}y^7B?TN7p;!sb8zL229M$UyZ>NzBU1GJ)!%HHm zE<@MM=xQsfbYz+XP!>3$t6-($fCeW;hD9%uAci?q!Xt%aOr(p9&Vc_c8adDvjbkK5 zF*q@TlT^MxRi@Z$`pGf6f^{b;5ENC9u@e=2&rMXE;aOGm+%*)`jF303VXX+*LD7_` z8pX&A=h?(Ea{c4L#aN(8dc*D7;ajDN;4Za0i02cu_X@ z`!HFGfN*Ra0qDG~_g1N!s z7iA`Y99Xoteno?$ZxvCjvGD?%A+A&~dSrf4ECu_Gp^GZkzQn+>wMa54cz{zD!M2=6 zhDDKE6;)Y_ihCb02zBlqiWt>j{reO-3Ruvl@)M=#lthkxa!d+Y%4w0RD)Gox!Oq;X z*sF4FW|Zjtv7iukWa5K1o|#lF4w4+55pD&WY&jWWTZO+bY%!~uyNaZ=i;y3VQD zs&4W?;;f7V+)(&Q!{(QJhhgyjnF2p)CRE$xM4BKIu1)8bLkLZd`ccoGLjoipw}NPb z#z{1k*Wn}rimr2#5;!HNa{9>;6UuoaPNhl zoSZ9c6}VMYlVwfcsmhSH=onOM-88m2d60XEGBQ?H*Y zLKADAK3!;38$?-DOtVpHYEZFro^EL33{9wqtKj%?zQq-!JK}&OU6n*Ny;rO2&CPaU z-Gp)}murYPw(iRYmSK>N04-{}?V4xJfT5UVB^Bba!i9k#t;l> zvl{%twikr$C#T^zxW8*>s|)%IO-?rqWEb`HRYyE`Ci^czV*!t~$?4D|r8;z)noMq* z&VcO}@i2K6ObT5NszaB9$;?S~QnNJ4&?Xr~ErC-)(v#2`m7BsoOo*Xi1rUQ};CcVY#JAh~t^G_dLC*@h4{VtqPLmx~cYmgVn zmYfv`GNNk81hmYy+TDJTHKZ=S&1F6sZGEoGXrEb0(abzL8?CI>+0&k$?e=xy2^8m} zM`EL*E`w1uHB_f576~nF9)7i_Ca0TPF~%7^-C6u$*Cbke(SQD+C5hMKIe_Mb> z7TJkp4O?b?3eB;>oK<095Y;+StdrE5*-dS!YRAnCv`_wD_F3&3mCtHd%oCMB8_s7n ze&^7U)>JqG``)ZY`>ZA&Nc0u)L7tm|L-GGtpVh9>`>fIma3z=k~b>zg~bNs<0z8rrY|g?tTv^XE;+^)Z?W0Y?X)FW?Ow$7iEEA zPvma(o73~sQmvG3>2I%YTh!5?qE1qatp1b}M3ATYI@%Xy`%^4)1Wxa=J*kdtZ7S8a z$nAG?7dsJFoU*!?_H?@`BnIj2bh91Z?Wt_o<&@Nt4&<%LE^<>Ij_*?b>1eBKId0z+ z>a*Wk?9%0qz7(Bix=u|;w?CN99^2~dTw03*x?o5P(lZ7+JLlqwh3SUw?w)M_0{__6 zO*bJ42By(J5J@-o^e#>B+SS|BmrXYhvOlxBJ3G4Z933;FAG~VU?!+y?L03n1F5=uB zoG5m?Y5y5u$_e|Q+iNZ9ZgT-Aj*{5{U$>PV=yMkYZ(f*go{=0=Fb;ocl!OO|tXA&) zzP^58dJn71t!`*-PWk7+EHleItyWCUh9BFmO>j<-aXQORuJfMD;<4U+rw?>=I&_f9 z$O|8+SD(s|{AZ@M*rJ3g2LOj5&B39d71L$`o$P2f-O5h+;NoCNG)Ow?g&RnVwKPSZ zjbfdOlRkq^`f%u*Zs_fey#%MyyLT*h8<*OhEhg)8hTok+ux zLCC-d&&0i|lo4E9l0-{@i`%e0z|~L?(2FEEHXI}ISCJg{7tsM0JxD#nor)r}TnZv^ z@{9!MuldR~$vxRLz6m6uc;Oc=Tcbrsit0 zY2crz1XncnYs%o*T)FR*-;+KMdm?&9LEkrR`C})aX5EA?< z0ywD~7iM=9ti_mPBfw}q%|$B)O%T&{+>TRbc&5UcS%%XZ-nE)Dfi8f)+;}kWq7|D* z_7~B^)jv}WJJurX2}RFvP=VRHkKhuimMuyqlg(* z$mp);;YrcNOajHK;aKo%#fgVxJ0eD)Xc;((!JEngv5V-}HZ9ro5X*toAn?AlG|wgc zSgrwo>x}7O5E4AVbw|go8XPTk3gK$(uqOfZ{i;q1kR=O#D{WQy4lEg9SgreoX(FA&UTK>MO2c;F-i z8Q^YsRfE>xhCtLMIwGz};CczvF5xUk0@os-LZd)R_{S^ozp^Ax@<8vBW=k%h2>AzG z2I_Mph!dYHR2lpO?!jH`Zj8Xoy@y6AdNdC5^QDns)MyO&S#&`03ULk_bwpN49z7|5 zCk)Yc!~P)Wg8tA7`owSaW{8=Dd|^*xj_8^N3d3(3ePD+1+m}0#g8&&*6~k3#b_~LUS~eW`-ylZI})GhQy#d@y)+_vc(zJBWm~R;(AJESaWrTWmV)RMNLkASD?${=reW!}D@zUtJL7n+jTOf+5Xk`k z1M5q!0iM8YKw|2U2bQFIphp99X?dnYYZub~c!FtWG+Xq*_oi)`kR|vhk-xDjdyZ@9 zvIqZk6*`~{YH%e>Qy>uFMG4WbIz~pc5Q^crkV96+u`{kF*m$EU$}ZSjw;Zq`rVcEG zcaR6Ki`X1EA6uSfWDJ`K8xqNs4Xh#(W>kV8qbL|XBiR|G-9t2`pc4Aj2@#6hM~x=XlEP=YwE~a23|3w>2O*` z=~lbd)IZ|d4yg-Rr*hI4DjN8Y$tA=u;9^emz%0?t&@E`~M|30oz{mxki$7MK;{5NaIOV$ZY@rE6%QQLrX) zvMYF^n=vggzG2`pNX#)HHqfmD(uM~+)=|g`H6sw2gQ;!w0d@r0LxanBmSE#euH<4l zLO>xH9l``+OLt8S!hlGVBpZ5#hjmND@+GSdgaEuQOcP6{lR=1+E<(aVF9Dw_P!u#U ziUuChG}ofANrZ)CT{SZlqM%w}B zFt#!lVk#t0@f6X9oK;2Dc0B_V098uxNS4?tL3Nw9)HB_XR7fI0%VZn}>x?Hr z1A>S$9SCVp#T=NH4(Y38P>2si4>=Ecji&&q3R$8e)D1|oEYJfSxjolXAbS;P3~;2+ zpliwTB*_6vH9aFkOcD(w^ecsQ2(&AhBFKO2s-R3@S0x~x8Kd{9Ce*bAUuyyGBH9-8 zR&X|cGo8c$vFR@U*;v&`|3~y%ZWs2SBAdVpfnMiBMB)kC6YOZfCQt=)dMZ>xgo&aB z>$Knjg(Rbfk!R5U{X0m?`4W$lX?ZnZU=6s-X{LAy);6>tR0_N+WsqC|3WaQeQ$*7RsKcxd?P(rqKpH4{5+yMxnBi zj*nlMN9Z_+Acbm&9UruFgoxuWE`ZEUx}MO0@tyQ%w!7qZ&~RvTgm>Gn?x8OO zTQ9^7%Z4p#8DK@iI2u1RYDKupa{|9Q7iC!+}j~_*`gaB8KfjD>Cs$j2x0! zBN-t=VnLy@ky^oq(vU%HDUgb-pl6wELxfocB(mZmQH_fsSQa)!wj{cyqk6zH=t9;r zf|}8g01~*My(8ox320Ao$oeDLE?%ZXYcokKWgu2Cw?G4CSwc1$NGQ*9M90w~{9%XD zO;-gtsz>rt0YQk8V?we*jmu!#R2^utNzXGN>)~u?N}7qez-l1D`Oc;U0D#*8NazM~ zAKD_`ta#YlNf}6Li{V+7ER5PPY|uN2MHjjk{>qM$Pm=;VMx>_yRGlHGNkI}pSEUFf zk#Y>+A1II0q&OSS|NmAjV(it?nk-FqMNhRdx&eXdK@K1(1gKKgu(>fM5VDRf6UYln ziEBd#0nuWA;F2j3vP6S12Rl8OVqnC9x&StX*@C2yZF{a}+X$EfKVo+UeF#(zJBa3D zc~>p$DKefzPpFoqyO0#v_JQfJC(Yo;#wu$nh64$Ty_tY53gUq?U>ztE609rOu0arB z_h;y~qa!5H5}_qv6A4Ynh5Ce070FN?2TWvw?;sEzQ^a-({3y7N?Yg)N@(o)n>_lA~ zu&dBfsQ8s)>$c!QG-MPD!+{O}T@Y6?5Tn>yI+!j=w@J1@AH;4FTU!m%45miR9Vz+{ z3@Y|>*f3*bi7{Fk#fCnHd4}|W5+Y&OOF{xt0YVPa4wI%T*!&^ahyt4jG(*T@NPI{a z1%f`~kOn405YvAUUy#}|R87YQ+%oBAFa$%PlrpXX?Ga`LYp>2WPO8< zS6ch&=H`qoETelzuG}&=1NCz+?S%hF_hV2AlbBNMDc$eRU$<6@VG zJ+5bq8O<^b2O-#lzNVfVp7 z6!tO>1wupFf%Obp7PKH{;)2w4U^>UtSlGZpt2J@vVPZcGO$QnZ>5&*18KMwfu40H8 z6L_>Sc!*|zr9&zU9)zobJ+FtPBQgxIP-b90g+A=Ta&Kb`44G_NP|p;Stfr2|h&He! ziLuvopvJ;Ti#!)t6FivY(Jd^6NZx>Pz<}*xh}dS5F&-=hV3XuEnvc7%Ed;+#N;5B8qy5LIvWA)5V1&a z0PPb!nXu)Myv1n;le>sy52Pyg;#dwx+GGCTKV<_f;b~%?vq~IT(zzeZ1krVZ?Sim9 zBFOVxLCO|9lUQ4VXDF=OW9N2sp6Bm0(FXe{rW?8;2oy3K%5a|d!JOjn3}K}OiAuCr z0yW|M&@mh=>ZD$Pom?#g#m+ ze&8Sb2$*&>)4@>|cpFwBbPIa1HSD1vi?Gw7jfexwDt3A}0fRb4Y7KHom=1W<0KRK<3FfGb9FgpzgqQj}2x9TO2y^ zQZmqQu+OagRA!(u1C<%5%s^!Z{A}Lnjcu3w`V%O{Af0oUS#g&5f|dH|xT5 z@}!tPLz^MP$1lv|qxyM#a72J~HJD8@4-7ep24((IDN*vhHYu-;|Ew4~jv}Q<)@^d_ z9>)#(0%WFyL_m%^xPbL1E=bg;s Date: Mon, 14 Nov 2011 15:32:52 -0500 Subject: [PATCH 11/30] No suppressWarnings in Yury's encoding patch --- src/canvas.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index bf3bad4c6..d80bc80b2 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -478,10 +478,10 @@ var CanvasGraphics = (function canvasGraphics() { geom.hScale = tr[0] - bl[0]; geom.vScale = tr[1] - bl[1]; } - var spaceGlyph = font.charsToGlyphs(' ', true); + var spaceGlyph = font.charsToGlyphs(' '); // Hack (sometimes space is not encoded) if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) - spaceGlyph = font.charsToGlyphs('i', true); + spaceGlyph = font.charsToGlyphs('i'); // Fallback if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) spaceGlyph = [ {width:0} ]; From 709dc1a0c9f334d5079c03feb69323bec1c21372 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Thu, 24 Nov 2011 09:38:09 -0600 Subject: [PATCH 12/30] Initial ToUnicode modifications --- src/canvas.js | 8 +++----- src/evaluator.js | 16 +++++++++++++--- src/fonts.js | 41 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 55 insertions(+), 10 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 9b3ed0ba9..8d6fb046d 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -474,13 +474,11 @@ var CanvasGraphics = (function canvasGraphics() { continue; } - var unicode = glyph.unicode; - var char = (unicode >= 0x10000) ? - String.fromCharCode(0xD800 | ((unicode - 0x10000) >> 10), - 0xDC00 | (unicode & 0x3FF)) : String.fromCharCode(unicode); - + var char = glyph.fontChar; ctx.fillText(char, width, 0); width += glyph.width * fontSize * 0.001 + charSpacing; + + // TODO actual characters can be extracted from the glyph.unicode } current.x += width; diff --git a/src/evaluator.js b/src/evaluator.js index a863a531e..03fce2d9a 100644 --- a/src/evaluator.js +++ b/src/evaluator.js @@ -512,6 +512,7 @@ var PartialEvaluator = (function partialEvaluator() { error('Encoding is not a Name nor a Dict'); } } + properties.differences = differences; properties.baseEncoding = baseEncoding; properties.hasEncoding = hasEncoding; @@ -595,9 +596,18 @@ var PartialEvaluator = (function partialEvaluator() { } } else if (byte == 0x3E) { if (token.length) { - // parsing hex number - tokens.push(parseInt(token, 16)); - token = ''; + if (token.length <= 4) { + // parsing hex number + tokens.push(parseInt(token, 16)); + token = ''; + } else { + // parsing hex UTF-16BE numbers + var str = []; + for (var i = 0, ii = token.length; i < ii; i += 4) + str.push(parseInt(token.substr(i, 4), 16)); + tokens.push(String.fromCharCode.apply(String, str)); + token = ''; + } } } else { token += String.fromCharCode(byte); diff --git a/src/fonts.js b/src/fonts.js index 116bb4dfc..d028a9786 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -771,7 +771,6 @@ var Font = (function Font() { this.widths = properties.widths; this.defaultWidth = properties.defaultWidth; this.composite = properties.composite; - this.toUnicode = properties.toUnicode; this.hasEncoding = properties.hasEncoding; this.fontMatrix = properties.fontMatrix; @@ -781,6 +780,11 @@ var Font = (function Font() { // Trying to fix encoding using glyph CIDSystemInfo. this.loadCidToUnicode(properties); + if (properties.toUnicode) + this.toUnicode = properties.toUnicode; + else + this.rebuildToUnicode(properties); + if (!file) { // The file data is not specified. Trying to fix the font name // to be used with the canvas.font. @@ -1898,6 +1902,29 @@ var Font = (function Font() { return stringToArray(otf.file); }, + rebuildToUnicode: function font_rebuildToUnicode(properties) { + var map = []; + if (properties.composite) { + for (var i = properties.firstChar, ii = properties.lastChar; i <= ii; i++) { + // TODO missing map the character according font's CMap + var cid = i; + map[i] = this.cidToUnicode[cid]; + } + } else { + for (var i = properties.firstChar, ii = properties.lastChar; i <= ii; i++) { + var glyph = properties.differences[i]; + if (!glyph) + glyph = properties.baseEncoding[i]; + if (!!glyph && (glyph in GlyphsUnicode)) + map[i] = GlyphsUnicode[glyph] + } + } + this.toUnicode = map; + this.refreshToUnicode = function refreshToUnicode() { + this.font_rebuildToUnicode(properties); + }; + }, + loadCidToUnicode: function font_loadCidToUnicode(properties) { if (properties.cidToGidMap) { this.cidToUnicode = properties.cidToGidMap; @@ -2039,8 +2066,18 @@ var Font = (function Font() { warn('Unsupported font type: ' + this.type); break; } + + var unicodeChars = this.toUnicode ? this.toUnicode[charcode] : charcode; + if (typeof unicodeChars === 'number') { + unicodeChars = (unicodeChars >= 0x10000) ? + String.fromCharCode(0xD800 | ((unicodeChars - 0x10000) >> 10), + 0xDC00 | (unicodeChars & 0x3FF)) : String.fromCharCode(unicodeChars); + // TODO we probably don't need convert high/low surrogate... keeping for now + } + return { - unicode: unicode, + fontChar: String.fromCharCode(unicode), + unicode: unicodeChars, width: isNum(width) ? width : this.defaultWidth, codeIRQueue: codeIRQueue }; From 08e3fd88ada78c094dfbe527854264b2c1c4dbb8 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Sun, 27 Nov 2011 20:43:23 -0600 Subject: [PATCH 13/30] Removing adaptUnicode; making cmap equal to ToUnicode tables --- src/evaluator.js | 18 ++- src/fonts.js | 277 +++++++++++++++++++++++++++-------------------- 2 files changed, 172 insertions(+), 123 deletions(-) diff --git a/src/evaluator.js b/src/evaluator.js index 03fce2d9a..3e687c72d 100644 --- a/src/evaluator.js +++ b/src/evaluator.js @@ -555,9 +555,21 @@ var PartialEvaluator = (function partialEvaluator() { var startRange = tokens[j]; var endRange = tokens[j + 1]; var code = tokens[j + 2]; - while (startRange <= endRange) { - charToUnicode[startRange] = code++; - ++startRange; + if (code == 0xFFFF) { + // CMap is broken, assuming code == startRange + code = startRange; + } + if (isArray(code)) { + var codeindex = 0; + while (startRange <= endRange) { + charToUnicode[startRange] = code[codeindex++]; + ++startRange; + } + } else { + while (startRange <= endRange) { + charToUnicode[startRange] = code++; + ++startRange; + } } } break; diff --git a/src/fonts.js b/src/fonts.js index d028a9786..fb9bb9f0c 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -719,20 +719,10 @@ function getUnicodeRangeFor(value) { return -1; } -function adaptUnicode(unicode) { - return (unicode <= 0x1F || (unicode >= 127 && unicode < kSizeOfGlyphArea)) ? - unicode + kCmapGlyphOffset : unicode; -} - -function isAdaptedUnicode(unicode) { - return unicode >= kCmapGlyphOffset && - unicode < kCmapGlyphOffset + kSizeOfGlyphArea; -} - function isSpecialUnicode(unicode) { return (unicode <= 0x1F || (unicode >= 127 && unicode < kSizeOfGlyphArea)) || - unicode >= kCmapGlyphOffset && - unicode < kCmapGlyphOffset + kSizeOfGlyphArea; + (unicode >= kCmapGlyphOffset && + unicode < kCmapGlyphOffset + kSizeOfGlyphArea); } /** @@ -965,15 +955,15 @@ var Font = (function Font() { var ranges = []; for (var n = 0; n < length; ) { var start = codes[n].unicode; - var startCode = codes[n].code; + var codeIndices = [codes[n].code]; ++n; var end = start; while (n < length && end + 1 == codes[n].unicode) { + codeIndices.push(codes[n].code); ++end; ++n; } - var endCode = codes[n - 1].code; - ranges.push([start, end, startCode, endCode]); + ranges.push([start, end, codeIndices]); } return ranges; @@ -1016,17 +1006,16 @@ var Font = (function Font() { idDeltas += string16(0); idRangeOffsets += string16(offset); - var startCode = range[2]; - var endCode = range[3]; - for (var j = startCode; j <= endCode; ++j) - glyphsIds += string16(deltas[j]); + var codes = range[2]; + for (var j = 0, jj = codes.length; j < jj; ++j) + glyphsIds += string16(deltas[codes[j]]); } } else { for (var i = 0; i < segCount - 1; i++) { var range = ranges[i]; var start = range[0]; var end = range[1]; - var startCode = range[2]; + var startCode = range[2][0]; startCount += string16(start); endCount += string16(end); @@ -1303,7 +1292,7 @@ var Font = (function Font() { properties.baseEncoding = encoding; } - function replaceCMapTable(cmap, font, properties) { + function readCMapTable(cmap, font) { var start = (font.start ? font.start : 0) + cmap.offset; font.pos = start; @@ -1320,7 +1309,7 @@ var Font = (function Font() { } // Check that table are sorted by platformID then encodingID, - records.sort(function fontReplaceCMapTableSort(a, b) { + records.sort(function fontReadCMapTableSort(a, b) { return ((a.platformID << 16) + a.encodingID) - ((b.platformID << 16) + b.encodingID); }); @@ -1375,16 +1364,15 @@ var Font = (function Font() { for (var j = 0; j < 256; j++) { var index = font.getByte(); if (index) { - var unicode = adaptUnicode(j); - glyphs.push({ unicode: unicode, code: j }); + glyphs.push({ unicode: j, code: j }); ids.push(index); } } - - properties.hasShortCmap = true; - - createGlyphNameMap(glyphs, ids, properties); - return cmap.data = createCMapTable(glyphs, ids); + return { + glyphs: glyphs, + ids: ids, + hasShortCmap: true + }; } else if (format == 4) { // re-creating the table in format 4 since the encoding // might be changed @@ -1436,17 +1424,18 @@ var Font = (function Font() { var glyphCode = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; glyphCode = (glyphCode + delta) & 0xFFFF; - if (glyphCode == 0 || isAdaptedUnicode(j)) + if (glyphCode == 0) continue; - var unicode = adaptUnicode(j); - glyphs.push({ unicode: unicode, code: j }); + glyphs.push({ unicode: j, code: j }); ids.push(glyphCode); } } - createGlyphNameMap(glyphs, ids, properties); - return cmap.data = createCMapTable(glyphs, ids); + return { + glyphs: glyphs, + ids: ids + }; } else if (format == 6) { // Format 6 is a 2-bytes dense mapping, which means the font data // lives glue together even if they are pretty far in the unicode @@ -1461,19 +1450,18 @@ var Font = (function Font() { for (var j = 0; j < entryCount; j++) { var glyphCode = int16(font.getBytes(2)); var code = firstCode + j; - if (isAdaptedUnicode(glyphCode)) - continue; - var unicode = adaptUnicode(code); - glyphs.push({ unicode: unicode, code: code }); + glyphs.push({ unicode: code, code: code }); ids.push(glyphCode); } - createGlyphNameMap(glyphs, ids, properties); - return cmap.data = createCMapTable(glyphs, ids); + return { + glyphs: glyphs, + ids: ids + }; } } - return cmap.data; + error('Unsupported cmap table format'); }; function sanitizeMetrics(font, header, metrics, numGlyphs) { @@ -1712,17 +1700,60 @@ var Font = (function Font() { tables.push(cmap); } - var glyphs = []; + var glyphs = [], ids = []; + var usedUnicodes = [], unusedUnicode = kCmapGlyphOffset; + var cidToGidMap = properties.cidToGidMap; for (i = 1; i < numGlyphs; i++) { - if (isAdaptedUnicode(i)) - continue; - - glyphs.push({ unicode: adaptUnicode(i) }); + var cid = cidToGidMap ? cidToGidMap.indexOf(i) : i; + var unicode = this.toUnicode[cid]; + if (!unicode || isSpecialUnicode(unicode) || + unicode in usedUnicodes) { + // overriding the special special symbols mapping + while (unusedUnicode in usedUnicodes) + unusedUnicode++; + this.toUnicode[cid] = unicode = unusedUnicode++; + if (unusedUnicode >= kCmapGlyphOffset + kSizeOfGlyphArea) { + // overflow of the user defined symblos range + // using symbols that a little bit lower than this range + unusedUnicode = kCmapGlyphOffset - numGlyphs; + } + } + usedUnicodes[unicode] = true; + glyphs.push({ unicode: unicode, code: cid }); + ids.push(i); } - cmap.data = createCMapTable(glyphs); + cmap.data = createCMapTable(glyphs, ids); } else { - replaceCMapTable(cmap, font, properties); + var cmapTable = readCMapTable(cmap, font); + var glyphs = cmapTable.glyphs; + var ids = cmapTable.ids; + var hasShortCmap = !!cmapTable.hasShortCmap; + var toUnicode = this.toUnicode; + + if (hasShortCmap && toUnicode) { + // checking if cmap is just identity map + var isIdentity = true; + for (var i = 0, ii = glyphs.length; i < ii; i++) { + if (glyphs[i].unicode != i + 1) { + isIdentity = false; + break; + } + } + // if it is, replacing with meaningful toUnicode values + if (isIdentity) { + for (var i = 0, ii = glyphs.length; i < ii; i++) { + var unicode = toUnicode[i + 1] || i + 1; + glyphs[i].unicode = unicode; + } + this.useToUnicode = true; + } + } + properties.hasShortCmap = hasShortCmap; + + createGlyphNameMap(glyphs, ids, properties); this.glyphNameMap = properties.glyphNameMap; + + cmap.data = createCMapTable(glyphs, ids); } // Rewrite the 'post' table if needed @@ -1812,6 +1843,14 @@ var Font = (function Font() { } properties.baseEncoding = encoding; } + if (properties.subtype == 'CIDFontType0C') { + var toUnicode = []; + for (var i = 0; i < charstrings.length; ++i) { + var charstring = charstrings[i]; + toUnicode[charstring.code] = charstring.unicode; + } + this.toUnicode = toUnicode; + } var fields = { // PostScript Font Program @@ -1872,8 +1911,11 @@ var Font = (function Font() { // Horizontal metrics 'hmtx': (function fontFieldsHmtx() { var hmtx = '\x00\x00\x00\x00'; // Fake .notdef - for (var i = 0, ii = charstrings.length; i < ii; i++) - hmtx += string16(charstrings[i].width) + string16(0); + for (var i = 0, ii = charstrings.length; i < ii; i++) { + var charstring = charstrings[i]; + var width = 'width' in charstring ? charstring.width : 0; + hmtx += string16(width) + string16(0); + } return stringToArray(hmtx); })(), @@ -1903,20 +1945,22 @@ var Font = (function Font() { }, rebuildToUnicode: function font_rebuildToUnicode(properties) { + var firstChar = properties.firstChar, lastChar = properties.lastChar; var map = []; if (properties.composite) { - for (var i = properties.firstChar, ii = properties.lastChar; i <= ii; i++) { + var isIdentityMap = this.cidToUnicode.length == 0; + for (var i = firstChar, ii = lastChar; i <= ii; i++) { // TODO missing map the character according font's CMap var cid = i; - map[i] = this.cidToUnicode[cid]; + map[i] = isIdentityMap ? cid : this.cidToUnicode[cid]; } } else { - for (var i = properties.firstChar, ii = properties.lastChar; i <= ii; i++) { + for (var i = firstChar, ii = lastChar; i <= ii; i++) { var glyph = properties.differences[i]; if (!glyph) glyph = properties.baseEncoding[i]; if (!!glyph && (glyph in GlyphsUnicode)) - map[i] = GlyphsUnicode[glyph] + map[i] = GlyphsUnicode[glyph]; } } this.toUnicode = map; @@ -1926,16 +1970,12 @@ var Font = (function Font() { }, loadCidToUnicode: function font_loadCidToUnicode(properties) { - if (properties.cidToGidMap) { - this.cidToUnicode = properties.cidToGidMap; - return; - } - if (!properties.cidSystemInfo) return; - var cidToUnicodeMap = []; + var cidToUnicodeMap = [], unicodeToCIDMap = []; this.cidToUnicode = cidToUnicodeMap; + this.unicodeToCID = unicodeToCIDMap; var cidSystemInfo = properties.cidSystemInfo; var cidToUnicode; @@ -1947,28 +1987,34 @@ var Font = (function Font() { if (!cidToUnicode) return; // identity encoding - var glyph = 1, i, j, k, ii; + var cid = 1, i, j, k, ii; for (i = 0, ii = cidToUnicode.length; i < ii; ++i) { var unicode = cidToUnicode[i]; if (isArray(unicode)) { var length = unicode.length; - for (j = 0; j < length; j++) - cidToUnicodeMap[unicode[j]] = glyph; - glyph++; + for (j = 0; j < length; j++) { + cidToUnicodeMap[cid] = unicode[j]; + unicodeToCIDMap[unicode[j]] = cid; + } + cid++; } else if (typeof unicode === 'object') { var fillLength = unicode.f; if (fillLength) { k = unicode.c; for (j = 0; j < fillLength; ++j) { - cidToUnicodeMap[k] = glyph++; + cidToUnicodeMap[cid] = k; + unicodeToCIDMap[k] = cid; + cid++; k++; } } else - glyph += unicode.s; + cid += unicode.s; } else if (unicode) { - cidToUnicodeMap[unicode] = glyph++; + cidToUnicodeMap[cid] = unicode; + unicodeToCIDMap[unicode] = cid; + cid++; } else - glyph++; + cid++; } }, @@ -2008,19 +2054,19 @@ var Font = (function Font() { switch (this.type) { case 'CIDFontType0': if (this.noUnicodeAdaptation) { - width = this.widths[this.cidToUnicode[charcode]]; + width = this.widths[this.unicodeToCID[charcode] || charcode]; unicode = charcode; break; } - unicode = adaptUnicode(this.cidToUnicode[charcode] || charcode); + unicode = this.toUnicode[charcode] || charcode; break; case 'CIDFontType2': if (this.noUnicodeAdaptation) { - width = this.widths[this.cidToUnicode[charcode]]; + width = this.widths[this.unicodeToCID[charcode] || charcode]; unicode = charcode; break; } - unicode = adaptUnicode(this.cidToUnicode[charcode] || charcode); + unicode = this.toUnicode[charcode] || charcode; break; case 'Type1': var glyphName = this.differences[charcode] || this.encoding[charcode]; @@ -2031,7 +2077,7 @@ var Font = (function Font() { break; } unicode = this.glyphNameMap[glyphName] || - adaptUnicode(GlyphsUnicode[glyphName] || charcode); + GlyphsUnicode[glyphName] || charcode; break; case 'Type3': var glyphName = this.differences[charcode] || this.encoding[charcode]; @@ -2049,16 +2095,16 @@ var Font = (function Font() { break; } if (!this.hasEncoding) { - unicode = adaptUnicode(charcode); + unicode = this.useToUnicode ? this.toUnicode[charcode] : charcode; break; } - if (this.hasShortCmap) { + if (this.hasShortCmap && false) { var j = Encodings.MacRomanEncoding.indexOf(glyphName); - unicode = j >= 0 && !isSpecialUnicode(j) ? j : + unicode = j >= 0 ? j : this.glyphNameMap[glyphName]; } else { unicode = glyphName in GlyphsUnicode ? - adaptUnicode(GlyphsUnicode[glyphName]) : + GlyphsUnicode[glyphName] : this.glyphNameMap[glyphName]; } break; @@ -2068,12 +2114,8 @@ var Font = (function Font() { } var unicodeChars = this.toUnicode ? this.toUnicode[charcode] : charcode; - if (typeof unicodeChars === 'number') { - unicodeChars = (unicodeChars >= 0x10000) ? - String.fromCharCode(0xD800 | ((unicodeChars - 0x10000) >> 10), - 0xDC00 | (unicodeChars & 0x3FF)) : String.fromCharCode(unicodeChars); - // TODO we probably don't need convert high/low surrogate... keeping for now - } + if (typeof unicodeChars === 'number') + unicodeChars = String.fromCharCode(unicodeChars); return { fontChar: String.fromCharCode(unicode), @@ -2790,22 +2832,13 @@ CFF.prototype = { getOrderedCharStrings: function cff_getOrderedCharStrings(glyphs, properties) { var charstrings = []; - var reverseMapping = {}; - var encoding = properties.baseEncoding; var i, length, glyphName; - for (i = 0, length = encoding.length; i < length; ++i) { - glyphName = encoding[i]; - if (!glyphName || isSpecialUnicode(i)) - continue; - reverseMapping[glyphName] = i; - } - reverseMapping['.notdef'] = 0; var unusedUnicode = kCmapGlyphOffset; for (i = 0, length = glyphs.length; i < length; i++) { var item = glyphs[i]; var glyphName = item.glyph; - var unicode = glyphName in reverseMapping ? - reverseMapping[glyphName] : unusedUnicode++; + var unicode = glyphName in GlyphsUnicode ? + GlyphsUnicode[glyphName] : unusedUnicode++; charstrings.push({ glyph: glyphName, unicode: unicode, @@ -3092,16 +3125,14 @@ var Type2CFF = (function type2CFF() { } var charStrings = this.parseIndex(topDict.CharStrings); - var charset = this.parseCharsets(topDict.charset, - charStrings.length, strings); - var encoding = this.parseEncoding(topDict.Encoding, properties, - strings, charset); var charset, encoding; var isCIDFont = properties.subtype == 'CIDFontType0C'; if (isCIDFont) { - charset = []; - charset.length = charStrings.length; + charset = ['.notdef']; + for (var i = 1, ii = charStrings.length; i < ii; ++i) + charset.push('glyph' + i); + encoding = this.parseCidMap(topDict.charset, charStrings.length); } else { @@ -3170,38 +3201,44 @@ var Type2CFF = (function type2CFF() { var charstrings = []; var unicodeUsed = []; var unassignedUnicodeItems = []; + var inverseEncoding = []; + for (var charcode in encoding) + inverseEncoding[encoding[charcode]] = charcode | 0; for (var i = 0, ii = charsets.length; i < ii; i++) { var glyph = charsets[i]; - var encodingFound = false; - for (var charcode in encoding) { - if (encoding[charcode] == i) { - var code = charcode | 0; - charstrings.push({ - unicode: adaptUnicode(code), - code: code, - gid: i, - glyph: glyph - }); - unicodeUsed[code] = true; - encodingFound = true; - break; - } + if (glyph == '.notdef') { + charstrings.push({ + unicode: 0, + code: 0, + gid: i, + glyph: glyph + }); + continue; } - if (!encodingFound) { + var code = inverseEncoding[i]; + if (!code || isSpecialUnicode(code)) { unassignedUnicodeItems.push(i); + continue; } + charstrings.push({ + unicode: code, + code: code, + gid: i, + glyph: glyph + }); + unicodeUsed[code] = true; } - var nextUnusedUnicode = 0x21; + var nextUnusedUnicode = kCmapGlyphOffset; for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; ++j) { var i = unassignedUnicodeItems[j]; // giving unicode value anyway - while (unicodeUsed[nextUnusedUnicode]) + while (nextUnusedUnicode in unicodeUsed) nextUnusedUnicode++; - var code = nextUnusedUnicode++; + var unicode = nextUnusedUnicode++; charstrings.push({ - unicode: adaptUnicode(code), - code: code, + unicode: unicode, + code: inverseEncoding[i] || 0, gid: i, glyph: charsets[i] }); From a1853185b16a69ac7eb8d22b3b276d467236c0aa Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Mon, 28 Nov 2011 09:25:25 -0500 Subject: [PATCH 14/30] Comments --- src/canvas.js | 9 +++++++-- src/metrics.js | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 0107570d9..ab1422758 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -103,6 +103,7 @@ var CanvasGraphics = (function canvasGraphics() { this.ctx.transform(0, -1, -1, 0, cw, ch); break; } + // Scale so that canvas units are the same as PDF user space units this.ctx.scale(cw / mediaBox.width, ch / mediaBox.height); this.textDivs = []; this.textLayerQueue = []; @@ -491,14 +492,18 @@ var CanvasGraphics = (function canvasGraphics() { pushTextDivs: function canvasGraphicsPushTextDivs(text) { var div = document.createElement('div'); var fontSize = this.current.fontSize; - var fontHeight = text.geom.vScale * fontSize; + + // vScale and hScale already contain the scaling to pixel units + // as mozCurrentTransform reflects ctx.scale() changes + // (see beginDrawing()) + var fontHeight = fontSize * text.geom.vScale; + div.dataset.canvasWidth = text.canvasWidth * text.geom.hScale; div.style.fontSize = fontHeight + 'px'; div.style.fontFamily = this.current.font.loadedName || 'sans-serif'; div.style.left = text.geom.x + 'px'; div.style.top = (text.geom.y - fontHeight) + 'px'; div.innerHTML = text.str; - div.dataset.canvasWidth = text.canvasWidth * text.geom.hScale; div.dataset.textLength = text.length; this.textDivs.push(div); }, diff --git a/src/metrics.js b/src/metrics.js index c21b4aed1..e64961aa7 100644 --- a/src/metrics.js +++ b/src/metrics.js @@ -3,6 +3,9 @@ 'use strict'; +// The Metrics object contains glyph widths (in glyph space units). +// As per PDF spec, for most fonts (Type 3 being an exception) a glyph +// space unit corresponds to 1/1000th of text space unit. var Metrics = { 'Courier': 600, 'Courier-Bold': 600, From e4e864766df1c2252197113378ad0e191665e219 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Mon, 28 Nov 2011 19:47:37 -0600 Subject: [PATCH 15/30] Fix CIDFontType2 large cmap tables --- src/fonts.js | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index fb9bb9f0c..734b38c4a 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1701,27 +1701,37 @@ var Font = (function Font() { } var glyphs = [], ids = []; - var usedUnicodes = [], unusedUnicode = kCmapGlyphOffset; + var usedUnicodes = []; var cidToGidMap = properties.cidToGidMap; - for (i = 1; i < numGlyphs; i++) { + var unassignedUnicodeItems = []; + for (var i = 1; i < numGlyphs; i++) { var cid = cidToGidMap ? cidToGidMap.indexOf(i) : i; var unicode = this.toUnicode[cid]; if (!unicode || isSpecialUnicode(unicode) || unicode in usedUnicodes) { - // overriding the special special symbols mapping - while (unusedUnicode in usedUnicodes) - unusedUnicode++; - this.toUnicode[cid] = unicode = unusedUnicode++; - if (unusedUnicode >= kCmapGlyphOffset + kSizeOfGlyphArea) { - // overflow of the user defined symblos range - // using symbols that a little bit lower than this range - unusedUnicode = kCmapGlyphOffset - numGlyphs; - } + unassignedUnicodeItems.push(i); + continue; } usedUnicodes[unicode] = true; glyphs.push({ unicode: unicode, code: cid }); ids.push(i); } + // checking if unassigned symbols will fit the user defined symbols + // if those symbols too many, probably they will not be used anyway + if (unassignedUnicodeItems.length <= kSizeOfGlyphArea) { + var unusedUnicode = kCmapGlyphOffset; + for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) { + var i = unassignedUnicodeItems[j]; + var cid = cidToGidMap ? cidToGidMap.indexOf(i) : i; + while (unusedUnicode in usedUnicodes) + unusedUnicode++; + var unicode = unusedUnicode++; + this.toUnicode[cid] = unicode; + usedUnicodes[unicode] = true; + glyphs.push({ unicode: unicode, code: cid }); + ids.push(i); + } + } cmap.data = createCMapTable(glyphs, ids); } else { var cmapTable = readCMapTable(cmap, font); From 88310a09c2470589aa4343d9da9f5c43427a060a Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Mon, 28 Nov 2011 19:49:02 -0600 Subject: [PATCH 16/30] Removing refreshToUnicode --- src/fonts.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index 734b38c4a..9ec87227e 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1974,9 +1974,6 @@ var Font = (function Font() { } } this.toUnicode = map; - this.refreshToUnicode = function refreshToUnicode() { - this.font_rebuildToUnicode(properties); - }; }, loadCidToUnicode: function font_loadCidToUnicode(properties) { From 683a8f0de8d9155a34f1ba422cc5d12ee4133b9b Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Mon, 28 Nov 2011 21:54:07 -0600 Subject: [PATCH 17/30] Remove indexOf, using reverse map instead --- src/fonts.js | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index 9ec87227e..9aabb3f57 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1700,12 +1700,19 @@ var Font = (function Font() { tables.push(cmap); } + var cidToGidMap = properties.cidToGidMap || []; + var gidToCidMap = [0]; + for (var j = cidToGidMap.length - 1; j >= 0; j--) { + var gid = cidToGidMap[j]; + if (gid) + gidToCidMap[gid] = j; + } + var glyphs = [], ids = []; var usedUnicodes = []; - var cidToGidMap = properties.cidToGidMap; var unassignedUnicodeItems = []; for (var i = 1; i < numGlyphs; i++) { - var cid = cidToGidMap ? cidToGidMap.indexOf(i) : i; + var cid = gidToCidMap[i] || i; var unicode = this.toUnicode[cid]; if (!unicode || isSpecialUnicode(unicode) || unicode in usedUnicodes) { @@ -1716,21 +1723,21 @@ var Font = (function Font() { glyphs.push({ unicode: unicode, code: cid }); ids.push(i); } - // checking if unassigned symbols will fit the user defined symbols - // if those symbols too many, probably they will not be used anyway - if (unassignedUnicodeItems.length <= kSizeOfGlyphArea) { - var unusedUnicode = kCmapGlyphOffset; - for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) { - var i = unassignedUnicodeItems[j]; - var cid = cidToGidMap ? cidToGidMap.indexOf(i) : i; - while (unusedUnicode in usedUnicodes) - unusedUnicode++; - var unicode = unusedUnicode++; - this.toUnicode[cid] = unicode; - usedUnicodes[unicode] = true; - glyphs.push({ unicode: unicode, code: cid }); - ids.push(i); - } + // trying to fit as many unassigned symbols as we can + // in the range allocated for the user defined symbols + var unusedUnicode = kCmapGlyphOffset; + for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) { + var i = unassignedUnicodeItems[j]; + var cid = gidToCidMap[i] || i; + while (unusedUnicode in usedUnicodes) + unusedUnicode++; + if (unusedUnicode >= kCmapGlyphOffset + kSizeOfGlyphArea) + break; + var unicode = unusedUnicode++; + this.toUnicode[cid] = unicode; + usedUnicodes[unicode] = true; + glyphs.push({ unicode: unicode, code: cid }); + ids.push(i); } cmap.data = createCMapTable(glyphs, ids); } else { From fe5aa4af3f36f570b7a10160eabb47bec630be4e Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 29 Nov 2011 14:46:24 -0500 Subject: [PATCH 18/30] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 97db68d36..f3500ae4d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # pdf.js - + ## Overview From 6a747c4353887c0fab14aa95c46853ee44d42818 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 29 Nov 2011 14:54:32 -0500 Subject: [PATCH 19/30] Created inactive window bugzilla bug --- web/viewer.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/viewer.css b/web/viewer.css index 1684900fa..3313ce3cb 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -247,11 +247,11 @@ canvas { line-height:1.3; } -::selection { background:rgba(0,0,255,0.3); } -::-moz-selection { background:rgba(0,0,255,0.3); } /* TODO: file FF bug to support ::-moz-selection:window-inactive so we can override the opaque grey background when the window is inactive; - see also http://css-tricks.com/9288-window-inactive-styling */ + see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */ +::selection { background:rgba(0,0,255,0.3); } +::-moz-selection { background:rgba(0,0,255,0.3); } #viewer { margin: 44px 0px 0px; From e2e2240a227f2a838a4fee9481587d668d57747d Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Tue, 29 Nov 2011 16:02:12 -0500 Subject: [PATCH 20/30] Lint lint lint --- src/canvas.js | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 99644eb07..16a870817 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -280,29 +280,28 @@ var CanvasGraphics = (function canvasGraphics() { var textLayer = this.textLayer; if (textLayer) { - var renderTextLayer = function canvasRenderTextLayer() { + var renderTextLayer = function canvasRenderTextLayer() { var textDivs = self.textDivs; for (var i = 0, length = textDivs.length; i < length; ++i) { - if (textDivs[i].dataset.textLength>1) { // avoid div by zero + if (textDivs[i].dataset.textLength > 1) { // avoid div by zero textLayer.appendChild(textDivs[i]); // Adjust div width (via letterSpacing) to match canvas text // Due to the .offsetWidth calls, this is slow textDivs[i].style.letterSpacing = - ((textDivs[i].dataset.canvasWidth - - textDivs[i].offsetWidth)/(textDivs[i].dataset.textLength-1)) - + 'px'; + ((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth) / + (textDivs[i].dataset.textLength - 1)) + 'px'; } - } + } } var textLayerQueue = self.textLayerQueue; textLayerQueue.push(renderTextLayer); - + // Lazy textLayer rendering (to prevent UI hangs) // Only render queue if activity has stopped, where "no activity" == // "no beginDrawing() calls in the last N ms" - self.textLayerTimer = setTimeout(function renderTextLayerQueue(){ + self.textLayerTimer = setTimeout(function renderTextLayerQueue() { // Render most recent (==most relevant) layers first - for (var i=textLayerQueue.length-1; i>=0; i--) { + for (var i = textLayerQueue.length - 1; i >= 0; i--) { textLayerQueue.pop().call(); } }, 500); @@ -596,7 +595,7 @@ var CanvasGraphics = (function canvasGraphics() { spaceGlyph = font.charsToGlyphs('i'); // Fallback if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) - spaceGlyph = [ {width:0} ]; + spaceGlyph = [{width: 0}]; geom.spaceWidth = spaceGlyph[0].width; return geom; }, @@ -629,7 +628,7 @@ var CanvasGraphics = (function canvasGraphics() { var textHScale = current.textHScale; var glyphsLength = glyphs.length; var textLayer = this.textLayer; - var text = { str:'', length:0, canvasWidth:0, geom:{}}; + var text = {str: '', length: 0, canvasWidth: 0, geom: {}}; var textSelection = textLayer && !skipTextSelection ? true : false; if (textSelection) { @@ -638,7 +637,7 @@ var CanvasGraphics = (function canvasGraphics() { text.geom = this.getTextGeometry(); ctx.restore(); } - + // Type3 fonts - each glyph is a "mini-PDF" if (font.coded) { ctx.save(); @@ -689,7 +688,7 @@ var CanvasGraphics = (function canvasGraphics() { var charWidth = glyph.width * fontSize * 0.001 + charSpacing; ctx.fillText(char, width, 0); width += charWidth; - + text.str += char === ' ' ? ' ' : char; text.length++; text.canvasWidth += charWidth; @@ -699,7 +698,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.restore(); } - if (textSelection) + if (textSelection) this.pushTextDivs(text); return text; @@ -712,7 +711,7 @@ var CanvasGraphics = (function canvasGraphics() { var arrLength = arr.length; var textLayer = this.textLayer; var font = current.font; - var text = {str:'', length:0, canvasWidth:0, geom:{}}; + var text = {str: '', length: 0, canvasWidth: 0, geom: {}}; var textSelection = textLayer ? true : false; if (textSelection) { @@ -721,7 +720,7 @@ var CanvasGraphics = (function canvasGraphics() { text.geom = this.getTextGeometry(); ctx.restore(); } - + for (var i = 0; i < arrLength; ++i) { var e = arr[i]; if (isNum(e)) { @@ -731,11 +730,11 @@ var CanvasGraphics = (function canvasGraphics() { if (textSelection) { // Emulate precise spacing via HTML spaces text.canvasWidth += spacingLength; - if (e<0 && text.geom.spaceWidth>0) { // avoid div by zero + if (e < 0 && text.geom.spaceWidth > 0) { // avoid div by zero var numFakeSpaces = Math.round(-e / text.geom.spaceWidth); for (var j = 0; j < numFakeSpaces; ++j) text.str += ' '; - text.length += numFakeSpaces>0 ? 1 : 0; + text.length += numFakeSpaces > 0 ? 1 : 0; } } } else if (isString(e)) { @@ -754,8 +753,8 @@ var CanvasGraphics = (function canvasGraphics() { malformed('TJ array element ' + e + ' is not string or num'); } } - - if (textSelection) + + if (textSelection) this.pushTextDivs(text); }, nextLineShowText: function canvasGraphicsNextLineShowText(text) { From e5d91ab2194addbe4d017a1c9f9c1cd3aeb4a84c Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Tue, 29 Nov 2011 14:50:19 -0800 Subject: [PATCH 21/30] Fix invalid arguments error. --- src/core.js | 15 ++------------- src/evaluator.js | 5 +++++ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/core.js b/src/core.js index 3549eb906..a3485b3e0 100644 --- a/src/core.js +++ b/src/core.js @@ -558,20 +558,9 @@ var PDFDoc = (function pdfDoc() { var properties = data[4]; if (file) { + // Rewrap the ArrayBuffer in a stream. var fontFileDict = new Dict(); - fontFileDict.map = file.dict.map; - - var fontFile = new Stream(file.bytes, file.start, - file.end - file.start, fontFileDict); - - // Check if this is a FlateStream. Otherwise just use the created - // Stream one. This makes complex_ttf_font.pdf work. - var cmf = file.bytes[0]; - if ((cmf & 0x0f) == 0x08) { - file = new FlateStream(fontFile); - } else { - file = fontFile; - } + file = new Stream(file, 0, file.length, fontFileDict); } // For now, resolve the font object here direclty. The real font diff --git a/src/evaluator.js b/src/evaluator.js index 3e687c72d..b6ef4ddfa 100644 --- a/src/evaluator.js +++ b/src/evaluator.js @@ -155,6 +155,11 @@ var PartialEvaluator = (function partialEvaluator() { font.loadedName = loadedName; var translated = font.translated; + // Convert the file to an ArrayBuffer which will be turned back into + // a Stream in the main thread. + if (translated.file) + translated.file = translated.file.getBytes(); + handler.send('obj', [ loadedName, 'Font', From f0bb73e9e8a758f6ed2130aba7caa8b677f3b0ed Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Tue, 29 Nov 2011 15:47:53 -0800 Subject: [PATCH 22/30] Add test case. --- test/pdfs/protectip.pdf.link | 1 + test/test_manifest.json | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 test/pdfs/protectip.pdf.link diff --git a/test/pdfs/protectip.pdf.link b/test/pdfs/protectip.pdf.link new file mode 100644 index 000000000..1af1bd87b --- /dev/null +++ b/test/pdfs/protectip.pdf.link @@ -0,0 +1 @@ +http://leahy.senate.gov/imo/media/doc/BillText-PROTECTIPAct.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 87af30659..ef5677f07 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -276,5 +276,12 @@ "link": false, "rounds": 1, "type": "eq" + }, + { "id": "protectip", + "file": "pdfs/protectip.pdf", + "md5": "676e7a7b8f96d04825361832b1838a93", + "link": true, + "rounds": 1, + "type": "eq" } ] From 0414c0711f4b0d20a6680cbf3e5dc02a6e1d7bb0 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 29 Nov 2011 22:06:00 -0600 Subject: [PATCH 23/30] Fixing base encoding presence detection; character width scale --- src/canvas.js | 14 ++++++++------ src/evaluator.js | 2 ++ src/fonts.js | 7 ++++++- src/glyphlist.js | 3 ++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 587357980..f16313db2 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -537,13 +537,14 @@ var CanvasGraphics = (function canvasGraphics() { var charSpacing = current.charSpacing; var wordSpacing = current.wordSpacing; var textHScale = current.textHScale; + var fontMatrix = font.fontMatrix || IDENTITY_MATRIX; + var textHScale2 = textHScale * fontMatrix[0]; var glyphsLength = glyphs.length; if (font.coded) { ctx.save(); ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y); - var fontMatrix = font.fontMatrix || IDENTITY_MATRIX; ctx.scale(1 / textHScale, 1); for (var i = 0; i < glyphsLength; ++i) { @@ -564,7 +565,7 @@ var CanvasGraphics = (function canvasGraphics() { var width = transformed[0] * fontSize + charSpacing; ctx.translate(width, 0); - current.x += width; + current.x += width * textHScale2; } ctx.restore(); @@ -573,7 +574,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.transform.apply(ctx, current.textMatrix); ctx.scale(1, -1); ctx.translate(current.x, -1 * current.y); - ctx.transform.apply(ctx, font.fontMatrix || IDENTITY_MATRIX); + ctx.transform.apply(ctx, fontMatrix); ctx.scale(1 / textHScale, 1); @@ -592,7 +593,7 @@ var CanvasGraphics = (function canvasGraphics() { // TODO actual characters can be extracted from the glyph.unicode } - current.x += width; + current.x += width * textHScale2; ctx.restore(); } @@ -602,12 +603,13 @@ var CanvasGraphics = (function canvasGraphics() { var ctx = this.ctx; var current = this.current; var fontSize = current.fontSize; - var textHScale = current.textHScale; + var textHScale2 = current.textHScale * + (current.font.fontMatrix || IDENTITY_MATRIX)[0]; var arrLength = arr.length; for (var i = 0; i < arrLength; ++i) { var e = arr[i]; if (isNum(e)) { - current.x -= e * 0.001 * fontSize * textHScale; + current.x -= e * 0.001 * fontSize * textHScale2; } else if (isString(e)) { this.showText(e); } else { diff --git a/src/evaluator.js b/src/evaluator.js index b6ef4ddfa..954c3bec3 100644 --- a/src/evaluator.js +++ b/src/evaluator.js @@ -498,6 +498,8 @@ var PartialEvaluator = (function partialEvaluator() { var baseName = encoding.get('BaseEncoding'); if (baseName) baseEncoding = Encodings[baseName.name]; + else + hasEncoding = false; // base encoding was not provided // Load the differences between the base and original if (encoding.has('Differences')) { diff --git a/src/fonts.js b/src/fonts.js index 9aabb3f57..2e95a7c94 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -764,6 +764,7 @@ var Font = (function Font() { this.hasEncoding = properties.hasEncoding; this.fontMatrix = properties.fontMatrix; + this.widthMultiplier = 1.0; if (properties.type == 'Type3') return; @@ -826,6 +827,8 @@ var Font = (function Font() { this.data = data; this.fontMatrix = properties.fontMatrix; + this.widthMultiplier = !properties.fontMatrix ? 1.0 : + 1.0 / properties.fontMatrix[0]; this.encoding = properties.baseEncoding; this.hasShortCmap = properties.hasShortCmap; this.loadedName = getUniqueName(); @@ -2131,10 +2134,12 @@ var Font = (function Font() { if (typeof unicodeChars === 'number') unicodeChars = String.fromCharCode(unicodeChars); + width = (isNum(width) ? width : this.defaultWidth) * this.widthMultiplier; + return { fontChar: String.fromCharCode(unicode), unicode: unicodeChars, - width: isNum(width) ? width : this.defaultWidth, + width: width, codeIRQueue: codeIRQueue }; }, diff --git a/src/glyphlist.js b/src/glyphlist.js index 5691f8546..01b94442a 100644 --- a/src/glyphlist.js +++ b/src/glyphlist.js @@ -4287,6 +4287,7 @@ var GlyphsUnicode = { zretroflexhook: 0x0290, zstroke: 0x01B6, zuhiragana: 0x305A, - zukatakana: 0x30BA + zukatakana: 0x30BA, + '.notdef': 0x0000 }; From 73bf5d7b651f6c1213321818e84986738d6f013d Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 29 Nov 2011 22:22:30 -0600 Subject: [PATCH 24/30] Add paperine test --- test/pdfs/piperine.pdf.link | 1 + test/test_manifest.json | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 test/pdfs/piperine.pdf.link diff --git a/test/pdfs/piperine.pdf.link b/test/pdfs/piperine.pdf.link new file mode 100644 index 000000000..0d38690ee --- /dev/null +++ b/test/pdfs/piperine.pdf.link @@ -0,0 +1 @@ +http://www.erowid.org/archive/rhodium/chemistry/3base/piperonal.pepper/piperine.pepper/465e03piperine.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index ef5677f07..dd861c9f2 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -283,5 +283,12 @@ "link": true, "rounds": 1, "type": "eq" + }, + { "id": "piperine", + "file": "pdfs/piperine.pdf", + "md5": "603ca43dc5732dbba1579f122958c0c2", + "link": true, + "rounds": 1, + "type": "eq" } ] From 6fe0594d9386e7ca0981935c0cc7fdcb9508d4bf Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 30 Nov 2011 09:42:52 -0500 Subject: [PATCH 25/30] fixing ref so that it passes manifest tests --- extensions/firefox/install.rdf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/firefox/install.rdf b/extensions/firefox/install.rdf index 952d55fbf..7bf7b8037 100644 --- a/extensions/firefox/install.rdf +++ b/extensions/firefox/install.rdf @@ -12,7 +12,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 6.0 - 11.0.* + 11.0a1 true @@ -20,5 +20,6 @@ Vivien Nicolas pdf.js uri loader https://github.com/mozilla/pdf.js/ + 2 From 8396406475ad1ef41b9fc54ec955f7c751a049d6 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 30 Nov 2011 10:31:10 -0500 Subject: [PATCH 26/30] v0.1.0 --- extensions/firefox/install.rdf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/firefox/install.rdf b/extensions/firefox/install.rdf index 7bf7b8037..8b793c525 100644 --- a/extensions/firefox/install.rdf +++ b/extensions/firefox/install.rdf @@ -6,7 +6,7 @@ uriloader@pdf.js pdf.js - 0.1 + 0.1.0 chrome://pdf.js/skin/logo.png From c06697732fb5c34887f14e4a559667ad9ceacd5d Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Wed, 30 Nov 2011 19:04:45 -0600 Subject: [PATCH 27/30] Avoiding pageRefMap is not defined in the getDestinationHash() --- web/viewer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index c8b830431..2e8ce0df6 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -238,10 +238,10 @@ var PDFView = { pagesRefMap[pageRef.num + ' ' + pageRef.gen + ' R'] = i; } - this.setScale(scale || kDefaultScale, true); - this.pagesRefMap = pagesRefMap; this.destinations = pdf.catalog.destinations; + this.setScale(scale || kDefaultScale, true); + if (pdf.catalog.documentOutline) { this.outline = new DocumentOutlineView(pdf.catalog.documentOutline); var outlineSwitchButton = document.getElementById('outlineSwitch'); From 705356fa41ef226844ab0150059655d59e9d41b4 Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Thu, 1 Dec 2011 14:11:17 -0500 Subject: [PATCH 28/30] Addressing comments by @vingtetun --- src/canvas.js | 69 +++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 1e8febea8..b457eb4ff 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -275,37 +275,38 @@ var CanvasGraphics = (function canvasGraphics() { }, endDrawing: function canvasGraphicsEndDrawing() { - var self = this; this.ctx.restore(); var textLayer = this.textLayer; - if (textLayer) { - var renderTextLayer = function canvasRenderTextLayer() { - var textDivs = self.textDivs; - for (var i = 0, length = textDivs.length; i < length; ++i) { - if (textDivs[i].dataset.textLength > 1) { // avoid div by zero - textLayer.appendChild(textDivs[i]); - // Adjust div width (via letterSpacing) to match canvas text - // Due to the .offsetWidth calls, this is slow - textDivs[i].style.letterSpacing = - ((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth) / - (textDivs[i].dataset.textLength - 1)) + 'px'; - } + if (!textLayer) + return; + + var self = this; + var renderTextLayer = function canvasRenderTextLayer() { + var textDivs = self.textDivs; + for (var i = 0, length = textDivs.length; i < length; ++i) { + if (textDivs[i].dataset.textLength > 1) { // avoid div by zero + textLayer.appendChild(textDivs[i]); + // Adjust div width (via letterSpacing) to match canvas text + // Due to the .offsetWidth calls, this is slow + textDivs[i].style.letterSpacing = + ((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth) / + (textDivs[i].dataset.textLength - 1)) + 'px'; } } - var textLayerQueue = self.textLayerQueue; - textLayerQueue.push(renderTextLayer); - - // Lazy textLayer rendering (to prevent UI hangs) - // Only render queue if activity has stopped, where "no activity" == - // "no beginDrawing() calls in the last N ms" - self.textLayerTimer = setTimeout(function renderTextLayerQueue() { - // Render most recent (==most relevant) layers first - for (var i = textLayerQueue.length - 1; i >= 0; i--) { - textLayerQueue.pop().call(); - } - }, 500); } + var textLayerQueue = this.textLayerQueue; + textLayerQueue.push(renderTextLayer); + + // Lazy textLayer rendering (to prevent UI hangs) + // Only render queue if activity has stopped, where "no activity" == + // "no beginDrawing() calls in the last N ms" + this.textLayerTimer = setTimeout(function renderTextLayerQueue() { + // Render most recent (==most relevant) layers first + for (var i = textLayerQueue.length - 1; i >= 0; i--) { + textLayerQueue.pop().call(); + } + }, 500); }, // Graphics state @@ -577,28 +578,32 @@ var CanvasGraphics = (function canvasGraphics() { ctx.scale(1 / textHScale, 1); }, getTextGeometry: function canvasGetTextGeometry() { - var geom = {}; + var geometry = {}; var ctx = this.ctx; var font = this.current.font; var ctxMatrix = ctx.mozCurrentTransform; if (ctxMatrix) { var bl = Util.applyTransform([0, 0], ctxMatrix); var tr = Util.applyTransform([1, 1], ctxMatrix); - geom.x = bl[0]; - geom.y = bl[1]; - geom.hScale = tr[0] - bl[0]; - geom.vScale = tr[1] - bl[1]; + geometry.x = bl[0]; + geometry.y = bl[1]; + geometry.hScale = tr[0] - bl[0]; + geometry.vScale = tr[1] - bl[1]; } var spaceGlyph = font.charsToGlyphs(' '); + // Hack (sometimes space is not encoded) if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) spaceGlyph = font.charsToGlyphs('i'); + // Fallback if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0) spaceGlyph = [{width: 0}]; - geom.spaceWidth = spaceGlyph[0].width; - return geom; + + geometry.spaceWidth = spaceGlyph[0].width; + return geometry; }, + pushTextDivs: function canvasGraphicsPushTextDivs(text) { var div = document.createElement('div'); var fontSize = this.current.fontSize; From bb6e5c6e00d2fc94fc02e23de91182b0271ac0d9 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Thu, 1 Dec 2011 20:56:26 -0600 Subject: [PATCH 29/30] (#840) fix font stretching and overlapping characters encoding --- src/canvas.js | 4 ++-- src/fonts.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index b457eb4ff..0913b582a 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -575,7 +575,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.scale(1, -1); ctx.translate(current.x, -1 * current.y); ctx.transform.apply(ctx, fontMatrix); - ctx.scale(1 / textHScale, 1); + ctx.scale(textHScale, 1); }, getTextGeometry: function canvasGetTextGeometry() { var geometry = {}; @@ -651,7 +651,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y); - ctx.scale(1 / textHScale, 1); + ctx.scale(textHScale, 1); for (var i = 0; i < glyphsLength; ++i) { var glyph = glyphs[i]; diff --git a/src/fonts.js b/src/fonts.js index 2e95a7c94..672739ea4 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1705,10 +1705,18 @@ var Font = (function Font() { var cidToGidMap = properties.cidToGidMap || []; var gidToCidMap = [0]; - for (var j = cidToGidMap.length - 1; j >= 0; j--) { - var gid = cidToGidMap[j]; - if (gid) - gidToCidMap[gid] = j; + if (cidToGidMap.length > 0) { + for (var j = cidToGidMap.length - 1; j >= 0; j--) { + var gid = cidToGidMap[j]; + if (gid) + gidToCidMap[gid] = j; + } + // filling the gaps using CID above the CIDs currently used in font + var nextCid = cidToGidMap.length; + for (var i = 1; i < numGlyphs; i++) { + if (!gidToCidMap[i]) + gidToCidMap[i] = nextCid++; + } } var glyphs = [], ids = []; From 05c1f68d6847c0ea8bf48828e4c777f71530b21b Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Fri, 2 Dec 2011 06:55:04 -0600 Subject: [PATCH 30/30] Add PDF from the #840 to the reference tests --- test/pdfs/.gitignore | 1 + test/pdfs/issue840.pdf | Bin 0 -> 152333 bytes test/test_manifest.json | 6 ++++++ 3 files changed, 7 insertions(+) create mode 100644 test/pdfs/issue840.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index a757acf34..325987de6 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -16,3 +16,4 @@ !alphatrans.pdf !devicen.pdf !cmykjpeg.pdf +!issue840.pdf diff --git a/test/pdfs/issue840.pdf b/test/pdfs/issue840.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6501a8c957266b689eaa49ad5af448c3ecc2d54a GIT binary patch literal 152333 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

g`W?EM05z@_&4wlBHZCb4JI`B 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index dd861c9f2..bfa131d9a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -290,5 +290,11 @@ "link": true, "rounds": 1, "type": "eq" + }, + { "id": "issue840", + "file": "pdfs/issue840.pdf", + "md5": "20d88011dd7e3c4fb5274979094dab93", + "rounds": 1, + "type": "eq" } ]