You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2018/02/21 21:37:29 UTC

[tika] 01/02: TIKA-2563 -- Extract files embedded in HTML and javascript inside HTML that are stored in the Data URI scheme.

This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git

commit aded888787bf89429a0a73bcda024beb85952128
Author: tballison <ta...@mitre.org>
AuthorDate: Wed Feb 21 16:30:06 2018 -0500

    TIKA-2563 -- Extract files embedded in HTML and javascript inside HTML that are stored in the Data URI scheme.
---
 CHANGES.txt                                        |   3 +
 .../org/apache/tika/parser/html/HtmlHandler.java   |  65 ++++
 .../apache/tika/parser/utils/DataURIScheme.java    |  77 +++++
 .../parser/utils/DataURISchemeParseException.java  |  28 ++
 .../tika/parser/utils/DataURISchemeUtil.java       | 103 ++++++
 .../apache/tika/parser/html/HtmlParserTest.java    |  34 ++
 .../tika/parser/utils/DataURISchemeParserTest.java |  79 +++++
 .../test-documents/testHTML_embedded_img.html      | 352 +++++++++++++++++++++
 .../testHTML_embedded_img_in_js.html               | 351 ++++++++++++++++++++
 9 files changed, 1092 insertions(+)

diff --git a/CHANGES.txt b/CHANGES.txt
index 250d2e8..0185d44 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,8 @@
 Release 1.18 - ???
 
+   * Extract files embedded in HTML and javascript inside HTML
+     that are stored in the Data URI scheme (TIKA-2563).
+
    * Extract text from grouped text boxes in PPT (TIKA-2569).
 
    * Extract language metadata item from PDF files via Matt Sheppard (TIKA-2559)
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlHandler.java b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlHandler.java
index 1febbf4..e453db1 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlHandler.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlHandler.java
@@ -24,6 +24,7 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 import java.util.regex.Matcher;
@@ -36,6 +37,9 @@ import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.utils.DataURIScheme;
+import org.apache.tika.parser.utils.DataURISchemeParseException;
+import org.apache.tika.parser.utils.DataURISchemeUtil;
 import org.apache.tika.sax.TextContentHandler;
 import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.Attributes;
@@ -57,6 +61,7 @@ class HtmlHandler extends TextContentHandler {
     private final ParseContext context;
     private final boolean extractScripts;
     private final StringBuilder title = new StringBuilder();
+    private final DataURISchemeUtil dataURISchemeUtil = new DataURISchemeUtil();
     private int bodyLevel = 0;
     private int discardLevel = 0;
     private int titleLevel = 0;
@@ -169,6 +174,10 @@ class HtmlHandler extends TextContentHandler {
         }
 
         title.setLength(0);
+        String value = atts.getValue("src");
+        if (value != null && value.startsWith("data:")) {
+            handleDataURIScheme(value);
+        }
     }
 
     /**
@@ -231,6 +240,15 @@ class HtmlHandler extends TextContentHandler {
                 // And resolve relative links. Eventually this should be pushed
                 // into the HtmlMapper code.
                 if (URI_ATTRIBUTES.contains(normAttrName)) {
+                    //if this is a src="data: " element,
+                    //we've handled that as an embedded file, don't include the full thing
+                    //here
+                    if (normAttrName.equals("src")) {
+                        String v = newAttributes.getValue(att);
+                        if (v.startsWith("data:")) {
+                            newAttributes.setValue(att, "data:");
+                        }
+                    }
                     newAttributes.setValue(att, resolve(newAttributes.getValue(att)));
                 } else if (isObject && "codebase".equals(normAttrName)) {
                     newAttributes.setValue(att, codebase);
@@ -296,6 +314,35 @@ class HtmlHandler extends TextContentHandler {
         }
     }
 
+    private void handleDataURIScheme(String string) throws SAXException {
+        DataURIScheme dataURIScheme = null;
+        try {
+            dataURIScheme = dataURISchemeUtil.parse(string);
+        } catch (DataURISchemeParseException e) {
+            //swallow
+            return;
+        }
+
+        //do anything with attrs?
+        Metadata m = new Metadata();
+        m.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE,
+                TikaCoreProperties.EmbeddedResourceType.INLINE.toString());
+        if (dataURIScheme.getMediaType() != null) {
+            m.set(Metadata.CONTENT_TYPE, dataURIScheme.getMediaType().toString());
+        }
+        EmbeddedDocumentExtractor embeddedDocumentExtractor =
+                EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context);
+        if (embeddedDocumentExtractor.shouldParseEmbedded(m)) {
+            try (InputStream stream = dataURIScheme.getInputStream()) {
+                embeddedDocumentExtractor.parseEmbedded(
+                        stream, xhtml, m, false
+                );
+            } catch (IOException e) {
+                EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata);
+            }
+        }
+    }
+
     private void writeScript() throws SAXException {
         //don't write an attached macro if there is no content
         //we may want to revisit this behavior
@@ -313,6 +360,24 @@ class HtmlHandler extends TextContentHandler {
 
         EmbeddedDocumentExtractor embeddedDocumentExtractor =
                 EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context);
+        //try to scrape dataURISchemes from javascript
+        List<DataURIScheme> dataURISchemes = dataURISchemeUtil.extract(script.toString());
+        for (DataURIScheme dataURIScheme : dataURISchemes) {
+            Metadata dataUriMetadata = new Metadata();
+            dataUriMetadata.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE,
+                    TikaCoreProperties.EmbeddedResourceType.INLINE.toString());
+            dataUriMetadata.set(Metadata.CONTENT_TYPE,
+                    dataURIScheme.getMediaType().toString());
+            if (embeddedDocumentExtractor.shouldParseEmbedded(dataUriMetadata)) {
+                try (InputStream dataURISchemeInputStream = dataURIScheme.getInputStream()) {
+                    embeddedDocumentExtractor.parseEmbedded(dataURISchemeInputStream,
+                            xhtml, dataUriMetadata, false);
+                } catch (IOException e) {
+                    //swallow
+                }
+            }
+        }
+
         try (InputStream stream = new ByteArrayInputStream(
                 script.toString().getBytes(StandardCharsets.UTF_8))) {
             embeddedDocumentExtractor.parseEmbedded(
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURIScheme.java b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURIScheme.java
new file mode 100644
index 0000000..313a0af
--- /dev/null
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURIScheme.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tika.parser.utils;
+
+import org.apache.tika.mime.MediaType;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Objects;
+
+public class DataURIScheme {
+
+
+    private final String rawMediaTypeString;
+    private final boolean isBase64;
+    private final byte[] data;
+
+    DataURIScheme(String mediaTypeString, boolean isBase64, byte[] data) {
+        this.rawMediaTypeString = mediaTypeString;
+        this.isBase64 = isBase64;
+        this.data = data;
+    }
+
+    public InputStream getInputStream() {
+        return new ByteArrayInputStream(data);
+    }
+
+    /**
+     *
+     * @return parsed media type or <code>null</code> if parse fails or if media type string was
+     * not specified
+     */
+    public MediaType getMediaType() {
+        if (rawMediaTypeString != null) {
+            return MediaType.parse(rawMediaTypeString);
+        }
+        return null;
+    }
+
+    public boolean isBase64() {
+        return isBase64;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof DataURIScheme)) return false;
+        DataURIScheme that = (DataURIScheme) o;
+        return isBase64() == that.isBase64() &&
+                Objects.equals(rawMediaTypeString, that.rawMediaTypeString) &&
+                Arrays.equals(data, that.data);
+    }
+
+    @Override
+    public int hashCode() {
+
+        int result = Objects.hash(rawMediaTypeString, isBase64());
+        result = 31 * result + Arrays.hashCode(data);
+        return result;
+    }
+}
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeParseException.java b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeParseException.java
new file mode 100644
index 0000000..cfddc7e
--- /dev/null
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeParseException.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tika.parser.utils;
+
+import org.apache.tika.exception.TikaException;
+
+public class DataURISchemeParseException extends TikaException {
+
+    public DataURISchemeParseException(String msg) {
+            super(msg);
+        }
+
+}
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeUtil.java b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeUtil.java
new file mode 100644
index 0000000..0da2956
--- /dev/null
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/utils/DataURISchemeUtil.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tika.parser.utils;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.tika.mime.MediaType;
+
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Not thread safe.  Create a separate util for each thread.
+ */
+public class DataURISchemeUtil {
+
+    public static String UNSPECIFIED_MEDIA_TYPE = "text/plain;charset=US-ASCII";
+
+    private static Pattern PARSE_PATTERN = Pattern.compile("(?s)data:([^,]*?)(base64)?,(.*)$");
+    private static Pattern EXTRACT_PATTERN =
+            Pattern.compile("(?s)data:([^,]*?)(base64)?,([^\"\']*)[\"\']");
+    private final Matcher parseMatcher = PARSE_PATTERN.matcher("");
+    private final Matcher extractMatcher = EXTRACT_PATTERN.matcher("");
+    Base64 base64 = new Base64();
+
+    public DataURIScheme parse(String string) throws DataURISchemeParseException {
+        parseMatcher.reset(string);
+        if (parseMatcher.find()) {
+            return build(parseMatcher.group(1), parseMatcher.group(2), parseMatcher.group(3));
+        }
+        throw new DataURISchemeParseException("Couldn't find expected pattern");
+    }
+
+    private DataURIScheme build(String mediaTypeString, String isBase64, String dataString) {
+        byte[] data = null;
+        //strip out back slashes as you might have in css
+        dataString = (dataString != null) ?
+                dataString.replaceAll("\\\\", " ") : dataString;
+
+        if (dataString == null || dataString.length() == 0) {
+            data = new byte[0];
+        } else if (isBase64 != null) {
+            data = base64.decode(dataString);
+        } else {
+            //TODO: handle encodings
+            MediaType mediaType = MediaType.parse(mediaTypeString);
+            Charset charset = StandardCharsets.UTF_8;
+            if (mediaType.hasParameters()) {
+                String charsetName = mediaType.getParameters().get("charset");
+                if (charsetName != null && Charset.isSupported(charsetName)) {
+                    try {
+                        charset = Charset.forName(charsetName);
+                    } catch (IllegalCharsetNameException e) {
+                        //swallow and default to UTF-8
+                    }
+                }
+            }
+            data = dataString.getBytes(charset);
+        }
+        return new DataURIScheme(mediaTypeString, (isBase64 != null), data);
+    }
+
+    /**
+     * Extracts DataURISchemes from free text, as in javascript.
+     *
+     * @param string
+     * @return list of extracted DataURISchemes
+     */
+    public List<DataURIScheme> extract(String string) {
+        extractMatcher.reset(string);
+        List<DataURIScheme> list = null;
+        while (extractMatcher.find()) {
+            DataURIScheme dataURIScheme = build(extractMatcher.group(1),
+                    extractMatcher.group(2), extractMatcher.group(3));
+            if (list == null) {
+                list = new ArrayList<>();
+            }
+            list.add(dataURIScheme);
+        }
+        return (list == null) ? Collections.EMPTY_LIST : list;
+    }
+
+}
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/html/HtmlParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/html/HtmlParserTest.java
index b8b4237..aece610 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/html/HtmlParserTest.java
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/html/HtmlParserTest.java
@@ -29,6 +29,7 @@ import javax.xml.transform.sax.SAXTransformerFactory;
 import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -39,6 +40,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +54,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.regex.Pattern;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.tika.Tika;
 import org.apache.tika.TikaTest;
 import org.apache.tika.config.ServiceLoader;
@@ -59,6 +62,7 @@ import org.apache.tika.config.TikaConfig;
 import org.apache.tika.detect.AutoDetectReader;
 import org.apache.tika.detect.EncodingDetector;
 import org.apache.tika.exception.TikaException;
+import org.apache.tika.io.IOUtils;
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Geographic;
 import org.apache.tika.metadata.Metadata;
@@ -1265,6 +1269,36 @@ public class HtmlParserTest extends TikaTest {
     }
 
     @Test
+    public void testDataURI() throws Exception {
+        List<Metadata> metadataList = getRecursiveMetadata("testHTML_embedded_img.html");
+        assertEquals(2, metadataList.size());
+        String content = metadataList.get(0).get(RecursiveParserWrapper.TIKA_CONTENT);
+        assertContains("some content", content);
+        //make sure that you've truncated the data: value
+        assertContains("src=\"data:\"", content);
+        Metadata imgMetadata = metadataList.get(1);
+        assertEquals("image/jpeg", imgMetadata.get(Metadata.CONTENT_TYPE));
+        assertContains("moscow-birds",
+                Arrays.asList(imgMetadata.getValues(TikaCoreProperties.SUBJECT)));
+    }
+
+    @Test
+    public void testDataURIInJS() throws Exception {
+        InputStream is = getClass().getResourceAsStream("/org/apache/tika/parser/html/tika-config.xml");
+        assertNotNull(is);
+        TikaConfig tikaConfig = new TikaConfig(is);
+        Parser p = new AutoDetectParser(tikaConfig);
+        List<Metadata> metadataList = getRecursiveMetadata("testHTML_embedded_img_in_js.html", p);
+        assertEquals(3, metadataList.size());
+        String content = metadataList.get(0).get(RecursiveParserWrapper.TIKA_CONTENT);
+        assertContains("some content", content);
+        Metadata imgMetadata = metadataList.get(1);
+        assertEquals("image/jpeg", imgMetadata.get(Metadata.CONTENT_TYPE));
+        assertContains("moscow-birds",
+                Arrays.asList(imgMetadata.getValues(TikaCoreProperties.SUBJECT)));
+    }
+
+    @Test
     public void testMultiThreadingEncodingDetection() throws Exception {
         List<EncodingDetector> detectors = new ArrayList<>();
         ServiceLoader loader =
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/utils/DataURISchemeParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/utils/DataURISchemeParserTest.java
new file mode 100644
index 0000000..e21b75e
--- /dev/null
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/utils/DataURISchemeParserTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tika.parser.utils;
+
+import org.apache.tika.TikaTest;
+import org.apache.tika.io.IOUtils;
+import org.apache.tika.mime.MediaType;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class DataURISchemeParserTest extends TikaTest {
+    DataURISchemeUtil dataURISchemeUtil = new DataURISchemeUtil();
+
+    @Test
+    public void testEmpty() throws Exception {
+        DataURIScheme dataURIScheme = dataURISchemeUtil.parse("data:,");
+        assertFalse(dataURIScheme.isBase64());
+        assertNull(dataURIScheme.getMediaType());
+        assertEquals(-1, dataURIScheme.getInputStream().read());
+    }
+
+    @Test
+    public void testNewlines() throws Exception {
+        String data = "data:image/png;base64,R0lG\nODdh";
+        DataURIScheme dataURIScheme = dataURISchemeUtil.parse(data);
+        assertTrue(dataURIScheme.isBase64());
+        assertEquals(MediaType.image("png"), dataURIScheme.getMediaType());
+
+        String expected = "data:image/png;base64,R0lGODdh";
+        assertEquals(dataURISchemeUtil.parse(expected), dataURISchemeUtil.parse(data));
+
+    }
+
+    @Test
+    public void testBackslashNewlines() throws Exception {
+        //like you'd have in a css fragment
+        String data = "data:image/png;base64,R0lG\\\nODdh";
+        DataURIScheme dataURIScheme = dataURISchemeUtil.parse(data);
+        assertTrue(dataURIScheme.isBase64());
+        assertEquals(MediaType.image("png"), dataURIScheme.getMediaType());
+
+        String expected = "data:image/png;base64,R0lGODdh";
+        assertEquals(dataURISchemeUtil.parse(expected), dataURISchemeUtil.parse(data));
+    }
+
+    @Test
+    public void testUTF8() throws Exception {
+        String utf8 = "\u0628\u0631\u0646\u0633\u062A\u0648\u0646";
+        String data = "data:text/plain;charset=UTF-8;page=21,the%20data:"+utf8;
+        DataURIScheme dataURIScheme = dataURISchemeUtil.parse(data);
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        IOUtils.copy(dataURIScheme.getInputStream(), bos);
+        assertContains(utf8, new String(bos.toByteArray(), StandardCharsets.UTF_8));
+    }
+}
diff --git a/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img.html b/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img.html
new file mode 100644
index 0000000..dd3fc62
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img.html
@@ -0,0 +1,352 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+some content
+<img alt="my_image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD/7QCIUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAA
+AGscAVoAAxslRxwBAAACAAQcAgAAAgACHAIZAAxjYW5vbi01NS0yNTAcAhkADG1v
+c2Nvdy1iaXJkcxwCGQAGc2VyYm9yHAJ0ACMoYykg0JzQsNC60YHQuNC8INCS0LDQ
+u9GP0L3RgdC60LjQuQD/4QLwRXhpZgAASUkqAAgAAAAKAA8BAgAGAAAAhgAAABAB
+AgAOAAAAjAAAABoBBQABAAAAmgAAABsBBQABAAAAogAAACgBAwABAAAAAgAAADEB
+AgAeAAAAqgAAADIBAgAUAAAAyAAAABMCAwABAAAAAQAAAJiCAgAVAAAA3AAAAGmH
+BAABAAAA8gAAAAAAAABDYW5vbgBDYW5vbiBFT1MgNDBEAPAAAAABAAAA8AAAAAEA
+AABBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaAAyMDA5OjEwOjAyIDIzOjAy
+OjQ5AChjKSA/Pz8/Pz8gPz8/Pz8/Pz8/AAAgAJqCBQABAAAAeAIAAJ2CBQABAAAA
+gAIAACKIAwABAAAABAAAACeIAwABAAAAkAEAAACQBwAEAAAAMDIyMQOQAgAUAAAA
+iAIAAASQAgAUAAAAnAIAAAGRBwAEAAAAAQIDAAGSCgABAAAAsAIAAAKSBQABAAAA
+uAIAAASSCgABAAAAwAIAAAWSBQABAAAAyAIAAAeSAwABAAAABQAAAAmSAwABAAAA
+EAAAAAqSBQABAAAA0AIAABGSBAABAAAAAAAAAJGSAgADAAAANDkAAJKSAgADAAAA
+NDkAAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgAwABAAAAMA8AAAOgAwABAAAA
+IAoAAA6iBQABAAAA2AIAAA+iBQABAAAA4AIAABCiAwABAAAAAgAAAAGkAwABAAAA
+AAAAAAKkAwABAAAAAAAAAAOkAwABAAAAAQAAAAakAwABAAAAAAAAAAikAwABAAAA
+AAAAAAmkAwABAAAAAAAAAAqkAwABAAAAAAAAAAAAAAABAAAAQAYAABwAAAAFAAAA
+MjAwOTowODoxMSAwOTowOTo0NQAyMDA5OjA4OjExIDA5OjA5OjQ1AD1TAADSBwAA
+OZ8AAAggAAAAAAAAAQAAAJVHAABBDgAAwgAAAAEAAACg8QQASQAAAHf9CgCiAAAA
+/+0AiFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAABrHAFaAAMbJUccAQAAAgAEHAIA
+AAIAAhwCGQAMY2Fub24tNTUtMjUwHAIZAAxtb3Njb3ctYmlyZHMcAhkABnNlcmJv
+chwCdAAjKGMpINCc0LDQutGB0LjQvCDQktCw0LvRj9C90YHQutC40LkA/+EkO2h0
+dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8gADw/eHBhY2tldCBiZWdpbj0n77u/
+JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1s
+bnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eG1wdGs9J0ltYWdlOjpFeGlmVG9vbCA3
+LjIxJz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
+LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjph
+Ym91dD0nJwogIHhtbG5zOmF1eD0naHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEu
+MC9hdXgvJz4KICA8YXV4OkZpcm13YXJlPjEuMS4xPC9hdXg6RmlybXdhcmU+CiAg
+PGF1eDpGbGFzaENvbXBlbnNhdGlvbj4wLzE8L2F1eDpGbGFzaENvbXBlbnNhdGlv
+bj4KICA8YXV4OkxlbnM+RUYtUzU1LTI1MG1tIGYvNC01LjYgSVM8L2F1eDpMZW5z
+PgogIDxhdXg6TGVuc0luZm8+NTUvMSAyNTAvMSAwLzAgMC8wPC9hdXg6TGVuc0lu
+Zm8+CiAgPGF1eDpTZXJpYWxOdW1iZXI+NzMwNTUyMjU4PC9hdXg6U2VyaWFsTnVt
+YmVyPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6
+YWJvdXQ9JycKICB4bWxuczpjcnM9J2h0dHA6Ly9ucy5hZG9iZS5jb20vY2FtZXJh
+LXJhdy1zZXR0aW5ncy8xLjAvJz4KICA8Y3JzOkFscmVhZHlBcHBsaWVkPlRydWU8
+L2NyczpBbHJlYWR5QXBwbGllZD4KICA8Y3JzOkJsdWVIdWU+MDwvY3JzOkJsdWVI
+dWU+CiAgPGNyczpCbHVlU2F0dXJhdGlvbj4wPC9jcnM6Qmx1ZVNhdHVyYXRpb24+
+CiAgPGNyczpCcmlnaHRuZXNzPjA8L2NyczpCcmlnaHRuZXNzPgogIDxjcnM6Q2Ft
+ZXJhUHJvZmlsZT5FbWJlZGRlZDwvY3JzOkNhbWVyYVByb2ZpbGU+CiAgPGNyczpD
+YW1lcmFQcm9maWxlRGlnZXN0PjU0NjUwQTM0MUI1QjVDQ0FFODQ0MkQwQjQzQTky
+QkNFPC9jcnM6Q2FtZXJhUHJvZmlsZURpZ2VzdD4KICA8Y3JzOkNocm9tYXRpY0Fi
+ZXJyYXRpb25CPjA8L2NyczpDaHJvbWF0aWNBYmVycmF0aW9uQj4KICA8Y3JzOkNo
+cm9tYXRpY0FiZXJyYXRpb25SPjA8L2NyczpDaHJvbWF0aWNBYmVycmF0aW9uUj4K
+ICA8Y3JzOkNsYXJpdHk+MDwvY3JzOkNsYXJpdHk+CiAgPGNyczpDb2xvck5vaXNl
+UmVkdWN0aW9uPjA8L2NyczpDb2xvck5vaXNlUmVkdWN0aW9uPgogIDxjcnM6Q29u
+dmVydFRvR3JheXNjYWxlPkZhbHNlPC9jcnM6Q29udmVydFRvR3JheXNjYWxlPgog
+IDxjcnM6RGVmcmluZ2U+MDwvY3JzOkRlZnJpbmdlPgogIDxjcnM6RXhwb3N1cmU+
+MC4wMDwvY3JzOkV4cG9zdXJlPgogIDxjcnM6RmlsbExpZ2h0PjA8L2NyczpGaWxs
+TGlnaHQ+CiAgPGNyczpHcmVlbkh1ZT4wPC9jcnM6R3JlZW5IdWU+CiAgPGNyczpH
+cmVlblNhdHVyYXRpb24+MDwvY3JzOkdyZWVuU2F0dXJhdGlvbj4KICA8Y3JzOkhh
+c0Nyb3A+RmFsc2U8L2NyczpIYXNDcm9wPgogIDxjcnM6SGFzU2V0dGluZ3M+VHJ1
+ZTwvY3JzOkhhc1NldHRpbmdzPgogIDxjcnM6SGlnaGxpZ2h0UmVjb3Zlcnk+MDwv
+Y3JzOkhpZ2hsaWdodFJlY292ZXJ5PgogIDxjcnM6SHVlQWRqdXN0bWVudEFxdWE+
+MDwvY3JzOkh1ZUFkanVzdG1lbnRBcXVhPgogIDxjcnM6SHVlQWRqdXN0bWVudEJs
+dWU+MDwvY3JzOkh1ZUFkanVzdG1lbnRCbHVlPgogIDxjcnM6SHVlQWRqdXN0bWVu
+dEdyZWVuPjA8L2NyczpIdWVBZGp1c3RtZW50R3JlZW4+CiAgPGNyczpIdWVBZGp1
+c3RtZW50TWFnZW50YT4wPC9jcnM6SHVlQWRqdXN0bWVudE1hZ2VudGE+CiAgPGNy
+czpIdWVBZGp1c3RtZW50T3JhbmdlPjA8L2NyczpIdWVBZGp1c3RtZW50T3Jhbmdl
+PgogIDxjcnM6SHVlQWRqdXN0bWVudFB1cnBsZT4wPC9jcnM6SHVlQWRqdXN0bWVu
+dFB1cnBsZT4KICA8Y3JzOkh1ZUFkanVzdG1lbnRSZWQ+MDwvY3JzOkh1ZUFkanVz
+dG1lbnRSZWQ+CiAgPGNyczpIdWVBZGp1c3RtZW50WWVsbG93PjA8L2NyczpIdWVB
+ZGp1c3RtZW50WWVsbG93PgogIDxjcnM6SW5jcmVtZW50YWxUZW1wZXJhdHVyZT4w
+PC9jcnM6SW5jcmVtZW50YWxUZW1wZXJhdHVyZT4KICA8Y3JzOkluY3JlbWVudGFs
+VGludD4wPC9jcnM6SW5jcmVtZW50YWxUaW50PgogIDxjcnM6THVtaW5hbmNlQWRq
+dXN0bWVudEFxdWE+MDwvY3JzOkx1bWluYW5jZUFkanVzdG1lbnRBcXVhPgogIDxj
+cnM6THVtaW5hbmNlQWRqdXN0bWVudEJsdWU+MDwvY3JzOkx1bWluYW5jZUFkanVz
+dG1lbnRCbHVlPgogIDxjcnM6THVtaW5hbmNlQWRqdXN0bWVudEdyZWVuPjA8L2Ny
+czpMdW1pbmFuY2VBZGp1c3RtZW50R3JlZW4+CiAgPGNyczpMdW1pbmFuY2VBZGp1
+c3RtZW50TWFnZW50YT4wPC9jcnM6THVtaW5hbmNlQWRqdXN0bWVudE1hZ2VudGE+
+CiAgPGNyczpMdW1pbmFuY2VBZGp1c3RtZW50T3JhbmdlPjA8L2NyczpMdW1pbmFu
+Y2VBZGp1c3RtZW50T3JhbmdlPgogIDxjcnM6THVtaW5hbmNlQWRqdXN0bWVudFB1
+cnBsZT4wPC9jcnM6THVtaW5hbmNlQWRqdXN0bWVudFB1cnBsZT4KICA8Y3JzOkx1
+bWluYW5jZUFkanVzdG1lbnRSZWQ+MDwvY3JzOkx1bWluYW5jZUFkanVzdG1lbnRS
+ZWQ+CiAgPGNyczpMdW1pbmFuY2VBZGp1c3RtZW50WWVsbG93PjA8L2NyczpMdW1p
+bmFuY2VBZGp1c3RtZW50WWVsbG93PgogIDxjcnM6THVtaW5hbmNlU21vb3RoaW5n
+PjA8L2NyczpMdW1pbmFuY2VTbW9vdGhpbmc+CiAgPGNyczpQYXJhbWV0cmljRGFy
+a3M+MDwvY3JzOlBhcmFtZXRyaWNEYXJrcz4KICA8Y3JzOlBhcmFtZXRyaWNIaWdo
+bGlnaHRTcGxpdD43NTwvY3JzOlBhcmFtZXRyaWNIaWdobGlnaHRTcGxpdD4KICA8
+Y3JzOlBhcmFtZXRyaWNIaWdobGlnaHRzPjA8L2NyczpQYXJhbWV0cmljSGlnaGxp
+Z2h0cz4KICA8Y3JzOlBhcmFtZXRyaWNMaWdodHM+MDwvY3JzOlBhcmFtZXRyaWNM
+aWdodHM+CiAgPGNyczpQYXJhbWV0cmljTWlkdG9uZVNwbGl0PjUwPC9jcnM6UGFy
+YW1ldHJpY01pZHRvbmVTcGxpdD4KICA8Y3JzOlBhcmFtZXRyaWNTaGFkb3dTcGxp
+dD4yNTwvY3JzOlBhcmFtZXRyaWNTaGFkb3dTcGxpdD4KICA8Y3JzOlBhcmFtZXRy
+aWNTaGFkb3dzPjA8L2NyczpQYXJhbWV0cmljU2hhZG93cz4KICA8Y3JzOlJlZEh1
+ZT4wPC9jcnM6UmVkSHVlPgogIDxjcnM6UmVkU2F0dXJhdGlvbj4wPC9jcnM6UmVk
+U2F0dXJhdGlvbj4KICA8Y3JzOlNhdHVyYXRpb25BZGp1c3RtZW50QXF1YT4wPC9j
+cnM6U2F0dXJhdGlvbkFkanVzdG1lbnRBcXVhPgogIDxjcnM6U2F0dXJhdGlvbkFk
+anVzdG1lbnRCbHVlPjA8L2NyczpTYXR1cmF0aW9uQWRqdXN0bWVudEJsdWU+CiAg
+PGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudEdyZWVuPjA8L2NyczpTYXR1cmF0aW9u
+QWRqdXN0bWVudEdyZWVuPgogIDxjcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRNYWdl
+bnRhPjA8L2NyczpTYXR1cmF0aW9uQWRqdXN0bWVudE1hZ2VudGE+CiAgPGNyczpT
+YXR1cmF0aW9uQWRqdXN0bWVudE9yYW5nZT4wPC9jcnM6U2F0dXJhdGlvbkFkanVz
+dG1lbnRPcmFuZ2U+CiAgPGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudFB1cnBsZT4w
+PC9jcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRQdXJwbGU+CiAgPGNyczpTYXR1cmF0
+aW9uQWRqdXN0bWVudFJlZD4wPC9jcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRSZWQ+
+CiAgPGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudFllbGxvdz4wPC9jcnM6U2F0dXJh
+dGlvbkFkanVzdG1lbnRZZWxsb3c+CiAgPGNyczpTaGFkb3dUaW50PjA8L2NyczpT
+aGFkb3dUaW50PgogIDxjcnM6U2hhZG93cz4wPC9jcnM6U2hhZG93cz4KICA8Y3Jz
+OlNoYXJwZW5EZXRhaWw+MjU8L2NyczpTaGFycGVuRGV0YWlsPgogIDxjcnM6U2hh
+cnBlbkVkZ2VNYXNraW5nPjA8L2NyczpTaGFycGVuRWRnZU1hc2tpbmc+CiAgPGNy
+czpTaGFycGVuUmFkaXVzPisxLjA8L2NyczpTaGFycGVuUmFkaXVzPgogIDxjcnM6
+U3BsaXRUb25pbmdCYWxhbmNlPjA8L2NyczpTcGxpdFRvbmluZ0JhbGFuY2U+CiAg
+PGNyczpTcGxpdFRvbmluZ0hpZ2hsaWdodEh1ZT4wPC9jcnM6U3BsaXRUb25pbmdI
+aWdobGlnaHRIdWU+CiAgPGNyczpTcGxpdFRvbmluZ0hpZ2hsaWdodFNhdHVyYXRp
+b24+MDwvY3JzOlNwbGl0VG9uaW5nSGlnaGxpZ2h0U2F0dXJhdGlvbj4KICA8Y3Jz
+OlNwbGl0VG9uaW5nU2hhZG93SHVlPjA8L2NyczpTcGxpdFRvbmluZ1NoYWRvd0h1
+ZT4KICA8Y3JzOlNwbGl0VG9uaW5nU2hhZG93U2F0dXJhdGlvbj4wPC9jcnM6U3Bs
+aXRUb25pbmdTaGFkb3dTYXR1cmF0aW9uPgogIDxjcnM6VG9uZUN1cnZlPgogICA8
+cmRmOlNlcT4KICAgIDxyZGY6bGk+MCwgMDwvcmRmOmxpPgogICAgPHJkZjpsaT4y
+NTUsIDI1NTwvcmRmOmxpPgogICA8L3JkZjpTZXE+CiAgPC9jcnM6VG9uZUN1cnZl
+PgogIDxjcnM6VG9uZUN1cnZlTmFtZT5MaW5lYXI8L2NyczpUb25lQ3VydmVOYW1l
+PgogIDxjcnM6VmVyc2lvbj41LjU8L2NyczpWZXJzaW9uPgogIDxjcnM6VmlicmFu
+Y2U+MDwvY3JzOlZpYnJhbmNlPgogIDxjcnM6VmlnbmV0dGVBbW91bnQ+MDwvY3Jz
+OlZpZ25ldHRlQW1vdW50PgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNj
+cmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpkYz0naHR0cDovL3B1cmwub3Jn
+L2RjL2VsZW1lbnRzLzEuMS8nPgogIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vdm5k
+LmFkb2JlLnBob3Rvc2hvcDwvZGM6Zm9ybWF0PgogIDxkYzpyaWdodHM+CiAgIDxy
+ZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz4oYykg0JzQ
+sNC60YHQuNC8INCS0LDQu9GP0L3RgdC60LjQuTwvcmRmOmxpPgogICA8L3JkZjpB
+bHQ+CiAgPC9kYzpyaWdodHM+CiAgPGRjOnN1YmplY3Q+CiAgIDxyZGY6QmFnPgog
+ICAgPHJkZjpsaT5jYW5vbi01NS0yNTA8L3JkZjpsaT4KICAgIDxyZGY6bGk+bW9z
+Y293LWJpcmRzPC9yZGY6bGk+CiAgICA8cmRmOmxpPnNlcmJvcjwvcmRmOmxpPgog
+ICA8L3JkZjpCYWc+CiAgPC9kYzpzdWJqZWN0PgogPC9yZGY6RGVzY3JpcHRpb24+
+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpleGlmPSdo
+dHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6RGF0ZVRpbWVE
+aWdpdGl6ZWQ+MjAwOS0wOC0xMVQwOTowOTo0NS40OSswNDowMDwvZXhpZjpEYXRl
+VGltZURpZ2l0aXplZD4KICA8ZXhpZjpGbGFzaCByZGY6cGFyc2VUeXBlPSdSZXNv
+dXJjZSc+CiAgIDxleGlmOkZpcmVkPkZhbHNlPC9leGlmOkZpcmVkPgogICA8ZXhp
+ZjpGdW5jdGlvbj5GYWxzZTwvZXhpZjpGdW5jdGlvbj4KICAgPGV4aWY6TW9kZT4y
+PC9leGlmOk1vZGU+CiAgIDxleGlmOlJlZEV5ZU1vZGU+RmFsc2U8L2V4aWY6UmVk
+RXllTW9kZT4KICAgPGV4aWY6UmV0dXJuPjA8L2V4aWY6UmV0dXJuPgogIDwvZXhp
+ZjpGbGFzaD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24g
+cmRmOmFib3V0PScnCiAgeG1sbnM6bHI9J2h0dHA6Ly9ucy5hZG9iZS5jb20vbGln
+aHRyb29tLzEuMC8nPgogIDxscjpoaWVyYXJjaGljYWxTdWJqZWN0PgogICA8cmRm
+OkJhZz4KICAgIDxyZGY6bGk+Y2Fub24tNTUtMjUwPC9yZGY6bGk+CiAgICA8cmRm
+OmxpPm1vc2Nvdy1iaXJkczwvcmRmOmxpPgogICAgPHJkZjpsaT5zZXJib3I8L3Jk
+ZjpsaT4KICAgPC9yZGY6QmFnPgogIDwvbHI6aGllcmFyY2hpY2FsU3ViamVjdD4K
+IDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0
+PScnCiAgeG1sbnM6cGhvdG9zaG9wPSdodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rv
+c2hvcC8xLjAvJz4KICA8cGhvdG9zaG9wOkhpc3Rvcnk+PC9waG90b3Nob3A6SGlz
+dG9yeT4KICA8cGhvdG9zaG9wOkxlZ2FjeUlQVENEaWdlc3Q+MTEwN0I2RDFDNDM3
+NkFCM0ZENThDNTY5RDczNUE1RDg8L3Bob3Rvc2hvcDpMZWdhY3lJUFRDRGlnZXN0
+PgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv
+dXQ9JycKICB4bWxuczp0aWZmPSdodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4w
+Lyc+CiAgPHRpZmY6Qml0c1BlclNhbXBsZT4KICAgPHJkZjpTZXE+CiAgICA8cmRm
+OmxpPjg8L3JkZjpsaT4KICAgIDxyZGY6bGk+ODwvcmRmOmxpPgogICAgPHJkZjps
+aT44PC9yZGY6bGk+CiAgIDwvcmRmOlNlcT4KICA8L3RpZmY6Qml0c1BlclNhbXBs
+ZT4KICA8dGlmZjpDb21wcmVzc2lvbj44PC90aWZmOkNvbXByZXNzaW9uPgogIDx0
+aWZmOkltYWdlTGVuZ3RoPjI1OTI8L3RpZmY6SW1hZ2VMZW5ndGg+CiAgPHRpZmY6
+SW1hZ2VXaWR0aD4zODg4PC90aWZmOkltYWdlV2lkdGg+CiAgPHRpZmY6UGhvdG9t
+ZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0
+YXRpb24+CiAgPHRpZmY6UGxhbmFyQ29uZmlndXJhdGlvbj4xPC90aWZmOlBsYW5h
+ckNvbmZpZ3VyYXRpb24+CiAgPHRpZmY6U2FtcGxlc1BlclBpeGVsPjM8L3RpZmY6
+U2FtcGxlc1BlclBpeGVsPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNj
+cmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9i
+ZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9z
+aG9wIExpZ2h0cm9vbTwveG1wOkNyZWF0b3JUb29sPgogIDx4bXA6TWV0YWRhdGFE
+YXRlPjIwMDktMTAtMDJUMjI6NTU6MjkrMDQ6MDA8L3htcDpNZXRhZGF0YURhdGU+
+CiAgPHhtcDpSYXRpbmc+NTwveG1wOlJhdGluZz4KIDwvcmRmOkRlc2NyaXB0aW9u
+PgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wTU09
+J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8nPgogIDx4bXBNTTpJbnN0
+YW5jZUlEPnV1aWQ6QzZEN0NEREEzNUIxREUxMUIyQzhDRUQ5MUZDOTg1QjI8L3ht
+cE1NOkluc3RhbmNlSUQ+CiA8L3JkZjpEZXNjcmlwdGlvbj4KPC9yZGY6UkRGPgo8
+L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVu
+ZD0ndyc/Pv/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYH
+CQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcK
+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+Cv/AABEIAEQAZAMBEQACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAFBggJAgMH
+BAEA/8QAUBAAAgEDAgQCBAgIBBcAAAAAAQIDBAURAAYHCBIhEzEJFEFRFSIjMmFx
+kbEWJkKBodHS01VytMIkMzRDREhSYmZ0dYKEkpOUoqSys8HD1P/EABwBAAEFAQEB
+AAAAAAAAAAAAAAYAAQIDBwUIBP/EAD8RAAECBAMCCQkIAgMBAAAAAAECEQADBCEF
+EjEGQSJRUmGRkrHR0gcTFBUWQlNxcjI0NUNigbLwI6EzgsHh/9oADAMBAAIRAxEA
+PwDsnPpz48fuWvjxTcOOGVpsFVbZ9v09c7XO3ySyrI8syMAUlQdOI1PcE5J74wAS
+4Ng1NiNMZkwqBCmszaA8R44FMdx2rwyrTLlBJBSDcF9SNxHFHLrf6Uvm8qx1T2HZ
+sQx5tbJv/o12Bsth/LV0jujhnbDEh7iOg+KCtL6TrmSODWz7KQ+1Vtc5P/f1L2Vw
+8+8vpHhiB2yxJNylHQrxQSpvSWcepO8rbbb+JZZh982n9lMP5S+lPhhvbPE+QjoV
+4o9y+kd444yYtvHv/Brj75dN7K4fyl9I8MOdssU5COhXijYPSN8bCF+TsHc/we/l
+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"/>
+some other content
+</body>
+</html>
\ No newline at end of file
diff --git a/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img_in_js.html b/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img_in_js.html
new file mode 100644
index 0000000..589c47a
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testHTML_embedded_img_in_js.html
@@ -0,0 +1,351 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <script>var logo="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD/7QCIUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAA
+AGscAVoAAxslRxwBAAACAAQcAgAAAgACHAIZAAxjYW5vbi01NS0yNTAcAhkADG1v
+c2Nvdy1iaXJkcxwCGQAGc2VyYm9yHAJ0ACMoYykg0JzQsNC60YHQuNC8INCS0LDQ
+u9GP0L3RgdC60LjQuQD/4QLwRXhpZgAASUkqAAgAAAAKAA8BAgAGAAAAhgAAABAB
+AgAOAAAAjAAAABoBBQABAAAAmgAAABsBBQABAAAAogAAACgBAwABAAAAAgAAADEB
+AgAeAAAAqgAAADIBAgAUAAAAyAAAABMCAwABAAAAAQAAAJiCAgAVAAAA3AAAAGmH
+BAABAAAA8gAAAAAAAABDYW5vbgBDYW5vbiBFT1MgNDBEAPAAAAABAAAA8AAAAAEA
+AABBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaAAyMDA5OjEwOjAyIDIzOjAy
+OjQ5AChjKSA/Pz8/Pz8gPz8/Pz8/Pz8/AAAgAJqCBQABAAAAeAIAAJ2CBQABAAAA
+gAIAACKIAwABAAAABAAAACeIAwABAAAAkAEAAACQBwAEAAAAMDIyMQOQAgAUAAAA
+iAIAAASQAgAUAAAAnAIAAAGRBwAEAAAAAQIDAAGSCgABAAAAsAIAAAKSBQABAAAA
+uAIAAASSCgABAAAAwAIAAAWSBQABAAAAyAIAAAeSAwABAAAABQAAAAmSAwABAAAA
+EAAAAAqSBQABAAAA0AIAABGSBAABAAAAAAAAAJGSAgADAAAANDkAAJKSAgADAAAA
+NDkAAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgAwABAAAAMA8AAAOgAwABAAAA
+IAoAAA6iBQABAAAA2AIAAA+iBQABAAAA4AIAABCiAwABAAAAAgAAAAGkAwABAAAA
+AAAAAAKkAwABAAAAAAAAAAOkAwABAAAAAQAAAAakAwABAAAAAAAAAAikAwABAAAA
+AAAAAAmkAwABAAAAAAAAAAqkAwABAAAAAAAAAAAAAAABAAAAQAYAABwAAAAFAAAA
+MjAwOTowODoxMSAwOTowOTo0NQAyMDA5OjA4OjExIDA5OjA5OjQ1AD1TAADSBwAA
+OZ8AAAggAAAAAAAAAQAAAJVHAABBDgAAwgAAAAEAAACg8QQASQAAAHf9CgCiAAAA
+/+0AiFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAABrHAFaAAMbJUccAQAAAgAEHAIA
+AAIAAhwCGQAMY2Fub24tNTUtMjUwHAIZAAxtb3Njb3ctYmlyZHMcAhkABnNlcmJv
+chwCdAAjKGMpINCc0LDQutGB0LjQvCDQktCw0LvRj9C90YHQutC40LkA/+EkO2h0
+dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8gADw/eHBhY2tldCBiZWdpbj0n77u/
+JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1s
+bnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eG1wdGs9J0ltYWdlOjpFeGlmVG9vbCA3
+LjIxJz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
+LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjph
+Ym91dD0nJwogIHhtbG5zOmF1eD0naHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEu
+MC9hdXgvJz4KICA8YXV4OkZpcm13YXJlPjEuMS4xPC9hdXg6RmlybXdhcmU+CiAg
+PGF1eDpGbGFzaENvbXBlbnNhdGlvbj4wLzE8L2F1eDpGbGFzaENvbXBlbnNhdGlv
+bj4KICA8YXV4OkxlbnM+RUYtUzU1LTI1MG1tIGYvNC01LjYgSVM8L2F1eDpMZW5z
+PgogIDxhdXg6TGVuc0luZm8+NTUvMSAyNTAvMSAwLzAgMC8wPC9hdXg6TGVuc0lu
+Zm8+CiAgPGF1eDpTZXJpYWxOdW1iZXI+NzMwNTUyMjU4PC9hdXg6U2VyaWFsTnVt
+YmVyPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6
+YWJvdXQ9JycKICB4bWxuczpjcnM9J2h0dHA6Ly9ucy5hZG9iZS5jb20vY2FtZXJh
+LXJhdy1zZXR0aW5ncy8xLjAvJz4KICA8Y3JzOkFscmVhZHlBcHBsaWVkPlRydWU8
+L2NyczpBbHJlYWR5QXBwbGllZD4KICA8Y3JzOkJsdWVIdWU+MDwvY3JzOkJsdWVI
+dWU+CiAgPGNyczpCbHVlU2F0dXJhdGlvbj4wPC9jcnM6Qmx1ZVNhdHVyYXRpb24+
+CiAgPGNyczpCcmlnaHRuZXNzPjA8L2NyczpCcmlnaHRuZXNzPgogIDxjcnM6Q2Ft
+ZXJhUHJvZmlsZT5FbWJlZGRlZDwvY3JzOkNhbWVyYVByb2ZpbGU+CiAgPGNyczpD
+YW1lcmFQcm9maWxlRGlnZXN0PjU0NjUwQTM0MUI1QjVDQ0FFODQ0MkQwQjQzQTky
+QkNFPC9jcnM6Q2FtZXJhUHJvZmlsZURpZ2VzdD4KICA8Y3JzOkNocm9tYXRpY0Fi
+ZXJyYXRpb25CPjA8L2NyczpDaHJvbWF0aWNBYmVycmF0aW9uQj4KICA8Y3JzOkNo
+cm9tYXRpY0FiZXJyYXRpb25SPjA8L2NyczpDaHJvbWF0aWNBYmVycmF0aW9uUj4K
+ICA8Y3JzOkNsYXJpdHk+MDwvY3JzOkNsYXJpdHk+CiAgPGNyczpDb2xvck5vaXNl
+UmVkdWN0aW9uPjA8L2NyczpDb2xvck5vaXNlUmVkdWN0aW9uPgogIDxjcnM6Q29u
+dmVydFRvR3JheXNjYWxlPkZhbHNlPC9jcnM6Q29udmVydFRvR3JheXNjYWxlPgog
+IDxjcnM6RGVmcmluZ2U+MDwvY3JzOkRlZnJpbmdlPgogIDxjcnM6RXhwb3N1cmU+
+MC4wMDwvY3JzOkV4cG9zdXJlPgogIDxjcnM6RmlsbExpZ2h0PjA8L2NyczpGaWxs
+TGlnaHQ+CiAgPGNyczpHcmVlbkh1ZT4wPC9jcnM6R3JlZW5IdWU+CiAgPGNyczpH
+cmVlblNhdHVyYXRpb24+MDwvY3JzOkdyZWVuU2F0dXJhdGlvbj4KICA8Y3JzOkhh
+c0Nyb3A+RmFsc2U8L2NyczpIYXNDcm9wPgogIDxjcnM6SGFzU2V0dGluZ3M+VHJ1
+ZTwvY3JzOkhhc1NldHRpbmdzPgogIDxjcnM6SGlnaGxpZ2h0UmVjb3Zlcnk+MDwv
+Y3JzOkhpZ2hsaWdodFJlY292ZXJ5PgogIDxjcnM6SHVlQWRqdXN0bWVudEFxdWE+
+MDwvY3JzOkh1ZUFkanVzdG1lbnRBcXVhPgogIDxjcnM6SHVlQWRqdXN0bWVudEJs
+dWU+MDwvY3JzOkh1ZUFkanVzdG1lbnRCbHVlPgogIDxjcnM6SHVlQWRqdXN0bWVu
+dEdyZWVuPjA8L2NyczpIdWVBZGp1c3RtZW50R3JlZW4+CiAgPGNyczpIdWVBZGp1
+c3RtZW50TWFnZW50YT4wPC9jcnM6SHVlQWRqdXN0bWVudE1hZ2VudGE+CiAgPGNy
+czpIdWVBZGp1c3RtZW50T3JhbmdlPjA8L2NyczpIdWVBZGp1c3RtZW50T3Jhbmdl
+PgogIDxjcnM6SHVlQWRqdXN0bWVudFB1cnBsZT4wPC9jcnM6SHVlQWRqdXN0bWVu
+dFB1cnBsZT4KICA8Y3JzOkh1ZUFkanVzdG1lbnRSZWQ+MDwvY3JzOkh1ZUFkanVz
+dG1lbnRSZWQ+CiAgPGNyczpIdWVBZGp1c3RtZW50WWVsbG93PjA8L2NyczpIdWVB
+ZGp1c3RtZW50WWVsbG93PgogIDxjcnM6SW5jcmVtZW50YWxUZW1wZXJhdHVyZT4w
+PC9jcnM6SW5jcmVtZW50YWxUZW1wZXJhdHVyZT4KICA8Y3JzOkluY3JlbWVudGFs
+VGludD4wPC9jcnM6SW5jcmVtZW50YWxUaW50PgogIDxjcnM6THVtaW5hbmNlQWRq
+dXN0bWVudEFxdWE+MDwvY3JzOkx1bWluYW5jZUFkanVzdG1lbnRBcXVhPgogIDxj
+cnM6THVtaW5hbmNlQWRqdXN0bWVudEJsdWU+MDwvY3JzOkx1bWluYW5jZUFkanVz
+dG1lbnRCbHVlPgogIDxjcnM6THVtaW5hbmNlQWRqdXN0bWVudEdyZWVuPjA8L2Ny
+czpMdW1pbmFuY2VBZGp1c3RtZW50R3JlZW4+CiAgPGNyczpMdW1pbmFuY2VBZGp1
+c3RtZW50TWFnZW50YT4wPC9jcnM6THVtaW5hbmNlQWRqdXN0bWVudE1hZ2VudGE+
+CiAgPGNyczpMdW1pbmFuY2VBZGp1c3RtZW50T3JhbmdlPjA8L2NyczpMdW1pbmFu
+Y2VBZGp1c3RtZW50T3JhbmdlPgogIDxjcnM6THVtaW5hbmNlQWRqdXN0bWVudFB1
+cnBsZT4wPC9jcnM6THVtaW5hbmNlQWRqdXN0bWVudFB1cnBsZT4KICA8Y3JzOkx1
+bWluYW5jZUFkanVzdG1lbnRSZWQ+MDwvY3JzOkx1bWluYW5jZUFkanVzdG1lbnRS
+ZWQ+CiAgPGNyczpMdW1pbmFuY2VBZGp1c3RtZW50WWVsbG93PjA8L2NyczpMdW1p
+bmFuY2VBZGp1c3RtZW50WWVsbG93PgogIDxjcnM6THVtaW5hbmNlU21vb3RoaW5n
+PjA8L2NyczpMdW1pbmFuY2VTbW9vdGhpbmc+CiAgPGNyczpQYXJhbWV0cmljRGFy
+a3M+MDwvY3JzOlBhcmFtZXRyaWNEYXJrcz4KICA8Y3JzOlBhcmFtZXRyaWNIaWdo
+bGlnaHRTcGxpdD43NTwvY3JzOlBhcmFtZXRyaWNIaWdobGlnaHRTcGxpdD4KICA8
+Y3JzOlBhcmFtZXRyaWNIaWdobGlnaHRzPjA8L2NyczpQYXJhbWV0cmljSGlnaGxp
+Z2h0cz4KICA8Y3JzOlBhcmFtZXRyaWNMaWdodHM+MDwvY3JzOlBhcmFtZXRyaWNM
+aWdodHM+CiAgPGNyczpQYXJhbWV0cmljTWlkdG9uZVNwbGl0PjUwPC9jcnM6UGFy
+YW1ldHJpY01pZHRvbmVTcGxpdD4KICA8Y3JzOlBhcmFtZXRyaWNTaGFkb3dTcGxp
+dD4yNTwvY3JzOlBhcmFtZXRyaWNTaGFkb3dTcGxpdD4KICA8Y3JzOlBhcmFtZXRy
+aWNTaGFkb3dzPjA8L2NyczpQYXJhbWV0cmljU2hhZG93cz4KICA8Y3JzOlJlZEh1
+ZT4wPC9jcnM6UmVkSHVlPgogIDxjcnM6UmVkU2F0dXJhdGlvbj4wPC9jcnM6UmVk
+U2F0dXJhdGlvbj4KICA8Y3JzOlNhdHVyYXRpb25BZGp1c3RtZW50QXF1YT4wPC9j
+cnM6U2F0dXJhdGlvbkFkanVzdG1lbnRBcXVhPgogIDxjcnM6U2F0dXJhdGlvbkFk
+anVzdG1lbnRCbHVlPjA8L2NyczpTYXR1cmF0aW9uQWRqdXN0bWVudEJsdWU+CiAg
+PGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudEdyZWVuPjA8L2NyczpTYXR1cmF0aW9u
+QWRqdXN0bWVudEdyZWVuPgogIDxjcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRNYWdl
+bnRhPjA8L2NyczpTYXR1cmF0aW9uQWRqdXN0bWVudE1hZ2VudGE+CiAgPGNyczpT
+YXR1cmF0aW9uQWRqdXN0bWVudE9yYW5nZT4wPC9jcnM6U2F0dXJhdGlvbkFkanVz
+dG1lbnRPcmFuZ2U+CiAgPGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudFB1cnBsZT4w
+PC9jcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRQdXJwbGU+CiAgPGNyczpTYXR1cmF0
+aW9uQWRqdXN0bWVudFJlZD4wPC9jcnM6U2F0dXJhdGlvbkFkanVzdG1lbnRSZWQ+
+CiAgPGNyczpTYXR1cmF0aW9uQWRqdXN0bWVudFllbGxvdz4wPC9jcnM6U2F0dXJh
+dGlvbkFkanVzdG1lbnRZZWxsb3c+CiAgPGNyczpTaGFkb3dUaW50PjA8L2NyczpT
+aGFkb3dUaW50PgogIDxjcnM6U2hhZG93cz4wPC9jcnM6U2hhZG93cz4KICA8Y3Jz
+OlNoYXJwZW5EZXRhaWw+MjU8L2NyczpTaGFycGVuRGV0YWlsPgogIDxjcnM6U2hh
+cnBlbkVkZ2VNYXNraW5nPjA8L2NyczpTaGFycGVuRWRnZU1hc2tpbmc+CiAgPGNy
+czpTaGFycGVuUmFkaXVzPisxLjA8L2NyczpTaGFycGVuUmFkaXVzPgogIDxjcnM6
+U3BsaXRUb25pbmdCYWxhbmNlPjA8L2NyczpTcGxpdFRvbmluZ0JhbGFuY2U+CiAg
+PGNyczpTcGxpdFRvbmluZ0hpZ2hsaWdodEh1ZT4wPC9jcnM6U3BsaXRUb25pbmdI
+aWdobGlnaHRIdWU+CiAgPGNyczpTcGxpdFRvbmluZ0hpZ2hsaWdodFNhdHVyYXRp
+b24+MDwvY3JzOlNwbGl0VG9uaW5nSGlnaGxpZ2h0U2F0dXJhdGlvbj4KICA8Y3Jz
+OlNwbGl0VG9uaW5nU2hhZG93SHVlPjA8L2NyczpTcGxpdFRvbmluZ1NoYWRvd0h1
+ZT4KICA8Y3JzOlNwbGl0VG9uaW5nU2hhZG93U2F0dXJhdGlvbj4wPC9jcnM6U3Bs
+aXRUb25pbmdTaGFkb3dTYXR1cmF0aW9uPgogIDxjcnM6VG9uZUN1cnZlPgogICA8
+cmRmOlNlcT4KICAgIDxyZGY6bGk+MCwgMDwvcmRmOmxpPgogICAgPHJkZjpsaT4y
+NTUsIDI1NTwvcmRmOmxpPgogICA8L3JkZjpTZXE+CiAgPC9jcnM6VG9uZUN1cnZl
+PgogIDxjcnM6VG9uZUN1cnZlTmFtZT5MaW5lYXI8L2NyczpUb25lQ3VydmVOYW1l
+PgogIDxjcnM6VmVyc2lvbj41LjU8L2NyczpWZXJzaW9uPgogIDxjcnM6VmlicmFu
+Y2U+MDwvY3JzOlZpYnJhbmNlPgogIDxjcnM6VmlnbmV0dGVBbW91bnQ+MDwvY3Jz
+OlZpZ25ldHRlQW1vdW50PgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNj
+cmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpkYz0naHR0cDovL3B1cmwub3Jn
+L2RjL2VsZW1lbnRzLzEuMS8nPgogIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vdm5k
+LmFkb2JlLnBob3Rvc2hvcDwvZGM6Zm9ybWF0PgogIDxkYzpyaWdodHM+CiAgIDxy
+ZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz4oYykg0JzQ
+sNC60YHQuNC8INCS0LDQu9GP0L3RgdC60LjQuTwvcmRmOmxpPgogICA8L3JkZjpB
+bHQ+CiAgPC9kYzpyaWdodHM+CiAgPGRjOnN1YmplY3Q+CiAgIDxyZGY6QmFnPgog
+ICAgPHJkZjpsaT5jYW5vbi01NS0yNTA8L3JkZjpsaT4KICAgIDxyZGY6bGk+bW9z
+Y293LWJpcmRzPC9yZGY6bGk+CiAgICA8cmRmOmxpPnNlcmJvcjwvcmRmOmxpPgog
+ICA8L3JkZjpCYWc+CiAgPC9kYzpzdWJqZWN0PgogPC9yZGY6RGVzY3JpcHRpb24+
+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpleGlmPSdo
+dHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6RGF0ZVRpbWVE
+aWdpdGl6ZWQ+MjAwOS0wOC0xMVQwOTowOTo0NS40OSswNDowMDwvZXhpZjpEYXRl
+VGltZURpZ2l0aXplZD4KICA8ZXhpZjpGbGFzaCByZGY6cGFyc2VUeXBlPSdSZXNv
+dXJjZSc+CiAgIDxleGlmOkZpcmVkPkZhbHNlPC9leGlmOkZpcmVkPgogICA8ZXhp
+ZjpGdW5jdGlvbj5GYWxzZTwvZXhpZjpGdW5jdGlvbj4KICAgPGV4aWY6TW9kZT4y
+PC9leGlmOk1vZGU+CiAgIDxleGlmOlJlZEV5ZU1vZGU+RmFsc2U8L2V4aWY6UmVk
+RXllTW9kZT4KICAgPGV4aWY6UmV0dXJuPjA8L2V4aWY6UmV0dXJuPgogIDwvZXhp
+ZjpGbGFzaD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24g
+cmRmOmFib3V0PScnCiAgeG1sbnM6bHI9J2h0dHA6Ly9ucy5hZG9iZS5jb20vbGln
+aHRyb29tLzEuMC8nPgogIDxscjpoaWVyYXJjaGljYWxTdWJqZWN0PgogICA8cmRm
+OkJhZz4KICAgIDxyZGY6bGk+Y2Fub24tNTUtMjUwPC9yZGY6bGk+CiAgICA8cmRm
+OmxpPm1vc2Nvdy1iaXJkczwvcmRmOmxpPgogICAgPHJkZjpsaT5zZXJib3I8L3Jk
+ZjpsaT4KICAgPC9yZGY6QmFnPgogIDwvbHI6aGllcmFyY2hpY2FsU3ViamVjdD4K
+IDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0
+PScnCiAgeG1sbnM6cGhvdG9zaG9wPSdodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rv
+c2hvcC8xLjAvJz4KICA8cGhvdG9zaG9wOkhpc3Rvcnk+PC9waG90b3Nob3A6SGlz
+dG9yeT4KICA8cGhvdG9zaG9wOkxlZ2FjeUlQVENEaWdlc3Q+MTEwN0I2RDFDNDM3
+NkFCM0ZENThDNTY5RDczNUE1RDg8L3Bob3Rvc2hvcDpMZWdhY3lJUFRDRGlnZXN0
+PgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv
+dXQ9JycKICB4bWxuczp0aWZmPSdodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4w
+Lyc+CiAgPHRpZmY6Qml0c1BlclNhbXBsZT4KICAgPHJkZjpTZXE+CiAgICA8cmRm
+OmxpPjg8L3JkZjpsaT4KICAgIDxyZGY6bGk+ODwvcmRmOmxpPgogICAgPHJkZjps
+aT44PC9yZGY6bGk+CiAgIDwvcmRmOlNlcT4KICA8L3RpZmY6Qml0c1BlclNhbXBs
+ZT4KICA8dGlmZjpDb21wcmVzc2lvbj44PC90aWZmOkNvbXByZXNzaW9uPgogIDx0
+aWZmOkltYWdlTGVuZ3RoPjI1OTI8L3RpZmY6SW1hZ2VMZW5ndGg+CiAgPHRpZmY6
+SW1hZ2VXaWR0aD4zODg4PC90aWZmOkltYWdlV2lkdGg+CiAgPHRpZmY6UGhvdG9t
+ZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0
+YXRpb24+CiAgPHRpZmY6UGxhbmFyQ29uZmlndXJhdGlvbj4xPC90aWZmOlBsYW5h
+ckNvbmZpZ3VyYXRpb24+CiAgPHRpZmY6U2FtcGxlc1BlclBpeGVsPjM8L3RpZmY6
+U2FtcGxlc1BlclBpeGVsPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNj
+cmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczp4bXA9J2h0dHA6Ly9ucy5hZG9i
+ZS5jb20veGFwLzEuMC8nPgogIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9z
+aG9wIExpZ2h0cm9vbTwveG1wOkNyZWF0b3JUb29sPgogIDx4bXA6TWV0YWRhdGFE
+YXRlPjIwMDktMTAtMDJUMjI6NTU6MjkrMDQ6MDA8L3htcDpNZXRhZGF0YURhdGU+
+CiAgPHhtcDpSYXRpbmc+NTwveG1wOlJhdGluZz4KIDwvcmRmOkRlc2NyaXB0aW9u
+PgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wTU09
+J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8nPgogIDx4bXBNTTpJbnN0
+YW5jZUlEPnV1aWQ6QzZEN0NEREEzNUIxREUxMUIyQzhDRUQ5MUZDOTg1QjI8L3ht
+cE1NOkluc3RhbmNlSUQ+CiA8L3JkZjpEZXNjcmlwdGlvbj4KPC9yZGY6UkRGPgo8
+L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVu
+ZD0ndyc/Pv/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYH
+CQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcK
+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+Cv/AABEIAEQAZAMBEQACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAFBggJAgMH
+BAEA/8QAUBAAAgEDAgQCBAgIBBcAAAAAAQIDBAURAAYHCBIhEzEJFEFRFSIjMmFx
+kbEWJkKBodHS01VytMIkMzRDREhSYmZ0dYKEkpOUoqSys8HD1P/EABwBAAEFAQEB
+AAAAAAAAAAAAAAYAAQIDBwUIBP/EAD8RAAECBAMCCQkIAgMBAAAAAAECEQADBCEF
+EjEGQSJRUmGRkrHR0gcTFBUWQlNxcjI0NUNigbLwI6EzgsHh/9oADAMBAAIRAxEA
+PwDsnPpz48fuWvjxTcOOGVpsFVbZ9v09c7XO3ySyrI8syMAUlQdOI1PcE5J74wAS
+4Ng1NiNMZkwqBCmszaA8R44FMdx2rwyrTLlBJBSDcF9SNxHFHLrf6Uvm8qx1T2HZ
+sQx5tbJv/o12Bsth/LV0jujhnbDEh7iOg+KCtL6TrmSODWz7KQ+1Vtc5P/f1L2Vw
+8+8vpHhiB2yxJNylHQrxQSpvSWcepO8rbbb+JZZh982n9lMP5S+lPhhvbPE+QjoV
+4o9y+kd444yYtvHv/Brj75dN7K4fyl9I8MOdssU5COhXijYPSN8bCF+TsHc/we/l
+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"</script>
+</head>
+<body>
+some content
+</body>
+</html>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
tallison@apache.org.