You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/02/07 11:58:53 UTC

[01/10] james-project git commit: MAILBOX-278 Renaming class tests to match tested class and migrate it to Mockito

Repository: james-project
Updated Branches:
  refs/heads/master 7abdb538b -> df6ad23db


MAILBOX-278 Renaming class tests to match tested class and migrate it to Mockito


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fed30079
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fed30079
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fed30079

Branch: refs/heads/master
Commit: fed30079cbec38048075c66b28edfdc99ace9f02
Parents: 41c860c
Author: Laura Royet <lr...@linagora.com>
Authored: Wed Dec 7 12:18:14 2016 +0100
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Feb 7 15:14:47 2017 +0700

----------------------------------------------------------------------
 ...hListeningMailboxMessageSearchIndexTest.java | 281 ---------------
 ...icSearchListeningMessageSearchIndexTest.java | 281 +++++++++++++++
 .../MailboxMessageToElasticSearchJsonTest.java  | 357 -------------------
 .../json/MessageToElasticSearchJsonTest.java    | 357 +++++++++++++++++++
 4 files changed, 638 insertions(+), 638 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/fed30079/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMailboxMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMailboxMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMailboxMessageSearchIndexTest.java
deleted file mode 100644
index 3efe045..0000000
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMailboxMessageSearchIndexTest.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/****************************************************************
- * 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.james.mailbox.elasticsearch.events;
-
-import static org.easymock.EasyMock.anyLong;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.createControl;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.mail.Flags;
-
-import org.apache.james.backends.es.ElasticSearchIndexer;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.MailboxSession.User;
-import org.apache.james.mailbox.elasticsearch.json.MessageToElasticSearchJson;
-import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
-import org.apache.james.mailbox.model.TestId;
-import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.mail.MessageMapperFactory;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.easymock.EasyMock;
-import org.easymock.IMocksControl;
-import org.elasticsearch.ElasticsearchException;
-import org.elasticsearch.action.bulk.BulkResponse;
-import org.elasticsearch.action.index.IndexResponse;
-import org.elasticsearch.index.query.QueryBuilder;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.google.common.collect.Lists;
-
-public class ElasticSearchListeningMailboxMessageSearchIndexTest {
-
-    public static final long MODSEQ = 18L;
-    private IMocksControl control;
-
-    private ElasticSearchIndexer indexer;
-    private ElasticSearchListeningMessageSearchIndex testee;
-    
-    @Before
-    public void setup() throws JsonProcessingException {
-        control = createControl();
-
-        MessageMapperFactory mapperFactory = control.createMock(MessageMapperFactory.class);
-        MessageToElasticSearchJson messageToElasticSearchJson = control.createMock(MessageToElasticSearchJson.class);
-        ElasticSearchSearcher elasticSearchSearcher = control.createMock(ElasticSearchSearcher.class);
-
-        indexer = control.createMock(ElasticSearchIndexer.class);
-
-        List<User> users = anyObject();
-        expect(messageToElasticSearchJson.convertToJson(anyObject(MailboxMessage.class), users)).andReturn("json content").anyTimes();
-        expect(messageToElasticSearchJson.getUpdatedJsonMessagePart(anyObject(Flags.class), anyLong())).andReturn("json updated content").anyTimes();
-
-        testee = new ElasticSearchListeningMessageSearchIndex(mapperFactory, indexer, elasticSearchSearcher, messageToElasticSearchJson);
-    }
-    
-    @Test
-    public void addShouldIndex() throws Exception {
-        MailboxSession.User user = control.createMock(MailboxSession.User.class);
-        MailboxSession session = control.createMock(MailboxSession.class);
-        expect(session.getUser())
-            .andReturn(user);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        MailboxMessage message = mockedMessage(messageUid);
-        
-        IndexResponse expectedIndexResponse = control.createMock(IndexResponse.class);
-        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
-            .andReturn(expectedIndexResponse);
-        
-        control.replay();
-        testee.add(session, mailbox, message);
-        control.verify();
-    }
-
-    private MailboxMessage mockedMessage(MessageUid messageId) throws IOException {
-        MailboxMessage message = control.createMock(MailboxMessage.class);
-        expect(message.getUid()).andReturn(messageId).anyTimes();
-        return message;
-    }
-    
-    @Test
-    public void addShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession.User user = control.createMock(MailboxSession.User.class);
-        MailboxSession session = control.createMock(MailboxSession.class);
-        expect(session.getUser())
-            .andReturn(user);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        MailboxMessage message = mockedMessage(messageUid);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        
-        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
-            .andThrow(new ElasticsearchException(""));
-        
-        control.replay();
-        testee.add(session, mailbox, message);
-        control.verify();
-    }
-    
-    @Test
-    @SuppressWarnings("unchecked")
-    public void deleteShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
-        
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
-        control.verify();
-    }
-    
-    @Test
-    @SuppressWarnings("unchecked")
-    public void deleteShouldWorkWhenMultipleMessageIds() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid1 = MessageUid.of(1);
-        MessageUid messageUid2 = MessageUid.of(2);
-        MessageUid messageUid3 = MessageUid.of(3);
-        MessageUid messageUid4 = MessageUid.of(4);
-        MessageUid messageUid5 = MessageUid.of(5);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(5);
-
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
-        
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid1, messageUid2, messageUid3, messageUid4, messageUid5));
-        control.verify();
-    }
-    
-    @Test
-    @SuppressWarnings("unchecked")
-    public void deleteShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
-        
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andThrow(new ElasticsearchException(""));
-        
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
-        control.verify();
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void updateShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-
-        Flags flags = new Flags();
-        MessageUid messageUid = MessageUid.of(1);
-        UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(messageUid)
-            .modSeq(MODSEQ)
-            .oldFlags(flags)
-            .newFlags(flags)
-            .build();
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.updateMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
-        
-        control.replay();
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
-        control.verify();
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void updateShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        Flags flags = new Flags();
-        MessageUid messageUid = MessageUid.of(1);
-        UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(messageUid)
-            .modSeq(MODSEQ)
-            .oldFlags(flags)
-            .newFlags(flags)
-            .build();
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
-
-        expect(indexer.updateMessages(anyObject(List.class)))
-            .andThrow(new ElasticsearchException(""));
-        
-        control.replay();
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
-        control.verify();
-    }
-
-    @Test
-    public void deleteAllShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-
-        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
-        EasyMock.expectLastCall();
-
-        control.replay();
-        testee.deleteAll(session, mailbox);
-        control.verify();
-    }
-
-    @Test
-    public void deleteAllShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
-
-        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
-        EasyMock.expectLastCall().andThrow(new ElasticsearchException(""));
-
-        control.replay();
-        testee.deleteAll(session, mailbox);
-        control.verify();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/fed30079/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
new file mode 100644
index 0000000..3efe045
--- /dev/null
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -0,0 +1,281 @@
+/****************************************************************
+ * 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.james.mailbox.elasticsearch.events;
+
+import static org.easymock.EasyMock.anyLong;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.createControl;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.mail.Flags;
+
+import org.apache.james.backends.es.ElasticSearchIndexer;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.MailboxSession.User;
+import org.apache.james.mailbox.elasticsearch.json.MessageToElasticSearchJson;
+import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UpdatedFlags;
+import org.apache.james.mailbox.store.mail.MessageMapperFactory;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
+import org.elasticsearch.ElasticsearchException;
+import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexResponse;
+import org.elasticsearch.index.query.QueryBuilder;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.Lists;
+
+public class ElasticSearchListeningMailboxMessageSearchIndexTest {
+
+    public static final long MODSEQ = 18L;
+    private IMocksControl control;
+
+    private ElasticSearchIndexer indexer;
+    private ElasticSearchListeningMessageSearchIndex testee;
+    
+    @Before
+    public void setup() throws JsonProcessingException {
+        control = createControl();
+
+        MessageMapperFactory mapperFactory = control.createMock(MessageMapperFactory.class);
+        MessageToElasticSearchJson messageToElasticSearchJson = control.createMock(MessageToElasticSearchJson.class);
+        ElasticSearchSearcher elasticSearchSearcher = control.createMock(ElasticSearchSearcher.class);
+
+        indexer = control.createMock(ElasticSearchIndexer.class);
+
+        List<User> users = anyObject();
+        expect(messageToElasticSearchJson.convertToJson(anyObject(MailboxMessage.class), users)).andReturn("json content").anyTimes();
+        expect(messageToElasticSearchJson.getUpdatedJsonMessagePart(anyObject(Flags.class), anyLong())).andReturn("json updated content").anyTimes();
+
+        testee = new ElasticSearchListeningMessageSearchIndex(mapperFactory, indexer, elasticSearchSearcher, messageToElasticSearchJson);
+    }
+    
+    @Test
+    public void addShouldIndex() throws Exception {
+        MailboxSession.User user = control.createMock(MailboxSession.User.class);
+        MailboxSession session = control.createMock(MailboxSession.class);
+        expect(session.getUser())
+            .andReturn(user);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        MessageUid messageUid = MessageUid.of(1);
+        TestId mailboxId = TestId.of(12);
+        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+        MailboxMessage message = mockedMessage(messageUid);
+        
+        IndexResponse expectedIndexResponse = control.createMock(IndexResponse.class);
+        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
+            .andReturn(expectedIndexResponse);
+        
+        control.replay();
+        testee.add(session, mailbox, message);
+        control.verify();
+    }
+
+    private MailboxMessage mockedMessage(MessageUid messageId) throws IOException {
+        MailboxMessage message = control.createMock(MailboxMessage.class);
+        expect(message.getUid()).andReturn(messageId).anyTimes();
+        return message;
+    }
+    
+    @Test
+    public void addShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
+        MailboxSession.User user = control.createMock(MailboxSession.User.class);
+        MailboxSession session = control.createMock(MailboxSession.class);
+        expect(session.getUser())
+            .andReturn(user);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        
+        MessageUid messageUid = MessageUid.of(1);
+        TestId mailboxId = TestId.of(12);
+        MailboxMessage message = mockedMessage(messageUid);
+        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+        
+        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
+            .andThrow(new ElasticsearchException(""));
+        
+        control.replay();
+        testee.add(session, mailbox, message);
+        control.verify();
+    }
+    
+    @Test
+    @SuppressWarnings("unchecked")
+    public void deleteShouldWork() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        MessageUid messageUid = MessageUid.of(1);
+        TestId mailboxId = TestId.of(12);
+        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+        
+        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
+        expect(indexer.deleteMessages(anyObject(List.class)))
+            .andReturn(expectedBulkResponse);
+        
+        control.replay();
+        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
+        control.verify();
+    }
+    
+    @Test
+    @SuppressWarnings("unchecked")
+    public void deleteShouldWorkWhenMultipleMessageIds() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        MessageUid messageUid1 = MessageUid.of(1);
+        MessageUid messageUid2 = MessageUid.of(2);
+        MessageUid messageUid3 = MessageUid.of(3);
+        MessageUid messageUid4 = MessageUid.of(4);
+        MessageUid messageUid5 = MessageUid.of(5);
+        TestId mailboxId = TestId.of(12);
+        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(5);
+
+        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
+        expect(indexer.deleteMessages(anyObject(List.class)))
+            .andReturn(expectedBulkResponse);
+        
+        control.replay();
+        testee.delete(session, mailbox, Lists.newArrayList(messageUid1, messageUid2, messageUid3, messageUid4, messageUid5));
+        control.verify();
+    }
+    
+    @Test
+    @SuppressWarnings("unchecked")
+    public void deleteShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        MessageUid messageUid = MessageUid.of(1);
+        TestId mailboxId = TestId.of(12);
+        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
+        
+        expect(indexer.deleteMessages(anyObject(List.class)))
+            .andThrow(new ElasticsearchException(""));
+        
+        control.replay();
+        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
+        control.verify();
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void updateShouldWork() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+
+        Flags flags = new Flags();
+        MessageUid messageUid = MessageUid.of(1);
+        UpdatedFlags updatedFlags = UpdatedFlags.builder()
+            .uid(messageUid)
+            .modSeq(MODSEQ)
+            .oldFlags(flags)
+            .newFlags(flags)
+            .build();
+        TestId mailboxId = TestId.of(12);
+
+        expectLastCall();
+        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+        
+        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
+        expect(indexer.updateMessages(anyObject(List.class)))
+            .andReturn(expectedBulkResponse);
+        
+        control.replay();
+        testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
+        control.verify();
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void updateShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        Flags flags = new Flags();
+        MessageUid messageUid = MessageUid.of(1);
+        UpdatedFlags updatedFlags = UpdatedFlags.builder()
+            .uid(messageUid)
+            .modSeq(MODSEQ)
+            .oldFlags(flags)
+            .newFlags(flags)
+            .build();
+        TestId mailboxId = TestId.of(12);
+
+        expectLastCall();
+        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
+
+        expect(indexer.updateMessages(anyObject(List.class)))
+            .andThrow(new ElasticsearchException(""));
+        
+        control.replay();
+        testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
+        control.verify();
+    }
+
+    @Test
+    public void deleteAllShouldWork() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+
+        TestId mailboxId = TestId.of(12);
+
+        expectLastCall();
+        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+
+        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
+        EasyMock.expectLastCall();
+
+        control.replay();
+        testee.deleteAll(session, mailbox);
+        control.verify();
+    }
+
+    @Test
+    public void deleteAllShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
+        MailboxSession session = control.createMock(MailboxSession.class);
+
+        Mailbox mailbox = control.createMock(Mailbox.class);
+        TestId mailboxId = TestId.of(12);
+
+        expectLastCall();
+        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
+
+        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
+        EasyMock.expectLastCall().andThrow(new ElasticsearchException(""));
+
+        control.replay();
+        testee.deleteAll(session, mailbox);
+        control.verify();
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/fed30079/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java
deleted file mode 100644
index 6fa9d1f..0000000
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/****************************************************************
- * 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.james.mailbox.elasticsearch.json;
-
-import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
-import static net.javacrumbs.jsonunit.core.Option.IGNORING_VALUES;
-import static net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.time.ZoneId;
-import java.util.Date;
-
-import javax.mail.Flags;
-import javax.mail.util.SharedByteArrayInputStream;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.james.mailbox.FlagsBuilder;
-import org.apache.james.mailbox.MailboxSession.User;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.elasticsearch.IndexAttachments;
-import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.TestId;
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.apache.james.mailbox.store.search.MessageSearchIndex;
-import org.apache.james.mailbox.tika.extractor.TikaTextExtractor;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-
-public class MailboxMessageToElasticSearchJsonTest {
-
-    public static final int SIZE = 25;
-    public static final int BODY_START_OCTET = 100;
-    public static final TestId MAILBOX_ID = TestId.of(18L);
-    public static final MessageId MESSAGE_ID = TestMessageId.of(184L);
-    public static final long MOD_SEQ = 42L;
-    public static final MessageUid UID = MessageUid.of(25);
-    public static final Charset CHARSET = Charsets.UTF_8;
-
-    private Date date;
-    private PropertyBuilder propertyBuilder;
-
-    @Before
-    public void setUp() throws Exception {
-        // 2015/06/07 00:00:00 0200 (Paris time zone)
-        date = new Date(1433628000000L);
-        propertyBuilder = new PropertyBuilder();
-        propertyBuilder.setMediaType("plain");
-        propertyBuilder.setSubType("text");
-        propertyBuilder.setTextualLineCount(18L);
-        propertyBuilder.setContentDescription("An e-mail");
-    }
-
-    @Test
-    public void convertToJsonShouldThrowWhenNoUser() throws Exception {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-                new DefaultTextExtractor(),
-                ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID,
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream("message".getBytes(Charsets.UTF_8)),
-                new Flags(),
-                propertyBuilder,
-                MAILBOX_ID);
-        ImmutableList<User> users = ImmutableList.of();
-
-        assertThatThrownBy(() -> messageToElasticSearchJson.convertToJson(spamMail, users))
-            .isInstanceOf(IllegalArgumentException.class);
-    }
-
-    @Test
-    public void spamEmailShouldBeWellConvertedToJson() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID,
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/spamMail.eml"))),
-                new Flags(),
-                propertyBuilder,
-                MAILBOX_ID);
-        spamMail.setUid(UID);
-        spamMail.setModSeq(MOD_SEQ);
-        assertThatJson(messageToElasticSearchJson.convertToJson(spamMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/spamMail.json"), CHARSET));
-    }
-
-    @Test
-    public void htmlEmailShouldBeWellConvertedToJson() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage htmlMail = new SimpleMailboxMessage(MESSAGE_ID,
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/htmlMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("social", "pocket-money").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        htmlMail.setModSeq(MOD_SEQ);
-        htmlMail.setUid(UID);
-        assertThatJson(messageToElasticSearchJson.convertToJson(htmlMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/htmlMail.json")));
-    }
-
-    @Test
-    public void pgpSignedEmailShouldBeWellConvertedToJson() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage pgpSignedMail = new SimpleMailboxMessage(MESSAGE_ID,
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/pgpSignedMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        pgpSignedMail.setModSeq(MOD_SEQ);
-        pgpSignedMail.setUid(UID);
-        assertThatJson(messageToElasticSearchJson.convertToJson(pgpSignedMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/pgpSignedMail.json")));
-    }
-
-    @Test
-    public void simpleEmailShouldBeWellConvertedToJson() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage mail = new SimpleMailboxMessage(MESSAGE_ID,
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/mail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        mail.setModSeq(MOD_SEQ);
-        mail.setUid(UID);
-        assertThatJson(messageToElasticSearchJson.convertToJson(mail, 
-                ImmutableList.of(new MockMailboxSession("user1").getUser(), new MockMailboxSession("user2").getUser())))
-            .when(IGNORING_ARRAY_ORDER).when(IGNORING_VALUES)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/mail.json")));
-    }
-
-    @Test
-    public void recursiveEmailShouldBeWellConvertedToJson() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage recursiveMail = new SimpleMailboxMessage(MESSAGE_ID, 
-                date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        recursiveMail.setModSeq(MOD_SEQ);
-        recursiveMail.setUid(UID);
-        assertThatJson(messageToElasticSearchJson.convertToJson(recursiveMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER).when(IGNORING_VALUES)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
-    }
-
-    @Test
-    public void emailWithNoInternalDateShouldUseNowDate() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
-                null,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        mailWithNoInternalDate.setModSeq(MOD_SEQ);
-        mailWithNoInternalDate.setUid(UID);
-        assertThatJson(messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER)
-            .when(IGNORING_VALUES)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
-    }
-
-    @Test
-    public void emailWithAttachmentsShouldConvertAttachmentsWhenIndexAttachmentsIsTrue() throws IOException {
-        // Given
-        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
-                null,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        mailWithNoInternalDate.setModSeq(MOD_SEQ);
-        mailWithNoInternalDate.setUid(UID);
-
-        // When
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        String convertToJson = messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser()));
-
-        // Then
-        assertThatJson(convertToJson)
-            .when(IGNORING_ARRAY_ORDER)
-            .when(IGNORING_VALUES)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
-    }
-
-    @Test
-    public void emailWithAttachmentsShouldNotConvertAttachmentsWhenIndexAttachmentsIsFalse() throws IOException {
-        // Given
-        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
-                null,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                MAILBOX_ID);
-        mailWithNoInternalDate.setModSeq(MOD_SEQ);
-        mailWithNoInternalDate.setUid(UID);
-        
-        // When
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.NO,
-            MessageSearchIndex.IndexMessageId.Required);
-        String convertToJson = messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser()));
-
-        // Then
-        assertThatJson(convertToJson)
-            .when(IGNORING_ARRAY_ORDER)
-            .when(IGNORING_VALUES)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMailWithoutAttachments.json")));
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void emailWithNoMailboxIdShouldThrow() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage mailWithNoMailboxId;
-        try {
-            mailWithNoMailboxId = new SimpleMailboxMessage(MESSAGE_ID, date,
-                SIZE,
-                BODY_START_OCTET,
-                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
-                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
-                propertyBuilder,
-                null);
-            mailWithNoMailboxId.setModSeq(MOD_SEQ);
-            mailWithNoMailboxId.setUid(UID);
-        } catch(Exception exception) {
-            throw Throwables.propagate(exception);
-        }
-        messageToElasticSearchJson.convertToJson(mailWithNoMailboxId, ImmutableList.of(new MockMailboxSession("username").getUser()));
-    }
-
-    @Test
-    public void getUpdatedJsonMessagePartShouldBehaveWellOnEmptyFlags() throws Exception {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        assertThatJson(messageToElasticSearchJson.getUpdatedJsonMessagePart(new Flags(), MOD_SEQ))
-            .isEqualTo("{\"modSeq\":42,\"isAnswered\":false,\"isDeleted\":false,\"isDraft\":false,\"isFlagged\":false,\"isRecent\":false,\"userFlags\":[],\"isUnread\":true}");
-    }
-
-    @Test
-    public void getUpdatedJsonMessagePartShouldBehaveWellOnNonEmptyFlags() throws Exception {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        assertThatJson(messageToElasticSearchJson.getUpdatedJsonMessagePart(new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.FLAGGED).add("user").build(), MOD_SEQ))
-            .isEqualTo("{\"modSeq\":42,\"isAnswered\":false,\"isDeleted\":true,\"isDraft\":false,\"isFlagged\":true,\"isRecent\":false,\"userFlags\":[\"user\"],\"isUnread\":true}");
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void getUpdatedJsonMessagePartShouldThrowIfFlagsIsNull() throws Exception {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new DefaultTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        messageToElasticSearchJson.getUpdatedJsonMessagePart(null, MOD_SEQ);
-    }
-
-    @Test
-    public void spamEmailShouldBeWellConvertedToJsonWithApacheTika() throws IOException {
-        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
-            new TikaTextExtractor(),
-            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
-            MessageSearchIndex.IndexMessageId.Required);
-        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID, date,
-            SIZE,
-            BODY_START_OCTET,
-            new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/nonTextual.eml"))),
-            new Flags(),
-            propertyBuilder,
-            MAILBOX_ID);
-        spamMail.setUid(UID);
-        spamMail.setModSeq(MOD_SEQ);
-        assertThatJson(messageToElasticSearchJson.convertToJson(spamMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
-            .when(IGNORING_ARRAY_ORDER)
-            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/nonTextual.json"), CHARSET));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/fed30079/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
new file mode 100644
index 0000000..2b0a4de
--- /dev/null
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
@@ -0,0 +1,357 @@
+/****************************************************************
+ * 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.james.mailbox.elasticsearch.json;
+
+import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
+import static net.javacrumbs.jsonunit.core.Option.IGNORING_VALUES;
+import static net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.time.ZoneId;
+import java.util.Date;
+
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.james.mailbox.FlagsBuilder;
+import org.apache.james.mailbox.MailboxSession.User;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.elasticsearch.IndexAttachments;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.mailbox.store.search.MessageSearchIndex;
+import org.apache.james.mailbox.tika.extractor.TikaTextExtractor;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableList;
+
+public class MessageToElasticSearchJsonTest {
+
+    public static final int SIZE = 25;
+    public static final int BODY_START_OCTET = 100;
+    public static final TestId MAILBOX_ID = TestId.of(18L);
+    public static final MessageId MESSAGE_ID = TestMessageId.of(184L);
+    public static final long MOD_SEQ = 42L;
+    public static final MessageUid UID = MessageUid.of(25);
+    public static final Charset CHARSET = Charsets.UTF_8;
+
+    private Date date;
+    private PropertyBuilder propertyBuilder;
+
+    @Before
+    public void setUp() throws Exception {
+        // 2015/06/07 00:00:00 0200 (Paris time zone)
+        date = new Date(1433628000000L);
+        propertyBuilder = new PropertyBuilder();
+        propertyBuilder.setMediaType("plain");
+        propertyBuilder.setSubType("text");
+        propertyBuilder.setTextualLineCount(18L);
+        propertyBuilder.setContentDescription("An e-mail");
+    }
+
+    @Test
+    public void convertToJsonShouldThrowWhenNoUser() throws Exception {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+                new DefaultTextExtractor(),
+                ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+                MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID,
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream("message".getBytes(Charsets.UTF_8)),
+                new Flags(),
+                propertyBuilder,
+                MAILBOX_ID);
+        ImmutableList<User> users = ImmutableList.of();
+
+        assertThatThrownBy(() -> messageToElasticSearchJson.convertToJson(spamMail, users))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    public void spamEmailShouldBeWellConvertedToJson() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID,
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/spamMail.eml"))),
+                new Flags(),
+                propertyBuilder,
+                MAILBOX_ID);
+        spamMail.setUid(UID);
+        spamMail.setModSeq(MOD_SEQ);
+        assertThatJson(messageToElasticSearchJson.convertToJson(spamMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/spamMail.json"), CHARSET));
+    }
+
+    @Test
+    public void htmlEmailShouldBeWellConvertedToJson() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage htmlMail = new SimpleMailboxMessage(MESSAGE_ID,
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/htmlMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("social", "pocket-money").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        htmlMail.setModSeq(MOD_SEQ);
+        htmlMail.setUid(UID);
+        assertThatJson(messageToElasticSearchJson.convertToJson(htmlMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/htmlMail.json")));
+    }
+
+    @Test
+    public void pgpSignedEmailShouldBeWellConvertedToJson() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage pgpSignedMail = new SimpleMailboxMessage(MESSAGE_ID,
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/pgpSignedMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        pgpSignedMail.setModSeq(MOD_SEQ);
+        pgpSignedMail.setUid(UID);
+        assertThatJson(messageToElasticSearchJson.convertToJson(pgpSignedMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/pgpSignedMail.json")));
+    }
+
+    @Test
+    public void simpleEmailShouldBeWellConvertedToJson() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage mail = new SimpleMailboxMessage(MESSAGE_ID,
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/mail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        mail.setModSeq(MOD_SEQ);
+        mail.setUid(UID);
+        assertThatJson(messageToElasticSearchJson.convertToJson(mail,
+                ImmutableList.of(new MockMailboxSession("user1").getUser(), new MockMailboxSession("user2").getUser())))
+            .when(IGNORING_ARRAY_ORDER).when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/mail.json")));
+    }
+
+    @Test
+    public void recursiveEmailShouldBeWellConvertedToJson() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage recursiveMail = new SimpleMailboxMessage(MESSAGE_ID, 
+                date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        recursiveMail.setModSeq(MOD_SEQ);
+        recursiveMail.setUid(UID);
+        assertThatJson(messageToElasticSearchJson.convertToJson(recursiveMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER).when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
+    }
+
+    @Test
+    public void emailWithNoInternalDateShouldUseNowDate() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
+                null,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        mailWithNoInternalDate.setModSeq(MOD_SEQ);
+        mailWithNoInternalDate.setUid(UID);
+        assertThatJson(messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER)
+            .when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
+    }
+
+    @Test
+    public void emailWithAttachmentsShouldConvertAttachmentsWhenIndexAttachmentsIsTrue() throws IOException {
+        // Given
+        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
+                null,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        mailWithNoInternalDate.setModSeq(MOD_SEQ);
+        mailWithNoInternalDate.setUid(UID);
+
+        // When
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        String convertToJson = messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser()));
+
+        // Then
+        assertThatJson(convertToJson)
+            .when(IGNORING_ARRAY_ORDER)
+            .when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMail.json")));
+    }
+
+    @Test
+    public void emailWithAttachmentsShouldNotConvertAttachmentsWhenIndexAttachmentsIsFalse() throws IOException {
+        // Given
+        MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID,
+                null,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                MAILBOX_ID);
+        mailWithNoInternalDate.setModSeq(MOD_SEQ);
+        mailWithNoInternalDate.setUid(UID);
+
+        // When
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.NO,
+            MessageSearchIndex.IndexMessageId.Required);
+        String convertToJson = messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser()));
+
+        // Then
+        assertThatJson(convertToJson)
+            .when(IGNORING_ARRAY_ORDER)
+            .when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/recursiveMailWithoutAttachments.json")));
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void emailWithNoMailboxIdShouldThrow() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage mailWithNoMailboxId;
+        try {
+            mailWithNoMailboxId = new SimpleMailboxMessage(MESSAGE_ID, date,
+                SIZE,
+                BODY_START_OCTET,
+                new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))),
+                new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+                propertyBuilder,
+                null);
+            mailWithNoMailboxId.setModSeq(MOD_SEQ);
+            mailWithNoMailboxId.setUid(UID);
+        } catch (Exception exception) {
+            throw Throwables.propagate(exception);
+        }
+        messageToElasticSearchJson.convertToJson(mailWithNoMailboxId, ImmutableList.of(new MockMailboxSession("username").getUser()));
+    }
+
+    @Test
+    public void getUpdatedJsonMessagePartShouldBehaveWellOnEmptyFlags() throws Exception {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        assertThatJson(messageToElasticSearchJson.getUpdatedJsonMessagePart(new Flags(), MOD_SEQ))
+            .isEqualTo("{\"modSeq\":42,\"isAnswered\":false,\"isDeleted\":false,\"isDraft\":false,\"isFlagged\":false,\"isRecent\":false,\"userFlags\":[],\"isUnread\":true}");
+    }
+
+    @Test
+    public void getUpdatedJsonMessagePartShouldBehaveWellOnNonEmptyFlags() throws Exception {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        assertThatJson(messageToElasticSearchJson.getUpdatedJsonMessagePart(new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.FLAGGED).add("user").build(), MOD_SEQ))
+            .isEqualTo("{\"modSeq\":42,\"isAnswered\":false,\"isDeleted\":true,\"isDraft\":false,\"isFlagged\":true,\"isRecent\":false,\"userFlags\":[\"user\"],\"isUnread\":true}");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void getUpdatedJsonMessagePartShouldThrowIfFlagsIsNull() throws Exception {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new DefaultTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        messageToElasticSearchJson.getUpdatedJsonMessagePart(null, MOD_SEQ);
+    }
+
+    @Test
+    public void spamEmailShouldBeWellConvertedToJsonWithApacheTika() throws IOException {
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+            new TikaTextExtractor(),
+            ZoneId.of("Europe/Paris"), IndexAttachments.YES,
+            MessageSearchIndex.IndexMessageId.Required);
+        MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID, date,
+            SIZE,
+            BODY_START_OCTET,
+            new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/nonTextual.eml"))),
+            new Flags(),
+            propertyBuilder,
+            MAILBOX_ID);
+        spamMail.setUid(UID);
+        spamMail.setModSeq(MOD_SEQ);
+        assertThatJson(messageToElasticSearchJson.convertToJson(spamMail, ImmutableList.of(new MockMailboxSession("username").getUser())))
+            .when(IGNORING_ARRAY_ORDER)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/nonTextual.json"), CHARSET));
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[06/10] james-project git commit: MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails

Posted by ad...@apache.org.
MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d87642ab
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d87642ab
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d87642ab

Branch: refs/heads/master
Commit: d87642abd996c4535a2234a9dd00182596489d8c
Parents: fed3007
Author: Laura Royet <lr...@linagora.com>
Authored: Fri Dec 9 09:27:45 2016 +0100
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Feb 7 16:15:13 2017 +0700

----------------------------------------------------------------------
 .../james/backends/es/ElasticSearchIndexer.java |   25 +
 ...lasticSearchListeningMessageSearchIndex.java |   16 +-
 .../json/MessageToElasticSearchJson.java        |   12 +
 ...icSearchListeningMessageSearchIndexTest.java |  329 ++--
 .../json/MessageToElasticSearchJsonTest.java    |   28 +
 .../eml/emailWithNonIndexableAttachment.eml     | 1655 ++++++++++++++++++
 ...NonIndexableAttachmentWithoutAttachment.json |   96 +
 .../integration/SetMessagesMethodTest.java      |  175 ++
 .../attachment/nonIndexableAttachment.html      |  827 +++++++++
 9 files changed, 3009 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
index f1df1d7..55bf479 100644
--- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchIndexer.java
@@ -19,6 +19,7 @@
 package org.apache.james.backends.es;
 
 import java.util.List;
+import java.util.Objects;
 
 import javax.inject.Inject;
 
@@ -31,6 +32,7 @@ import org.elasticsearch.index.query.QueryBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 public class ElasticSearchIndexer {
@@ -53,6 +55,29 @@ public class ElasticSearchIndexer {
         public String getUpdatedDocumentPart() {
             return updatedDocumentPart;
         }
+
+        @Override
+        public final boolean equals(Object o) {
+            if (o instanceof UpdatedRepresentation) {
+                UpdatedRepresentation other = (UpdatedRepresentation) o;
+                return Objects.equals(id, other.id)
+                    && Objects.equals(updatedDocumentPart, other.updatedDocumentPart);
+            }
+            return false;
+        }
+
+        @Override
+        public final int hashCode() {
+            return Objects.hash(id, updatedDocumentPart);
+        }
+
+        @Override
+        public String toString() {
+            return MoreObjects.toStringHelper(this)
+                .add("id", id)
+                .add("updatedDocumentPart", updatedDocumentPart)
+                .toString();
+        }
     }
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ElasticSearchIndexer.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index 7372e2b..aa6983d 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -98,6 +98,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
             throws MailboxException {
         Preconditions.checkArgument(session != null, "'session' is mandatory");
         return searcher.search(ImmutableList.of(session.getUser()), searchQuery, Optional.of(limit))
+            .peek(this::logIfNoMessageId)
             .map(SearchResult::getMessageId)
             .map(com.google.common.base.Optional::get)
             .collect(Guavate.toImmutableList());
@@ -108,10 +109,15 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
         try {
             indexer.indexMessage(indexIdFor(mailbox, message.getUid()), messageToElasticSearchJson.convertToJson(message, ImmutableList.of(session.getUser())));
         } catch (Exception e) {
-            LOGGER.error("Error when indexing message " + message.getUid(), e);
+            try {
+                LOGGER.warn("indexing message {} without attachments ", message.getUid());
+                indexer.indexMessage(indexIdFor(mailbox, message.getUid()), messageToElasticSearchJson.convertToJsonWithoutAttachment(message, ImmutableList.of(session.getUser())));
+            } catch (JsonProcessingException e1) {
+                LOGGER.error("Error when indexing message " + message.getUid() + " without its attachment", e1);
+            }
         }
     }
-
+    
     @Override
     public void delete(MailboxSession session, Mailbox mailbox, List<MessageUid> expungedUids) throws MailboxException {
         try {
@@ -162,4 +168,10 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
         return String.join(ID_SEPARATOR, mailbox.getMailboxId().serialize(), String.valueOf(uid.asLong()));
     }
 
+    private void logIfNoMessageId(SearchResult searchResult) {
+        if (!searchResult.getMessageId().isPresent()) {
+            LOGGER.error("No messageUid for {} in mailbox {}", searchResult.getMessageUid(), searchResult.getMailboxId());
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJson.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJson.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJson.java
index be23f98..6b699b9 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJson.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJson.java
@@ -81,6 +81,18 @@ public class MessageToElasticSearchJson {
         }
     }
 
+    public String convertToJsonWithoutAttachment(MailboxMessage message, List<User> users) throws JsonProcessingException {
+        Preconditions.checkNotNull(message);
+        switch (indexMessageId) {
+            case Required:
+                return mapper.writeValueAsString(IndexableMessageWithMessageId.from(message, users, textExtractor, zoneId, IndexAttachments.NO));
+            case Optional:
+                return mapper.writeValueAsString(IndexableMessage.from(message, users, textExtractor, zoneId, IndexAttachments.NO));
+            default:
+                throw new NotImplementedException();
+        }
+    }
+
     public String getUpdatedJsonMessagePart(Flags flags, long modSeq) throws JsonProcessingException {
         Preconditions.checkNotNull(flags);
         return mapper.writeValueAsString(new MessageUpdateJson(flags, modSeq));

http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 3efe045..28323b2 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -18,13 +18,13 @@
  ****************************************************************/
 package org.apache.james.mailbox.elasticsearch.events;
 
-import static org.easymock.EasyMock.anyLong;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.createControl;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.refEq;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 import java.util.List;
@@ -32,250 +32,275 @@ import java.util.List;
 import javax.mail.Flags;
 
 import org.apache.james.backends.es.ElasticSearchIndexer;
+import org.apache.james.backends.es.ElasticSearchIndexer.UpdatedRepresentation;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.MailboxSession.User;
+import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.elasticsearch.json.MessageToElasticSearchJson;
 import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
+import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.MessageMapperFactory;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.easymock.EasyMock;
-import org.easymock.IMocksControl;
 import org.elasticsearch.ElasticsearchException;
 import org.elasticsearch.action.bulk.BulkResponse;
-import org.elasticsearch.action.index.IndexResponse;
 import org.elasticsearch.index.query.QueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.fasterxml.jackson.core.JsonGenerationException;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
-public class ElasticSearchListeningMailboxMessageSearchIndexTest {
+public class ElasticSearchListeningMessageSearchIndexTest {
+    
 
     public static final long MODSEQ = 18L;
-    private IMocksControl control;
+    public static final MessageUid MESSAGE_UID = MessageUid.of(1);
+    public static final TestId MAILBOX_ID = TestId.of(12);
+    public static final String ELASTIC_SEARCH_ID = "12:1";
+    public static final String EXPECTED_JSON_CONTENT = "json content";
+    public static final String USERNAME = "username";
 
     private ElasticSearchIndexer indexer;
+    private MessageToElasticSearchJson messageToElasticSearchJson;
     private ElasticSearchListeningMessageSearchIndex testee;
+    private MailboxSession session;
+    private User user;
     
     @Before
     public void setup() throws JsonProcessingException {
-        control = createControl();
-
-        MessageMapperFactory mapperFactory = control.createMock(MessageMapperFactory.class);
-        MessageToElasticSearchJson messageToElasticSearchJson = control.createMock(MessageToElasticSearchJson.class);
-        ElasticSearchSearcher elasticSearchSearcher = control.createMock(ElasticSearchSearcher.class);
 
-        indexer = control.createMock(ElasticSearchIndexer.class);
-
-        List<User> users = anyObject();
-        expect(messageToElasticSearchJson.convertToJson(anyObject(MailboxMessage.class), users)).andReturn("json content").anyTimes();
-        expect(messageToElasticSearchJson.getUpdatedJsonMessagePart(anyObject(Flags.class), anyLong())).andReturn("json updated content").anyTimes();
+        MessageMapperFactory mapperFactory = mock(MessageMapperFactory.class);
+        messageToElasticSearchJson = mock(MessageToElasticSearchJson.class);
+        ElasticSearchSearcher elasticSearchSearcher = mock(ElasticSearchSearcher.class);
 
+        indexer = mock(ElasticSearchIndexer.class);
+        
         testee = new ElasticSearchListeningMessageSearchIndex(mapperFactory, indexer, elasticSearchSearcher, messageToElasticSearchJson);
+        session = new MockMailboxSession(USERNAME);
+        user = session.getUser();
     }
     
     @Test
     public void addShouldIndex() throws Exception {
-        MailboxSession.User user = control.createMock(MailboxSession.User.class);
-        MailboxSession session = control.createMock(MailboxSession.class);
-        expect(session.getUser())
-            .andReturn(user);
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+        MailboxMessage message = mockedMessage(MESSAGE_UID);
+        List<User> users = ImmutableList.of(user);
+        
+        when(messageToElasticSearchJson.convertToJson(eq(message), eq(users)))
+            .thenReturn(EXPECTED_JSON_CONTENT);
+        
+        //When
+        testee.add(session, mailbox, message);
+        
+        //Then
+        verify(indexer).indexMessage(eq(ELASTIC_SEARCH_ID), eq(EXPECTED_JSON_CONTENT));
+    }
 
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        MailboxMessage message = mockedMessage(messageUid);
+    @SuppressWarnings("unchecked")
+    @Test
+    public void addShouldIndexEmailBodyWhenNotIndexableAttachment() throws Exception {
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+        
+        MailboxMessage message = mockedMessage(MESSAGE_UID);
+        List<User> users = ImmutableList.of(user);
+        
+        when(messageToElasticSearchJson.convertToJson(eq(message), eq(users)))
+            .thenThrow(JsonProcessingException.class);
         
-        IndexResponse expectedIndexResponse = control.createMock(IndexResponse.class);
-        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
-            .andReturn(expectedIndexResponse);
+        when(messageToElasticSearchJson.convertToJsonWithoutAttachment(eq(message), eq(users)))
+            .thenReturn(EXPECTED_JSON_CONTENT);
         
-        control.replay();
+        //When
         testee.add(session, mailbox, message);
-        control.verify();
+        
+        //Then
+        verify(indexer).indexMessage(eq(ELASTIC_SEARCH_ID), eq(EXPECTED_JSON_CONTENT));
     }
 
     private MailboxMessage mockedMessage(MessageUid messageId) throws IOException {
-        MailboxMessage message = control.createMock(MailboxMessage.class);
-        expect(message.getUid()).andReturn(messageId).anyTimes();
+        MailboxMessage message = mock(MailboxMessage.class);
+        when(message.getUid())
+            .thenReturn(messageId);
         return message;
     }
-    
+
+    @SuppressWarnings("unchecked")
     @Test
     public void addShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession.User user = control.createMock(MailboxSession.User.class);
-        MailboxSession session = control.createMock(MailboxSession.class);
-        expect(session.getUser())
-            .andReturn(user);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+        MailboxMessage message = mockedMessage(MESSAGE_UID);
+        List<User> users = ImmutableList.of(user);
         
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        MailboxMessage message = mockedMessage(messageUid);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
+        when(messageToElasticSearchJson.convertToJson(eq(message), eq(users)))
+            .thenThrow(JsonProcessingException.class);
         
-        expect(indexer.indexMessage(eq(mailboxId.serialize() + ":" + messageUid.asLong()), anyString()))
-            .andThrow(new ElasticsearchException(""));
+        when(messageToElasticSearchJson.convertToJsonWithoutAttachment(eq(message), eq(users)))
+            .thenThrow(new JsonGenerationException("expected error"));
         
-        control.replay();
+        //When
         testee.add(session, mailbox, message);
-        control.verify();
+        
+        //Then
+        //No exception
     }
-    
+
     @Test
     @SuppressWarnings("unchecked")
     public void deleteShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
-        
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
-        control.verify();
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+
+        BulkResponse expectedBulkResponse = mock(BulkResponse.class);
+        when(indexer.deleteMessages(any(List.class)))
+            .thenReturn(expectedBulkResponse);
+
+        //When
+        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID));
+
+        //Then
+        verify(indexer).deleteMessages(eq(Lists.newArrayList(ELASTIC_SEARCH_ID)));
     }
-    
+
     @Test
     @SuppressWarnings("unchecked")
     public void deleteShouldWorkWhenMultipleMessageIds() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid1 = MessageUid.of(1);
-        MessageUid messageUid2 = MessageUid.of(2);
-        MessageUid messageUid3 = MessageUid.of(3);
-        MessageUid messageUid4 = MessageUid.of(4);
-        MessageUid messageUid5 = MessageUid.of(5);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(5);
-
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        MessageUid messageId2 = MessageUid.of(2);
+        MessageUid messageId3 = MessageUid.of(3);
+        MessageUid messageId4 = MessageUid.of(4);
+        MessageUid messageId5 = MessageUid.of(5);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+
+        BulkResponse expectedBulkResponse = mock(BulkResponse.class);
+        when(indexer.deleteMessages(any(List.class)))
+            .thenReturn(expectedBulkResponse);
         
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid1, messageUid2, messageUid3, messageUid4, messageUid5));
-        control.verify();
+        //When
+        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID, messageId2, messageId3, messageId4, messageId5));
+        
+        //Then
+        verify(indexer).deleteMessages(eq(Lists.newArrayList(ELASTIC_SEARCH_ID, "12:2", "12:3", "12:4", "12:5")));
     }
-    
+
     @Test
     @SuppressWarnings("unchecked")
     public void deleteShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        MessageUid messageUid = MessageUid.of(1);
-        TestId mailboxId = TestId.of(12);
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+        
+        when(indexer.deleteMessages(any(List.class)))
+            .thenThrow(new ElasticsearchException(""));
         
-        expect(indexer.deleteMessages(anyObject(List.class)))
-            .andThrow(new ElasticsearchException(""));
+        //When
+        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID));
         
-        control.replay();
-        testee.delete(session, mailbox, Lists.newArrayList(messageUid));
-        control.verify();
+        //Then
+        //No exception
     }
 
     @Test
-    @SuppressWarnings("unchecked")
     public void updateShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
         Flags flags = new Flags();
-        MessageUid messageUid = MessageUid.of(1);
+
         UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(messageUid)
+            .uid(MESSAGE_UID)
             .modSeq(MODSEQ)
             .oldFlags(flags)
             .newFlags(flags)
             .build();
-        TestId mailboxId = TestId.of(12);
 
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-        
-        BulkResponse expectedBulkResponse = control.createMock(BulkResponse.class);
-        expect(indexer.updateMessages(anyObject(List.class)))
-            .andReturn(expectedBulkResponse);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+
+        when(messageToElasticSearchJson.getUpdatedJsonMessagePart(any(Flags.class), any(Long.class)))
+            .thenReturn("json updated content");
         
-        control.replay();
+        //When
         testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
-        control.verify();
+        
+        //Then
+        ImmutableList<UpdatedRepresentation> expectedUpdatedRepresentations = ImmutableList.of(new UpdatedRepresentation(ELASTIC_SEARCH_ID, "json updated content"));
+        verify(indexer).updateMessages(expectedUpdatedRepresentations);
     }
 
     @Test
-    @SuppressWarnings("unchecked")
     public void updateShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
         Flags flags = new Flags();
-        MessageUid messageUid = MessageUid.of(1);
         UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(messageUid)
+            .uid(MESSAGE_UID)
             .modSeq(MODSEQ)
             .oldFlags(flags)
             .newFlags(flags)
             .build();
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
 
-        expect(indexer.updateMessages(anyObject(List.class)))
-            .andThrow(new ElasticsearchException(""));
+        ImmutableList<UpdatedRepresentation> expectedUpdatedRepresentations = ImmutableList.of(new UpdatedRepresentation(ELASTIC_SEARCH_ID, "json updated content"));
+        when(indexer.updateMessages(expectedUpdatedRepresentations))
+            .thenThrow(new ElasticsearchException(""));
         
-        control.replay();
+        //When
         testee.update(session, mailbox, Lists.newArrayList(updatedFlags));
-        control.verify();
+        
+        //Then
+        //No exception
     }
 
     @Test
     public void deleteAllShouldWork() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId);
-
-        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
-        EasyMock.expectLastCall();
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
 
-        control.replay();
+        //When
         testee.deleteAll(session, mailbox);
-        control.verify();
+        
+        //Then
+        QueryBuilder expectedQueryBuilder = QueryBuilders.termQuery("mailboxId", "12");
+        verify(indexer).deleteAllMatchingQuery(refEq(expectedQueryBuilder));
     }
 
     @Test
     public void deleteAllShouldNotPropagateExceptionWhenExceptionOccurs() throws Exception {
-        MailboxSession session = control.createMock(MailboxSession.class);
-
-        Mailbox mailbox = control.createMock(Mailbox.class);
-        TestId mailboxId = TestId.of(12);
-
-        expectLastCall();
-        expect(mailbox.getMailboxId()).andReturn(mailboxId).times(2);
-
-        indexer.deleteAllMatchingQuery(anyObject(QueryBuilder.class));
-        EasyMock.expectLastCall().andThrow(new ElasticsearchException(""));
-
-        control.replay();
+        //Given
+        Mailbox mailbox = mock(Mailbox.class);
+        when(mailbox.getMailboxId())
+            .thenReturn(MAILBOX_ID);
+   
+        doThrow(RuntimeException.class)
+            .when(indexer).deleteAllMatchingQuery(QueryBuilders.termQuery("mailboxId", "12"));
+
+        //When
         testee.deleteAll(session, mailbox);
-        control.verify();
+        
+        //Then
+        //No Exception
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
index 2b0a4de..7efb14a 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MessageToElasticSearchJsonTest.java
@@ -354,4 +354,32 @@ public class MessageToElasticSearchJsonTest {
             .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/nonTextual.json"), CHARSET));
     }
 
+    @Test
+    public void convertToJsonWithoutAttachmentShouldConvertEmailBoby() throws IOException {
+        // Given
+        MailboxMessage message = new SimpleMailboxMessage(MESSAGE_ID,
+            null,
+            SIZE,
+            BODY_START_OCTET,
+            new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/emailWithNonIndexableAttachment.eml"))),
+            new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(),
+            propertyBuilder,
+            MAILBOX_ID);
+        message.setModSeq(MOD_SEQ);
+        message.setUid(UID);
+
+        // When
+        MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson(
+                new DefaultTextExtractor(),
+                ZoneId.of("Europe/Paris"),
+                IndexAttachments.YES,
+                MessageSearchIndex.IndexMessageId.Required);
+        String convertToJsonWithoutAttachment = messageToElasticSearchJson.convertToJsonWithoutAttachment(message, ImmutableList.of(new MockMailboxSession("username").getUser()));
+
+        // Then
+        assertThatJson(convertToJsonWithoutAttachment)
+            .when(IGNORING_ARRAY_ORDER)
+            .when(IGNORING_VALUES)
+            .isEqualTo(IOUtils.toString(ClassLoader.getSystemResource("eml/emailWithNonIndexableAttachmentWithoutAttachment.json")));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[09/10] james-project git commit: MAILBOX-278 Ignore Error thrown by Tika to be able to parse the rest of the message

Posted by ad...@apache.org.
MAILBOX-278 Ignore Error thrown by Tika to be able to parse the rest of the message


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6c0947f6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6c0947f6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6c0947f6

Branch: refs/heads/master
Commit: 6c0947f6da8f6b8c188578acbe6edac7d588a1fa
Parents: 05df700
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Jan 31 15:08:09 2017 +0100
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Feb 7 16:15:23 2017 +0700

----------------------------------------------------------------------
 .../mailbox/elasticsearch/json/MimePart.java    |    2 +-
 .../json/IndexableMessageTest.java              |   24 +
 .../test/resources/eml/bodyMakeTikaToFail.eml   | 1272 ++++++++++++++++++
 3 files changed, 1297 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6c0947f6/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MimePart.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MimePart.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MimePart.java
index d2416a9..ee623cf 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MimePart.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/MimePart.java
@@ -147,7 +147,7 @@ public class MimePart {
                         bodyContent.get(),
                         computeContentType().orElse(null),
                         fileName.orElse(null)));
-                } catch (Exception e) {
+                } catch (Throwable e) {
                     LOGGER.warn("Failed parsing attachment", e);
                 }
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6c0947f6/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
index f5ff7fc..cf98e6e 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.tika.extractor.TikaTextExtractor;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -279,4 +280,27 @@ public class IndexableMessageTest {
         assertThat(indexableMessage.getText()).contains("first attachment content");
         assertThat(indexableMessage.getText()).contains("third attachment content");
     }
+
+    @Test
+    public void messageShouldBeIndexedEvenIfTikaParserThrowsAnError() throws Exception {
+        //Given
+        MailboxMessage mailboxMessage = mock(MailboxMessage.class);
+        TestId mailboxId = TestId.of(1);
+        when(mailboxMessage.getMailboxId())
+            .thenReturn(mailboxId);
+        when(mailboxMessage.getFullContent())
+            .thenReturn(new ByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/bodyMakeTikaToFail.eml"))));
+        when(mailboxMessage.createFlags())
+            .thenReturn(new Flags());
+        when(mailboxMessage.getUid())
+            .thenReturn(MESSAGE_UID);
+
+        // When
+        IndexableMessage indexableMessage = IndexableMessage.from(mailboxMessage, ImmutableList.of(new MockMailboxSession("username").getUser()),
+                new TikaTextExtractor(), ZoneId.of("Europe/Paris"), IndexAttachments.YES);
+
+        // Then
+        assertThat(indexableMessage.getText()).contains("subject should be parsed");
+    }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[04/10] james-project git commit: MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails

Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
new file mode 100644
index 0000000..deadebc
--- /dev/null
+++ b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachmentWithoutAttachment.json
@@ -0,0 +1,96 @@
+{
+   "isDeleted" : true,
+   "userFlags" : [
+      "security",
+      "debian"
+   ],
+   "cc" : [],
+   "modSeq" : 42,
+   "subject" : [
+      "test"
+   ],
+   "messageId":"184",
+   "mailboxId" : "18",
+   "date" : "2016-12-07T11:51:51+0100",
+   "size" : 25,
+   "properties" : [
+      {
+         "value" : "plain",
+         "namespace" : "http://james.apache.org/rfc2045/Content-Type",
+         "localName" : "type"
+      },
+      {
+         "localName" : "subtype",
+         "value" : "text",
+         "namespace" : "http://james.apache.org/rfc2045/Content-Type"
+      },
+      {
+         "localName" : "Content-Description",
+         "value" : "An e-mail",
+         "namespace" : "http://james.apache.org/rfc2045"
+      }
+   ],
+   "bcc" : [],
+   "attachments" : [],
+   "text" : "Laura ROYET laura.ro@linagora.com Laura ROYET laura.ro@linagora.com test <!DOCTYPE html>\n<html class=\"mozilla\" lang=\"en\"><head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    \n\n\n\n\n\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta name=\"application-name\" content=\"JIRA\" data-name=\"jira\" data-version=\"6.4.5\"><meta name=\"ajs-serverRenderedViewIssue\" content=\"true\">\n<meta name=\"ajs-hasCriteriaAutoUpdate\" content=\"true\">\n<meta name=\"ajs-viewissue-use-history-api\" content=\"false\">\n<meta name=\"ajs-viewissue-max-cache-size\" content=\"\">\n<meta name=\"ajs-autocomplete-enabled\" content=\"true\">\n<meta name=\"ajs-view-issue-trace-key\" content=\"jira.issue.refreshed\">\n<meta name=\"ajs-view-issue-psycho-key\" content=\"jira.psycho.issue.refreshed\">\n<meta name=\"ajs-view-issue-refreshed-cached-key\" content=\"jira.psycho.issue.refreshed.cached\">\n<meta name=\"ajs-retur
 n-to-search-trace-key\" content=\"jira.returned.to.search\">\n<meta name=\"ajs-return-to-search-psycho-key\" content=\"jira.psycho.returned.to.search\">\n<meta name=\"ajs-default-avatar-url\" content=\"https://ci.open-paas.org/jira/secure/useravatar?size=xsmall&amp;avatarId=10123\">\n<meta name=\"ajs-jira.issues.preferred.layout.key\" content=\"split-view\">\n<meta name=\"ajs-max-recent-searchers\" content=\"10\">\n<meta name=\"ajs-jira-base-url\" content=\"https://ci.open-paas.org/jira\">\n<meta name=\"ajs-dev-mode\" content=\"false\">\n<meta name=\"ajs-context-path\" content=\"/jira\">\n<meta name=\"ajs-version-number\" content=\"6.4.5\">\n<meta name=\"ajs-build-number\" content=\"64020\">\n<meta name=\"ajs-is-beta\" content=\"false\">\n<meta name=\"ajs-is-rc\" content=\"false\">\n<meta name=\"ajs-is-snapshot\" content=\"false\">\n<meta name=\"ajs-is-milestone\" content=\"false\">\n<meta name=\"ajs-remote-user\" content=\"scolson\">\n<meta name=\"ajs-remote-user-fullname\" content
 =\"Stephane COLSON\">\n<meta name=\"ajs-user-locale\" content=\"en_US\">\n<meta name=\"ajs-user-locale-group-separator\" content=\",\">\n<meta name=\"ajs-app-title\" content=\"OpenPaas-Linagora\">\n<meta name=\"ajs-keyboard-shortcuts-enabled\" content=\"true\">\n<meta name=\"ajs-keyboard-accesskey-modifier\" content=\"Alt+Shift\">\n<meta name=\"ajs-enabled-dark-features\" content=\"[&quot;com.atlassian.jira.projects.issuenavigator&quot;,&quot;com.atlassian.jira.projects.ProjectCentricNavigation.Switch&quot;,&quot;jira.plugin.devstatus.phasetwo.enabled&quot;,&quot;com.atlassian.jira.config.PDL&quot;,&quot;jira.frother.reporter.field&quot;,&quot;jira.plugin.devstatus.phasetwo&quot;,&quot;com.atlassian.jira.darkfeature.CommonHeader&quot;,&quot;app-switcher.new&quot;,&quot;frother.assignee.field&quot;,&quot;jira.issue.status.lozenge&quot;]\">\n<meta name=\"ajs-date-relativize\" content=\"true\">\n<meta name=\"ajs-date-time\" content=\"h:mm a\">\n<meta name=\"ajs-date-day\" content=\"EEE
 E h:mm a\">\n<meta name=\"ajs-date-dmy\" content=\"dd/MMM/yy\">\n<meta name=\"ajs-date-complete\" content=\"dd/MMM/yy h:mm a\">\n<meta name=\"ajs-in-admin-mode\" content=\"false\">\n<meta name=\"ajs-is-sysadmin\" content=\"true\">\n<meta name=\"ajs-is-admin\" content=\"true\">\n<meta name=\"ajs-outgoing-mail-enabled\" content=\"true\">\n<script type=\"text/javascript\">var AJS=AJS||{};AJS.debug=true;</script><meta name=\"ajs-admin-quicksearch-show\" content=\"true\">\n\n\n    \n<meta id=\"atlassian-token\" name=\"atlassian-token\" content=\"BE2F-79PL-H8QS-2STB|99bf85b35fda4cb18ee69314eef5a1392be0a3d3|lin\">\n\n\n\n<link rel=\"shortcut icon\" href=\"https://ci.open-paas.org/jira/s/en_US-j84vrp/64020/3/_/favicon.ico\">\n\n\n    \n\n\n<!--[if IE]><![endif]-->\n<script type=\"text/javascript\">var contextPath = '/jira';</script>\n<script>\nwindow.WRM=window.WRM||{};window.WRM._unparsedData=window.WRM._unparsedData||{};\nWRM._unparsedData[\"com.atlassian.plugins.atlassian-plugins-webreso
 urce-plugin:context-path.context-path\"]=\"\\\"/jira\\\"\";\nWRM._unparsedData[\"jira.webresources:dateFormatProvider.dateFormat\"]=\"{\\\"meridiem\\\":[\\\"AM\\\",\\\"PM\\\"],\\\"eras\\\":[\\\"BC\\\",\\\"AD\\\"],\\\"months\\\":[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],\\\"monthsShort\\\":[\\\"Jan\\\",\\\"Feb\\\",\\\"Mar\\\",\\\"Apr\\\",\\\"May\\\",\\\"Jun\\\",\\\"Jul\\\",\\\"Aug\\\",\\\"Sep\\\",\\\"Oct\\\",\\\"Nov\\\",\\\"Dec\\\"],\\\"weekdaysShort\\\":[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"],\\\"weekdays\\\":[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"]}\";\nWRM._unparsedData[\"com.atlassian.jira.jira-header-plugin:dismissedFlags.flags\"]=\"{\\\"dismissed\\\":[\\\"com.atlassian.jira.tzdetect.-36000000,-36000000\\\",\\\"com.atlass
 ian.jira.tzdetect.-18000000,-14400000\\\",\\\"com.atlassian.jira.tzdetect.-28800000,-25200000\\\"]}\";\nWRM._unparsedData[\"com.atlassian.jira.jira-header-plugin:newsletter-signup-tip.newsletterSignup\"]=\"{\\\"formUrl\\\":\\\"https://www.atlassian.com/apis/exact-target/{0}/subscribe?mailingListId=1239131\\\",\\\"userEmail\\\":\\\"scolson@linagora.com\\\",\\\"showNewsletterTip\\\":false}\";\nWRM._unparsedData[\"com.atlassian.jira.plugins.greenhopper-marketing-plugin:gh-advertising-resources.urls\"]=\"{\\\"hamlet\\\":\\\"https://hamlet.atlassian.com/\\\",\\\"lasso\\\":\\\"https://id.atlassian.com/\\\",\\\"mac\\\":\\\"https://my.atlassian.com\\\"}\";\nWRM._unparsedData[\"com.atlassian.jira.plugins.jira-admin-helper-plugin:notification-event-provider.notification-event-data\"]=\"[{\\\"id\\\":1,\\\"name\\\":\\\"Issue Created\\\",\\\"isDefault\\\":true},{\\\"id\\\":2,\\\"name\\\":\\\"Issue Updated\\\"},{\\\"id\\\":3,\\\"name\\\":\\\"Issue Assigned\\\"},{\\\"id\\\":4,\\\"name\\\":\\\"Issu
 e Resolved\\\"},{\\\"id\\\":5,\\\"name\\\":\\\"Issue Closed\\\"},{\\\"id\\\":6,\\\"name\\\":\\\"Issue Commented\\\"},{\\\"id\\\":14,\\\"name\\\":\\\"Issue Comment Edited\\\"},{\\\"id\\\":17,\\\"name\\\":\\\"Issue Comment Deleted\\\"},{\\\"id\\\":7,\\\"name\\\":\\\"Issue Reopened\\\"},{\\\"id\\\":8,\\\"name\\\":\\\"Issue Deleted\\\"},{\\\"id\\\":9,\\\"name\\\":\\\"Issue Moved\\\"},{\\\"id\\\":10,\\\"name\\\":\\\"Work Logged On Issue\\\"},{\\\"id\\\":11,\\\"name\\\":\\\"Work Started On Issue\\\"},{\\\"id\\\":12,\\\"name\\\":\\\"Work Stopped On Issue\\\"},{\\\"id\\\":15,\\\"name\\\":\\\"Issue Worklog Updated\\\"},{\\\"id\\\":16,\\\"name\\\":\\\"Issue Worklog Deleted\\\"},{\\\"id\\\":13,\\\"name\\\":\\\"Generic Event\\\"}]\";\nWRM._unparsedData[\"com.atlassian.jira.plugins.jira-admin-helper-plugin:permissions-provider.permissions-data\"]=\"[{\\\"permissions\\\":[{\\\"name\\\":\\\"Administer Projects\\\",\\\"id\\\":\\\"23\\\"},{\\\"name\\\":\\\"Browse Projects\\\",\\\"id\\\":\\\"10\\\"},
 {\\\"name\\\":\\\"View Development Tools\\\",\\\"id\\\":\\\"29\\\"},{\\\"name\\\":\\\"View Read-Only Workflow\\\",\\\"id\\\":\\\"45\\\"}],\\\"name\\\":\\\"Project Permissions\\\"},{\\\"permissions\\\":[{\\\"name\\\":\\\"Create Issues\\\",\\\"id\\\":\\\"11\\\"},{\\\"name\\\":\\\"Edit Issues\\\",\\\"id\\\":\\\"12\\\"},{\\\"name\\\":\\\"Transition Issues\\\",\\\"id\\\":\\\"46\\\"},{\\\"name\\\":\\\"Schedule Issues\\\",\\\"id\\\":\\\"28\\\"},{\\\"name\\\":\\\"Move Issues\\\",\\\"id\\\":\\\"25\\\"},{\\\"name\\\":\\\"Assign Issues\\\",\\\"id\\\":\\\"13\\\"},{\\\"name\\\":\\\"Assignable User\\\",\\\"id\\\":\\\"17\\\"},{\\\"name\\\":\\\"Resolve Issues\\\",\\\"id\\\":\\\"14\\\"},{\\\"name\\\":\\\"Close Issues\\\",\\\"id\\\":\\\"18\\\"},{\\\"name\\\":\\\"Modify Reporter\\\",\\\"id\\\":\\\"30\\\"},{\\\"name\\\":\\\"Delete Issues\\\",\\\"id\\\":\\\"16\\\"},{\\\"name\\\":\\\"Link Issues\\\",\\\"id\\\":\\\"21\\\"},{\\\"name\\\":\\\"Set Issue Security\\\",\\\"id\\\":\\\"26\\\"}],\\\"name\\\":\\\"I
 ssue Permissions\\\"},{\\\"permissions\\\":[{\\\"name\\\":\\\"View Voters and Watchers\\\",\\\"id\\\":\\\"31\\\"},{\\\"name\\\":\\\"Manage Watchers\\\",\\\"id\\\":\\\"32\\\"}],\\\"name\\\":\\\"Voters & Watchers Permissions\\\"},{\\\"permissions\\\":[{\\\"name\\\":\\\"Add Comments\\\",\\\"id\\\":\\\"15\\\"},{\\\"name\\\":\\\"Edit All Comments\\\",\\\"id\\\":\\\"34\\\"},{\\\"name\\\":\\\"Edit Own Comments\\\",\\\"id\\\":\\\"35\\\"},{\\\"name\\\":\\\"Delete All Comments\\\",\\\"id\\\":\\\"36\\\"},{\\\"name\\\":\\\"Delete Own Comments\\\",\\\"id\\\":\\\"37\\\"}],\\\"name\\\":\\\"Comments Permissions\\\"},{\\\"permissions\\\":[{\\\"name\\\":\\\"Create Attachments\\\",\\\"id\\\":\\\"19\\\"},{\\\"name\\\":\\\"Delete All Attachments\\\",\\\"id\\\":\\\"38\\\"},{\\\"name\\\":\\\"Delete Own Attachments\\\",\\\"id\\\":\\\"39\\\"}],\\\"name\\\":\\\"Attachments Permissions\\\"},{\\\"permissions\\\":[{\\\"name\\\":\\\"Work On Issues\\\",\\\"id\\\":\\\"20\\\"},{\\\"name\\\":\\\"Edit Own Worklogs\\\
 ",\\\"id\\\":\\\"40\\\"},{\\\"name\\\":\\\"Edit All Worklogs\\\",\\\"id\\\":\\\"41\\\"},{\\\"name\\\":\\\"Delete Own Worklogs\\\",\\\"id\\\":\\\"42\\\"},{\\\"name\\\":\\\"Delete All Worklogs\\\",\\\"id\\\":\\\"43\\\"}],\\\"name\\\":\\\"Time Tracking Permissions\\\"}]\";\nWRM._unparsedData[\"com.atlassian.jira.plugins.jira-dnd-attachment-plugin:drag-and-drop-attachment-javascript.upload-limit\"]=\"\\\"10485760\\\"\";\nWRM._unparsedData[\"com.atlassian.plugins.atlassian-plugins-webresource-rest:web-resource-manager.resource-base-url-pattern\"]=\"\\\"(?:/jira(?:/s/.*?/_)?/download)\\\"\";\nWRM._unparsedData[\"com.atlassian.plugins.base-hipchat-integration-plugin:configure-integration-data.configure-integration\"]=\"{\\\"inviteEnabled\\\":false}\";\nWRM._unparsedData[\"com.atlassian.plugins.base-hipchat-integration-plugin:hipchat-installed-scopes.scopes\"]=\"{}\";\nWRM._unparsedData[\"com.atlassian.plugins.base-hipchat-integration-plugin:hipchat-user-link-support.user-link-context\"]=\"
 {\\\"userLinked\\\":false,\\\"userHasManageRoomsScope\\\":false,\\\"beginOauth\\\":\\\"https://ci.open-paas.org/jira/rest/hipchat/integration/latest/oauth2/begin\\\"}\";\nWRM._unparsedData[\"com.atlassian.plugins.base-hipchat-integration-plugin:integration-steps-resources.enable-invite\"]=\"{\\\"inviteToHipChatEnabled\\\":true,\\\"isInvitationsToGroupAllowedURI\\\":\\\"https://ci.open-paas.org/jira/rest/hipchat/integration/latest/groups/default/invitations-allowed\\\"}\";\nWRM._unparsedData[\"com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api.feature-data-provider\"]=\"true\";\nWRM._unparsedData[\"com.atlassian.plugins.browser.metrics.browser-metrics-plugin:browser-metrics.feature-data-provider-legacy\"]=\"true\";\nWRM._unparsedData[\"com.atlassian.plugins.helptips.jira-help-tips:common.JiraHelpTipData\"]=\"{\\\"dismissed\\\":[\\\"add.new.users\\\",\\\"automaticTransitionDevSummaryTooltip\\\",\\\"devstatus.cta.createbranch.tooltip\\\",\\\"hipchat.feature.discovery.tip\
 \\",\\\"notification-helper-helptip\\\",\\\"permission-helper-helptip\\\",\\\"sidebar-chaperone-collapse-tip\\\",\\\"sidebar-chaperone-disable-tip\\\",\\\"sidebar-chaperone-general-overview-tip\\\",\\\"split-view-intro\\\",\\\"view.all.issues\\\"],\\\"anonymous\\\":false}\";\nWRM._unparsedData[\"com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources.resource-uris\"]=\"{\\\"deployJava.html\\\":\\\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/deployJava.html\\\",\\\"clipboard.jar\\\":\\\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/clipboard.jar\\\",\\\"clipboard-legacy.jar\\\":\\\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/clipboard-legacy.jar\\\"}\";\n</script>\n<link type=\"te
 xt/css\" rel=\"stylesheet\" href=\"test_files/batch_002.css\" media=\"all\">\n<!--[if lte IE 9]>\n<link type=\"text/css\" rel=\"stylesheet\" href=\"/jira/s/4fc2450354ce7afde50f0e2acff5da33-CDN/en_US-j84vrp/64020/3/38/_/download/superbatch/css/batch.css?conditionalComment=lte+IE+9\" media=\"all\">\n<![endif]-->\n<link type=\"text/css\" rel=\"stylesheet\" href=\"test_files/batch.css\" media=\"all\">\n<link type=\"text/css\" rel=\"stylesheet\" href=\"test_files/com.css\" media=\"all\">\n<script type=\"text/javascript\" src=\"test_files/batch_002.js\"></script><style type=\"text/css\">:root #header + #content > #left > #rlblock_left,\n:root #content > #right > .dose > .dosesingle,\n:root #content > #center > .dose > .dosesingle\n{display:none !important;}</style><style></style><style type=\"text/css\"></style>\n<script type=\"text/javascript\" src=\"test_files/batch.js\"></script><style type=\"text/css\"></style><style type=\"text/css\"></style><link type=\"text/css\" charset=\"ISO-8859
 -1\" href=\"test_files/common.css\" rel=\"stylesheet\">\n<script type=\"text/javascript\" src=\"test_files/com.js\"></script>\n<script type=\"text/javascript\" src=\"test_files/jira_002.js\"></script>\n<script type=\"text/javascript\" src=\"test_files/jira.js\"></script>\n\n<script type=\"text/javascript\" src=\"test_files/shortcuts.js\"></script>\n\n\n\n    \n    \n    <meta name=\"decorator\" content=\"atl.general\">\n    <meta id=\"isNavigator\" name=\"isNavigator\" content=\"true\">\n    <meta name=\"ajs-is-inline-edit-enabled\" content=\"true\">\n    <meta name=\"ajs-user.search.mode\" content=\"basic\">\n    <meta name=\"ajs-issue-search-help-title\" content=\"Searching for Issues\">\n    <meta name=\"ajs-issue-search-help-url\" content=\"https://docs.atlassian.com/jira/docs-064/Searching+for+Issues\">\n    <meta name=\"ajs-advanced-search-help-title\" content=\"Performing Advanced Searches\">\n    <meta name=\"ajs-advanced-search-help-url\" content=\"https://docs.atlassian.co
 m/jira/docs-064/Advanced+Searching\">\n                <meta name=\"ajs-remote-user-avatar-url\" content=\"https://ci.open-paas.org/jira/secure/useravatar?avatarId=10111\">\n    \n    \n\n\n\n\n\n\n<meta name=\"ajs-can-search-users\" content=\"true\">\n<meta name=\"ajs-can-edit-watchers\" content=\"true\">\n<meta name=\"ajs-default-avatar-url\" content=\"https://ci.open-paas.org/jira/secure/useravatar?size=xsmall&amp;avatarId=10123\">\n<meta name=\"ajs-issue-key\" content=\"OR-2349\">\n<meta name=\"ajs-server-view-issue-is-editable\" content=\"true\">\n\n<title>[OR-2349] Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated - OpenPaas-Linagora</title>\n<link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"https://ci.open-paas.org/jira/osd.jsp\" title=\"[OR-2349] Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated - OpenPaas-Linagora\">\n\n\n<style>@media print {#UNIQUE_ID-ghostery {display:none !impor
 tant}}</style></head>\n\n\n\n\n\n<body data-aui-version=\"5.7.27\" id=\"jira\" class=\"aui-layout aui-theme-default ka ajax-issue-search-and-view page-type-navigator navigator-issue-only\" data-version=\"6.4.5\">\n<div id=\"page\">\n    <header id=\"header\" role=\"banner\">\n        \n    \n        \n            \n        \n    \n\n\n\n\n\n<script>\n    AJS.$(function () {\n        var licenseBanner = require(\"jira/license-banner\");\n        licenseBanner.showLicenseBanner(\"\");\n        licenseBanner.showLicenseFlag(\"\");\n    });\n</script>\n\n\n\n\n\n\n\n        \n\n\n\n        \n\n\n\n<fieldset class=\"parameters hidden dont-default-focus\">\n    <input title=\"tzdetect.pref.tzid\" value=\"Europe/Paris\" type=\"hidden\">\n    <input title=\"tzdetect.pref.tzname\" value=\"(GMT+01:00) Paris\" type=\"hidden\">\n    <input title=\"tzdetect.pref.janOffset\" value=\"3600000\" type=\"hidden\">\n    <input title=\"tzdetect.pref.julyOffset\" value=\"7200000\" type=\"hidden\">\n</fie
 ldset>\n<nav data-aui-responsive=\"true\" class=\"aui-header aui-dropdown2-trigger-group\" role=\"navigation\"><div class=\"aui-header-inner\"><div class=\"aui-header-before\"><a class=\" aui-dropdown2-trigger app-switcher-trigger __skate\" aria-owns=\"app-switcher\" aria-controls=\"app-switcher\" aria-haspopup=\"true\" data-aui-trigger=\"\" href=\"#app-switcher\"><span class=\"aui-icon aui-icon-small aui-iconfont-appswitcher\">Linked Applications</span></a><div id=\"app-switcher\" class=\"aui-dropdown2 aui-style-default\"><div class=\"aui-dropdown2-section\"><ul class=\"nav-links\"><li class=\"nav-link nav-link-local\"><a href=\"https://ci.open-paas.org/jira/\" class=\"aui-dropdown2-radio aui-dropdown2-checked\" title=\"https://ci.open-paas.org/jira/\"><span class=\"nav-link-label\">OpenPaas-Linagora</span></a></li><li class=\"nav-link\"><a href=\"https://ci.open-paas.org/stash/\" class=\"aui-dropdown2-radio \" title=\"https://ci.open-paas.org/stash/\"><span class=\"nav-link-label\
 ">Stash - OpenPaas</span></a></li><li class=\"nav-link\"><a href=\"https://ci.open-paas.org/jenkins/\" class=\"aui-dropdown2-radio \" title=\"https://ci.open-paas.org/jenkins/\"><span class=\"nav-link-label\">Jenkins - OpenPaas</span></a></li></ul></div><div class=\"aui-dropdown2-section\"><ul class=\"nav-links\"><li><a class=\"nav-link-edit-wrapper\" href=\"https://ci.open-paas.org/jira/plugins/servlet/customize-application-navigator\"><span class=\"nav-link-edit\">Configure\u2026</span></a></li></ul></div></div><script>\n            (function (NL) {\n                var initialise = function () {\n                    // For some milestones of AUI, the atlassian soy namespace was renamed to aui. Handle that here by ensuring that window.atlassian is defined.\n                    window.atlassian = window.atlassian || window.aui;\n                    new NL.AppSwitcher({\n                        dropdownContents: '#app-switcher'\n                    });\n                };\n            
     if (NL.AppSwitcher) {\n                    initialise();\n                } else {\n                    NL.onInit = initialise;\n                }\n            }(window.NL = (window.NL || {})));\n            window.NL.environment = {isUserAdmin: true, isAppSuggestionAvailable: false};</script></div><div class=\"aui-header-primary\"><h1 id=\"logo\" class=\"aui-header-logo aui-header-logo-custom\"><a href=\"https://ci.open-paas.org/jira/secure/MyJiraHome.jspa\"><img data-aui-responsive-header-index=\"0\" src=\"test_files/icon-jira-logo.png\" alt=\"OpenPaas-Linagora\"></a></h1><ul style=\"width: auto;\" class=\"aui-nav __skate\">\n\n\n\n\n<li><a class=\"aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger \" href=\"https://ci.open-paas.org/jira/secure/Dashboard.jspa\" id=\"home_link\" accesskey=\"d\" title=\"View and manage your dashboards\" aria-haspopup=\"true\" aria-owns=\"home_link-content\">Dashboards</a><div id=\"home_link-content\" class=\"aui-dropdown2 aui-s
 tyle-default\" data-aui-dropdown2-ajax-key=\"home_link\"></div></li><li><a class=\"aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger \" href=\"https://ci.open-paas.org/jira/browse/OR\" id=\"browse_link\" accesskey=\"p\" title=\"View recent projects and browse a list of projects\" aria-haspopup=\"true\" aria-owns=\"browse_link-content\">Projects</a><div id=\"browse_link-content\" class=\"aui-dropdown2 aui-style-default\" data-aui-dropdown2-ajax-key=\"browse_link\"></div></li><li><a class=\"aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger \" href=\"https://ci.open-paas.org/jira/issues/\" id=\"find_link\" accesskey=\"i\" title=\"Search for issues and view recent issues\" aria-haspopup=\"true\" aria-owns=\"find_link-content\">Issues</a><div id=\"find_link-content\" class=\"aui-dropdown2 aui-style-default\" data-aui-dropdown2-ajax-key=\"find_link\"></div></li><li><a class=\"aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger \" href
 =\"https://ci.open-paas.org/jira/secure/GreenHopper.jspa\" id=\"greenhopper_menu\" title=\"Manage your project with JIRA Agile\" aria-haspopup=\"true\" aria-owns=\"greenhopper_menu-content\">Agile</a><div id=\"greenhopper_menu-content\" class=\"aui-dropdown2 aui-style-default\" data-aui-dropdown2-ajax-key=\"greenhopper_menu\"></div></li>\n<li style=\"display: none;\"><a id=\"aui-responsive-header-dropdown-trigger-0\" class=\" aui-dropdown2-trigger __skate\" aria-owns=\"aui-responsive-header-dropdown-content-0\" aria-controls=\"aui-responsive-header-dropdown-content-0\" aria-haspopup=\"true\" data-aui-trigger=\"\" href=\"#\">More<span class=\"icon aui-icon-dropdown\"></span></a><div id=\"aui-responsive-header-dropdown-content-0\" class=\"aui-dropdown2 aui-style-default\"><div class=\"aui-dropdown2-section\"><ul id=\"aui-responsive-header-dropdown-list-0\"></ul></div></div></li><li id=\"create-menu\"><a id=\"create_link\" class=\"aui-button aui-button-primary aui-style create-issue \"
  title=\"Create a new issue / bug / feature request / etc ( Type 'c' )\" href=\"https://ci.open-paas.org/jira/secure/CreateIssue%21default.jspa\" accesskey=\"c\">Create</a></li></ul></div><div class=\"aui-header-secondary\"><ul class=\"aui-nav __skate\"><li>\n    <form action=\"/jira/secure/QuickSearch.jspa\" method=\"get\" id=\"quicksearch\" class=\"aui-quicksearch dont-default-focus ajs-dirty-warning-exempt\">\n        <input id=\"quickSearchInput\" class=\"search\" title=\"Search ( Type '/' )\" placeholder=\"Search\" name=\"searchString\" accesskey=\"q\" type=\"text\">\n        <input class=\"hidden\" value=\"Search\" type=\"submit\">\n    </form>\n</li>\n\n\n\n    <li id=\"system-help-menu\">\n        <a class=\"aui-nav-link aui-dropdown2-trigger\" id=\"help_menu\" aria-haspopup=\"true\" aria-owns=\"system-help-menu-content\" href=\"https://docs.atlassian.com/jira/docs-064/JIRA+Documentation\" target=\"$textUtils.htmlEncode($rootHelpMenuItem.params.target)\" title=\"Help\"><span
  class=\"aui-icon aui-icon-small aui-iconfont-help\">Help</span></a>\n        <div id=\"system-help-menu-content\" class=\"aui-dropdown2 aui-style-default\">\n                            <div class=\"aui-dropdown2-section\">\n                                                                <ul id=\"jira-help\" class=\"aui-list-truncate\">\n                                                            <li>\n                                    <a id=\"view_help\" class=\"\" title=\"Goto the online documentation for JIRA\" href=\"https://docs.atlassian.com/jira/docs-064/JIRA+Documentation\" target=\"_blank\">Online Help</a>\n                                </li>\n                                                            <li>\n                                    <a id=\"gh_view_help\" class=\"\" title=\"Get help online for JIRA Agile\" href=\"http://docs.atlassian.com/agile/docs-067/JIRA+Agile+Documentation\" target=\"_blank\">JIRA Agile Help</a>\n                                </li>\n 
                                                            <li>\n                                    <a id=\"keyshortscuthelp\" class=\"\" title=\"Get more information about JIRA's Keyboard Shortcuts ( Type '?' )\" href=\"https://ci.open-paas.org/jira/secure/ViewKeyboardShortcuts%21default.jspa\" target=\"_blank\">Keyboard Shortcuts</a>\n                                </li>\n                                                            <li>\n                                    <a id=\"view_about\" class=\"\" title=\"Get more information about JIRA\" href=\"https://ci.open-paas.org/jira/secure/AboutPage.jspa\">About JIRA</a>\n                                </li>\n                                                            <li>\n                                    <a id=\"view_credits\" class=\"\" title=\"See who did what\" href=\"https://ci.open-paas.org/jira/secure/JiraCreditsPage%21default.jspa\" target=\"_blank\">JIRA Credits</a>\n                                </li>\n           
                                          </ul>\n                                    </div>\n                    </div>\n    </li>\n\n\n<li id=\"system-admin-menu\">\n    <a href=\"https://ci.open-paas.org/jira/secure/project/ViewProjects.jspa\" id=\"admin_menu\" class=\"aui-nav-link aui-dropdown2-trigger\" aria-haspopup=\"true\" aria-owns=\"system-admin-menu-content\" title=\"Administration\"><span class=\"aui-icon aui-icon-small aui-iconfont-configure\">Administration</span></a>\n    <div id=\"system-admin-menu-content\" class=\"aui-dropdown2 aui-style-default\">\n                    <div class=\"aui-dropdown2-section\">\n                <strong>JIRA administration</strong>\n                <ul class=\"aui-list-truncate\">\n                                            <li>\n                            <a href=\"https://ci.open-paas.org/jira/secure/project/ViewProjects.jspa\" class=\"aui-nav-link\" id=\"admin_project_menu\">Projects</a>\n                        </li>\n               
                              <li>\n                            <a href=\"https://ci.open-paas.org/jira/secure/admin/ViewIssueTypes.jspa\" class=\"aui-nav-link\" id=\"admin_issues_menu\">Issues</a>\n                        </li>\n                                            <li>\n                            <a href=\"https://ci.open-paas.org/jira/secure/admin/user/UserBrowser.jspa\" class=\"aui-nav-link\" id=\"admin_users_menu\">User management</a>\n                        </li>\n                                            <li>\n                            <a href=\"https://ci.open-paas.org/jira/secure/admin/ViewApplicationProperties.jspa\" class=\"aui-nav-link\" id=\"admin_system_menu\">System</a>\n                        </li>\n                                            <li>\n                            <a href=\"https://ci.open-paas.org/jira/plugins/servlet/upm/marketplace\" class=\"aui-nav-link\" id=\"admin_plugins_menu\">Add-ons</a>\n                        </li>\n              
                       </ul>\n            </div>\n            </div>\n</li>\n\n\n\n\n\n\n\n\n<li id=\"user-options\">\n            <a id=\"header-details-user-fullname\" class=\"aui-dropdown2-trigger\" aria-haspopup=\"true\" aria-owns=\"user-options-content\" data-username=\"scolson\" data-displayname=\"Stephane COLSON\" href=\"https://ci.open-paas.org/jira/secure/ViewProfile.jspa\" title=\"User profile for Stephane COLSON\">\n            <span class=\"aui-avatar aui-avatar-small\">\n                <span class=\"aui-avatar-inner\">\n                    <img src=\"test_files/useravatar.png\" alt=\"User profile for Stephane COLSON\">\n                </span>\n            </span>\n        </a>\n                <div id=\"user-options-content\" class=\"aui-dropdown2 aui-style-default\">\n                            <div class=\"aui-dropdown2-section\">\n                                                                <ul id=\"personal\" class=\"aui-list-truncate\">\n                      
                                                                           <li>\n                                        <a id=\"view_profile\" class=\"\" title=\"View and change your details and preferences\" href=\"https://ci.open-paas.org/jira/secure/ViewProfile.jspa\">Profile</a>\n                                    </li>\n                                                                                                                                <li>\n                                        <a id=\"upm-requests-link\" class=\"\" href=\"https://ci.open-paas.org/jira/plugins/servlet/upm/requests?source=header_user\">Atlassian Marketplace</a>\n                                    </li>\n                                                                                    </ul>\n                                    </div>\n                            <div class=\"aui-dropdown2-section\">\n                                            <strong>My JIRA Home</strong>\n                      
                                           <ul id=\"set_my_jira_home\" class=\"aui-list-truncate\">\n                                                            \n                                                                        <li>\n                                        <a id=\"set_my_jira_home_default\" class=\"aui-dropdown2-radio interactive checked    \" title=\"Set my JIRA Home to the Dashboard.\" href=\"https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.atlassian.jira.jira-my-home-plugin%3Aset_my_jira_home_dashboard&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\">Dashboard</a>\n                                    </li>\n                                                                                            \n                                                                        <li>\n                                        <a id=\"greenhopper-my-jira-home-set\" class=\"aui-dropdown2-radio interactive    \" ti
 tle=\"Set my JIRA Home to Agile.\" href=\"https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.pyxis.greenhopper.jira%3Agreenhopper-my-jira-home-set-51&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\">Agile</a>\n                                    </li>\n                                                                                            \n                                                                        <li>\n                                        <a id=\"set_my_jira_home_issuenav\" class=\"aui-dropdown2-radio interactive    \" title=\"Set my JIRA Home to the Issue Navigator.\" href=\"https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.atlassian.jira.jira-my-home-plugin%3Aset_my_jira_home_issue&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\">Issue Navigator</a>\n                                    </li>\n                                                          
                           </ul>\n                                    </div>\n                            <div class=\"aui-dropdown2-section\">\n                                                                <ul id=\"system\" class=\"aui-list-truncate\">\n                                                                                                <li>\n                                        <a class=\"project-centric-nav-user-option disable-project-centric-nav\" href=\"https://ci.open-paas.org/jira\">Disable new project navigation</a>\n                                    </li>\n                                                                                                                                <li>\n                                        <a id=\"log_out\" class=\"\" title=\"Log out and cancel any automatic login.\" href=\"https://ci.open-paas.org/jira/logout?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\">Log Out</a>\n                 
                    </li>\n                                                                                    </ul>\n                                    </div>\n                    </div>\n    </li>\n</ul></div></div><!-- .aui-header-inner--></nav><!-- .aui-header -->\n    </header>\n    \n\n\n\n    <section id=\"content\" role=\"main\">\n\n    \n\n    <div class=\"issue-container \">\n                                    <div id=\"issue-content\" class=\"issue-edit-form\">\n                    <header style=\"\" id=\"stalker\" class=\"issue-header js-stalker\">\n                        <div class=\"issue-header-content\"><header class=\"aui-page-header\"><div class=\"aui-page-header-inner\"><div class=\"aui-page-header-image\"><span id=\"10100\" class=\"aui-avatar aui-avatar-large aui-avatar-project jira-system-avatar\"><span class=\"aui-avatar-inner\"><img id=\"project-avatar\" alt=\"Uploaded image for project: 'OpenPaaS RSE'\" src=\"test_files/projectavatar.png\"></span></span></d
 iv><!-- .aui-page-header-image --><div class=\"aui-page-header-main\"><ol class=\"aui-nav aui-nav-breadcrumbs __skate\"><li><a id=\"project-name-val\" href=\"https://ci.open-paas.org/jira/browse/OR\">OpenPaaS RSE</a></li><li><a class=\"issue-link\" data-issue-key=\"OR-2349\" href=\"https://ci.open-paas.org/jira/browse/OR-2349\" id=\"key-val\" rel=\"16626\">OR-2349</a></li></ol><h1 title=\"Click to edit\" class=\"editable-field inactive\" id=\"summary-val\">Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated<span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></h1></div><!-- .aui-page-header-main --><div class=\"aui-page-header-actions\"><div id=\"issue-header-pager\"></div></div><!-- .aui-page-header-actions --></div><!-- .aui-page-header-inner --></header><!-- .aui-page-header --><div class=\"command-bar\"><div class=\"ops-cont\"><div class=\"ops-menus aui-toolbar\"><div class=\"toolbar-split toolbar-split-left\"><ul id=\"ops
 bar-edit-issue_container\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item\"><a id=\"edit-issue\" title=\" ( Type 'e' )\" class=\"toolbar-trigger issueaction-edit-issue\" href=\"https://ci.open-paas.org/jira/secure/EditIssue%21default.jspa?id=16626\"><span class=\"icon aui-icon aui-icon-small aui-iconfont-edit\"></span> <span class=\"trigger-label\">Edit</span></a></li></ul><ul id=\"opsbar-comment-issue_container\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item\"><a id=\"comment-issue\" title=\"Comment on this issue\" class=\"toolbar-trigger issueaction-comment-issue add-issue-comment inline-comment\" href=\"https://ci.open-paas.org/jira/secure/AddComment%21default.jspa?id=16626\"><span class=\"icon aui-icon aui-icon-small aui-iconfont-comment icon-comment\"></span> <span class=\"trigger-label\">Comment</span></a></li></ul><ul id=\"opsbar-opsbar-operations\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item\"><a id=\"assign-issue\" title=\
 " ( Type 'a' )\" class=\"toolbar-trigger issueaction-assign-issue\" href=\"https://ci.open-paas.org/jira/secure/AssignIssue%21default.jspa?id=16626\"><span class=\"trigger-label\">Assign</span></a></li><li class=\"toolbar-item toolbar-dropdown\"><div><a href=\"#\" id=\"opsbar-operations_more\" data-hide-on-scroll=\".split-view .issue-container\" data-contain-to-window=\"true\" class=\"toolbar-trigger  js-default-dropdown\"><span class=\"dropdown-text\">More</span><span class=\"icon drop-menu\"></span></a><div class=\"aui-list hidden\"><ul class=\"aui-list-section aui-first\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/GHGoToBoard.jspa?issueId=16626\" class=\"aui-list-item-link issueaction-greenhopper-rapidboard-operation js-rapidboard-operation-issue\" title=\"View this issue on an Agile board\" id=\"greenhopper-rapidboard-operation\"><span class=\"trigger-label\">Agile Board</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org
 /jira/secure/RankTop.jspa?issueId=16626\" class=\"aui-list-item-link issueaction-greenhopper-rank-top-operation\" id=\"greenhopper-rank-top-operation\"><span class=\"trigger-label\">Rank to Top</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/RankBottom.jspa?issueId=16626\" class=\"aui-list-item-link issueaction-greenhopper-rank-bottom-operation\" id=\"greenhopper-rank-bottom-operation\"><span class=\"trigger-label\">Rank to Bottom</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/CreateWorklog%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-log-work\" title=\"Log work against this issue\" id=\"log-work\"><span class=\"trigger-label\">Log Work</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/AttachFile%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-attach-fi
 le\" title=\"Attach one or more files to this issue\" id=\"attach-file\"><span class=\"trigger-label\">Attach Files</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/ShowAttachScreenshotFormAction%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-attach-screenshot-html5\" id=\"attach-screenshot-html5\"><span class=\"trigger-label\">Attach Screenshot</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/editDrawioDiagram.jspa?issueKey=OR-2349\" class=\"aui-list-item-link\" id=\"com.mxgraph.jira.plugins.drawio:drawio-add-menu-item\"><span class=\"trigger-label\">Add Drawio Diagram</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/ViewVoters%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-view-voters\" title=\"View voters for this issue\" id=\"view-voters\"><span class=\"trigger-label\">Voters</span></a><
 /li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/VoteOrWatchIssue.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin&amp;id=16626&amp;watch=unwatch\" class=\"aui-list-item-link issueaction-unwatch-issue\" title=\"Stop watching this issue\" id=\"toggle-watch-issue\"><span class=\"trigger-label\">Stop Watching</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/ManageWatchers%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-manage-watchers\" title=\"Manage the watchers of this issue\" id=\"manage-watchers\"><span class=\"trigger-label\">Watchers</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/CreateSubTaskIssue%21default.jspa?parentIssueId=16626\" class=\"aui-list-item-link issueaction-create-subtask\" title=\"Create sub-task for this issue\" id=\"create-subtask\"><span class=\"trigger-label\"
 >Create Sub-Task</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/ConvertIssue.jspa?id=16626\" class=\"aui-list-item-link issueaction-issue-to-subtask\" title=\"Convert this issue to sub-task\" id=\"issue-to-subtask\"><span class=\"trigger-label\">Convert to Sub-Task</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"#devstatus.cta.createbranch\" class=\"aui-list-item-link devstatus-cta-link\" id=\"cta-create-branch\"><span class=\"trigger-label\">Create branch</span></a></li></ul><ul class=\"aui-list-section\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/MoveIssue%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-move-issue\" title=\"Move this issue to another project or issue type.\" id=\"move-issue\"><span class=\"trigger-label\">Move</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/LinkJiraIssue%21default.jspa?id=166
 26\" class=\"aui-list-item-link issueaction-link-issue\" title=\"Link this issue to another issue or item\" id=\"link-issue\"><span class=\"trigger-label\">Link</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/CloneIssueDetails%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-clone-issue\" title=\"Clone this issue\" id=\"clone-issue\"><span class=\"trigger-label\">Clone</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/EditLabels%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-edit-labels\" title=\" ( Type 'l' )\" id=\"edit-labels\"><span class=\"trigger-label\">Labels</span></a></li></ul><ul class=\"aui-list-section aui-last\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/DeleteIssue%21default.jspa?id=16626\" class=\"aui-list-item-link issueaction-delete-issue\" title=\"Delete this issue\" id=\"delete-issue\"><span class=\"trigger-label\">De
 lete</span></a></li></ul></div></div></li></ul><ul id=\"opsbar-opsbar-transitions\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item\"><a id=\"action_id_301\" class=\"toolbar-trigger issueaction-workflow-transition\" href=\"https://ci.open-paas.org/jira/secure/WorkflowUIDispatcher.jspa?id=16626&amp;action=301&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\"><span class=\"trigger-label\">Stop Progress</span></a></li><li class=\"toolbar-item\"><a id=\"action_id_5\" class=\"toolbar-trigger issueaction-workflow-transition\" href=\"https://ci.open-paas.org/jira/secure/WorkflowUIDispatcher.jspa?id=16626&amp;action=5&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\"><span class=\"trigger-label\">Resolve Issue</span></a></li><li class=\"toolbar-item\"><a id=\"action_id_2\" class=\"toolbar-trigger issueaction-workflow-transition\" href=\"https://ci.open-paas.org/jira/secure/WorkflowUIDispatcher.jspa?id=16626
 &amp;action=2&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\"><span class=\"trigger-label\">Close Issue</span></a></li></ul><ul id=\"opsbar-opsbar-admin\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item toolbar-dropdown\"><div><a href=\"#\" id=\"opsbar-admin_more\" data-hide-on-scroll=\".split-view .issue-container\" data-contain-to-window=\"true\" class=\"toolbar-trigger  js-default-dropdown\"><span class=\"dropdown-text\">Admin</span><span class=\"icon drop-menu\"></span></a><div class=\"aui-list hidden\"><ul class=\"aui-list-section aui-first\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/secure/admin/ViewCustomFields.jspa\" class=\"aui-list-item-link issueaction-fields-add\" title=\"Add a field and to the current issue's screens.\" id=\"com.atlassian.jira.jira-project-config-plugin:add-custom-field\"><span class=\"trigger-label\">Add field</span></a></li></ul><ul class=\"aui-list-section aui-last\"><li cl
 ass=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/notimportant\" class=\"aui-list-item-link whereismycf-trigger\" title=\"Where is my field?\" id=\"jira-operations-whereismycf-trigger\"><span class=\"trigger-label\">Where is my field?</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/notimportant\" class=\"aui-list-item-link permissionhelper-trigger\" title=\"Discover why a user does or does not have certain permissions\" id=\"jira-operations-permissionhelper-trigger\"><span class=\"trigger-label\">Permission Helper</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/notimportant\" class=\"aui-list-item-link notificationhelper-trigger\" title=\"Find out why users receive, or do not receive notifications for this issue\" id=\"jira-operations-notificationhelper-trigger\"><span class=\"trigger-label\">Notification Helper</span></a></li></ul></div></div></li></ul></div><div class=\"toolbar-split toolbar-split-ri
 ght\"><ul id=\"opsbar-jira.issue.tools\" class=\"toolbar-group pluggable-ops\"><li class=\"toolbar-item\"><a original-title=\"Share this issue by emailing other users\" id=\"jira-share-trigger\" class=\"toolbar-trigger viewissue-share\" href=\"https://ci.open-paas.org/jira\"><span class=\"icon aui-icon aui-icon-small aui-iconfont-share\"></span> <span class=\"trigger-label\"></span></a></li><li class=\"toolbar-item toolbar-dropdown\"><div><a original-title=\"Export this issue in another format\" href=\"#\" id=\"viewissue-export\" data-hide-on-scroll=\".split-view .issue-container\" data-contain-to-window=\"true\" class=\"toolbar-trigger  js-default-dropdown\"><span class=\"icon icon-default aui-icon aui-icon-small aui-iconfont-export\"></span> <span class=\"dropdown-text\">Export</span><span class=\"icon drop-menu\"></span></a><div class=\"aui-list hidden\"><ul class=\"aui-list-section aui-first aui-last\"><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/si/jira.i
 ssueviews:issue-xml/OR-2349/OR-2349.xml\" class=\"aui-list-item-link\" id=\"jira.issueviews:issue-xml\"><span class=\"trigger-label\">XML</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/si/jira.issueviews:issue-word/OR-2349/OR-2349.doc\" class=\"aui-list-item-link\" id=\"jira.issueviews:issue-word\"><span class=\"trigger-label\">Word</span></a></li><li class=\"aui-list-item\"><a href=\"https://ci.open-paas.org/jira/si/jira.issueviews:issue-html/OR-2349/OR-2349.html\" class=\"aui-list-item-link\" id=\"jira.issueviews:issue-html\"><span class=\"trigger-label\">Printable</span></a></li></ul></div></div></li></ul></div></div></div></div></div>\n                    </header>\n                    <div class=\"issue-body-content\">\n                        <div class=\"aui-group issue-body\"><div class=\"aui-item issue-main-column\"><div id=\"details-module\" class=\"module toggle-wrap\"><div id=\"details-module_heading\" class=\"mod-header\"><ul class=\"
 ops\"></ul><h2 class=\"toggle-title\">Details</h2></div><div class=\"mod-content\">\n\n\n\n\n<ul id=\"issuedetails\" class=\"property-list two-cols\">\n    <li class=\"item\">\n        <div class=\"wrap\">\n            <strong class=\"name\">Type:</strong>\n            <span title=\"Click to edit\" id=\"type-val\" class=\"value editable-field inactive\">\n                                <img alt=\"\" src=\"test_files/bug.png\" title=\"Bug - A problem which impairs or prevents the functions of the product.\" height=\"16\" width=\"16\"> Bug\n            <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n        </div>\n    </li>\n    <li class=\"item item-right\">\n        <div class=\"wrap\">\n            <strong class=\"name\">Status:</strong>\n            <span id=\"status-val\" class=\"value\">\n                                <span original-title=\"\" class=\" jira-issue-status-lozenge aui-lozenge jira-issue-status-lozenge-yellow jira-issue-sta
 tus-lozenge-indeterminate jira-issue-status-lozenge-max-width-medium\" data-tooltip=\"&lt;span class=&quot;jira-issue-status-tooltip-title&quot;&gt;Progressing&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;jira-issue-status-tooltip-desc&quot;&gt;This issue is being actively worked on at the moment by the assignee.&lt;/span&gt;\">Progressing</span>            </span>\n                            <span class=\"status-view\">(<a class=\"issueaction-viewworkflow new-workflow-designer\" href=\"https://ci.open-paas.org/jira/browse/OR-2349?workflowName=jira&amp;stepId=3\">View Workflow</a>)</span>\n                    </div>\n    </li>\n            <li class=\"item\">\n            <div class=\"wrap\">\n                <strong class=\"name\">Priority:</strong>\n                <span title=\"Click to edit\" id=\"priority-val\" class=\"value editable-field inactive\">\n                                        <img alt=\"\" src=\"test_files/major.png\" title=\"Major - Major loss of function.\" hei
 ght=\"16\" width=\"16\"> Major\n                <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n            </div>\n        </li>\n                                <li class=\"item item-right\">\n            <div class=\"wrap\">\n                <strong class=\"name\">Resolution:</strong>\n                <span id=\"resolution-val\" class=\"value unresolved\">\n                                    Unresolved\n                                </span>\n            </div>\n        </li>\n                <li class=\"item\">\n            <div class=\"wrap\">\n                <strong class=\"name\">Affects Version/s:</strong>\n                <span title=\"Click to edit\" id=\"versions-val\" class=\"value editable-field inactive\">\n                                            None\n                                    <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n            </div>\n        </li>\n                
 <li class=\"item item-right\">\n            <div class=\"wrap\">\n                <strong class=\"name\">Fix Version/s:</strong>\n                <span title=\"Click to edit\" id=\"fixfor-val\" class=\"value editable-field inactive\">\n                                            None\n                                    <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n            </div>\n        </li>\n                <li class=\"item\">\n            <div class=\"wrap\">\n                <strong class=\"name\">Component/s:</strong>\n                <span title=\"Click to edit\" id=\"components-val\" class=\"value editable-field inactive\">\n                                            None\n                                    <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n            </div>\n        </li>\n                    <li class=\"item full-width\">\n            <div class=\"wrap\" id=\"wrap-labels\"
 >\n                <strong class=\"name\">Labels:</strong>\n                    <div title=\"Click to edit\" class=\"labels-wrap value editable-field inactive\">\n            <span class=\"labels\" id=\"labels-16626-value\">None</span>\n                                <a title=\"Follow link\" class=\"aui-icon aui-icon-small aui-iconfont-edit edit-labels\" id=\"edit-labels-16626-labels\" href=\"https://ci.open-paas.org/jira/secure/EditLabels%21default.jspa?id=16626&amp;noLink=false\"><span>Labels</span></a>\n                <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></div>\n            </div>\n        </li>\n        </ul>\n\n<div id=\"customfieldmodule\">\n    <div role=\"application\" class=\"aui-tabs horizontal-tabs\" id=\"customfield-tabs\">\n                    <div aria-hidden=\"false\" role=\"tabpanel\" id=\"customfield-panel-1\" class=\"tabs-pane active-pane\">\n                        <ul class=\"property-list\">\n                           
                      <li id=\"rowForcustomfield_10004\" class=\"item\">\n                        <div class=\"wrap\">\n                            <strong title=\"Rank (Obsolete)\" class=\"name\">Rank (Obsolete):</strong>\n                            <div id=\"customfield_10004-val\" class=\"value type-gh-global-rank\" data-fieldtype=\"gh-global-rank\" data-fieldtypecompletekey=\"com.pyxis.greenhopper.jira:gh-global-rank\">\n                                      9223372036854775807\n  \n                            </div>\n                        </div>\n                    </li>\n                                                                <li id=\"rowForcustomfield_10201\" class=\"item\">\n                        <div class=\"wrap\">\n                            <strong title=\"Acceptance Criteria\" class=\"name\">Acceptance Criteria:</strong>\n                            <div title=\"Click to edit\" id=\"customfield_10201-val\" class=\"value type-checklist editable-field inacti
 ve\" data-fieldtype=\"checklist\" data-fieldtypecompletekey=\"com.okapya.jira.checklist:checklist\">\n                                    <div id=\"o-checklist-view-10201\" class=\"o-checklist\">\n        <div style=\"max-width: 800px;\">\n                           <div class=\"o-checklist-header\"><div><span class=\"o-icon-check\"></span>0/1<div class=\"o-view-actions o-pull-right\"><a title=\"Follow link\" class=\"o-checked-filter\" href=\"#\"><span class=\"o-hide\">Hide checked</span><span class=\"o-show\">Show checked</span></a></div></div></div>\n                                        <div class=\"o-checklist-items o-read-only\"><div class=\"o-checklist-item\"><div class=\"o-checkbox\"><span class=\"o-icon-ok-1\"></span></div><div class=\"o-checklist-item-details\"><p>Tested</p></div></div></div>\n                <div class=\"o-checklist-items-collapsible o-read-only\"></div>\n                <a title=\"Follow link\" class=\"o-show-items o-show-all\">\n                    <sp
 an class=\"o-more\"><span class=\"o-icon-down-open\"></span>show more</span>\n                    <span class=\"o-less\"><span class=\"o-icon-up-open\"></span>show less</span>\n                </a>\n                    </div>\n    </div>\n    <form id=\"parameterContainer\">\n        <fieldset class=\"hidden parameters\">\n            <input title=\"okapya.close\" value=\"Close\" type=\"hidden\">\n            <input title=\"okapya.import.error\" value=\"Checklist believes that you are trying to import data to recreate items from a different list and found the following error:\" type=\"hidden\">\n        </fieldset>\n    </form>\n\n                            <script>\n            if (!okapya.checklists.hasOwnProperty(\"o-checklist-view-10201\")) {\n                okapya.checklists[\"o-checklist-view-10201\"] = okapya.createChecklistView({\"id\" : \"10201\", \"customfieldId\": \"customfield_10201\", \"parameters\": {\"strikeThrough\":true,\"showMoreCount\":2,\"discretionaryOptionIds
 \":[],\"emphasizeMandatory\":false,\"version\":1,\"reporterCanEdit\":true,\"showStatusMenu\":false,\"editRoleIds\":[]}}, [{\"checked\":false,\"name\":\"Tested\",\"mandatory\":true,\"rank\":0,\"optionId\":10100,\"version\":\"3.0\",\"id\":10100,\"statusId\":\"none\"}]);\n            } else {\n                okapya.checklists[\"o-checklist-view-10201\"].registerData([{\"checked\":false,\"name\":\"Tested\",\"mandatory\":true,\"rank\":0,\"optionId\":10100,\"version\":\"3.0\",\"id\":10100,\"statusId\":\"none\"}]);\n            }\n        </script>\n        <input id=\"o-checklist-view-10201-data\" value=\"[{&quot;checked&quot;:false,&quot;name&quot;:&quot;Tested&quot;,&quot;mandatory&quot;:true,&quot;rank&quot;:0,&quot;optionId&quot;:10100,&quot;version&quot;:&quot;3.0&quot;,&quot;id&quot;:10100,&quot;statusId&quot;:&quot;none&quot;}]\" hidden=\"\">\n    \n                            <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></div>\n                   
      </div>\n                    </li>\n                                        </ul>\n        </div>\n        </div></div>\n</div></div><div id=\"descriptionmodule\" class=\"module toggle-wrap\"><div id=\"descriptionmodule_heading\" class=\"mod-header\"><ul class=\"ops\"></ul><h2 class=\"toggle-title\">Description</h2></div><div class=\"mod-content\"><div title=\"Click to edit\" id=\"description-val\" class=\"field-ignore-highlight editable-field inactive\">\n    <div class=\"user-content-block\">\n                    <div class=\"code panel\" style=\"border-width: 1px;\"><div class=\"codeContent panelContent\">\n<pre class=\"code-java\">               {\n                    <span class=\"code-quote\">\"name\"</span> : <span class=\"code-quote\">\"uploadUrl\"</span>,\n                    <span class=\"code-quote\">\"value\"</span> : <span class=\"code-quote\">\"http:<span class=\"code-comment\">//10.69.0.163:1080/jmap/upload\"</span>,\n</span>                    <span class=\"code-
 quote\">\"_id\"</span> : ObjectId(<span class=\"code-quote\">\"5785f85cd7f4033c00fc606d\"</span>)\n                }, \n                {\n                    <span class=\"code-quote\">\"name\"</span> : <span class=\"code-quote\">\"downloadUrl\"</span>,\n                    <span class=\"code-quote\">\"value\"</span> : <span class=\"code-quote\">\"http:<span class=\"code-comment\">//10.69.0.163:1080/jmap/download\"</span>,\n</span>                    <span class=\"code-quote\">\"_id\"</span> : ObjectId(<span class=\"code-quote\">\"5785f85cd7f4033c00fc606c\"</span>)\n                }, \n</pre>\n</div></div>\n\n<p>should be replaced with </p>\n<div class=\"code panel\" style=\"border-width: 1px;\"><div class=\"codeContent panelContent\">\n<pre class=\"code-java\">              {\n                    <span class=\"code-quote\">\"name\"</span> : <span class=\"code-quote\">\"uploadUrl\"</span>,\n                    <span class=\"code-quote\">\"value\"</span> : <span class=\"code-quote\
 ">\"http:<span class=\"code-comment\">//10.69.0.163:1080/upload\"</span>,\n</span>                    <span class=\"code-quote\">\"_id\"</span> : ObjectId(<span class=\"code-quote\">\"5785f85cd7f4033c00fc606d\"</span>)\n                }, \n                {\n                    <span class=\"code-quote\">\"name\"</span> : <span class=\"code-quote\">\"downloadUrl\"</span>,\n                    <span class=\"code-quote\">\"value\"</span> : <span class=\"code-quote\">\"http:<span class=\"code-comment\">//10.69.0.163:1080/download\"</span>,\n</span>                    <span class=\"code-quote\">\"_id\"</span> : ObjectId(<span class=\"code-quote\">\"5785f85cd7f4033c00fc606c\"</span>)\n                }, \n               {\n                   <span class=\"code-quote\">\"name\"</span> : <span class=\"code-quote\">\"composer.attachments\"</span>,\n                    <span class=\"code-quote\">\"value\"</span> : <span class=\"code-keyword\">true</span>\n               }\n\n</pre>\n</div><
 /div>\n            </div>\n<span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></div>\n</div></div><div id=\"activitymodule\" class=\"module toggle-wrap\"><div id=\"activitymodule_heading\" class=\"mod-header\"><ul class=\"ops\"></ul><h2 class=\"toggle-title\">Activity</h2></div><div class=\"mod-content\">\n\n\n\n\n\n\n\n\n\n\n    <div class=\"tabwrap tabs2\">\n\n        <ul id=\"issue-tabs\" class=\"tabs horizontal\">\n                                \n            <li data-id=\"all-tabpanel\" data-key=\"com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel\" data-label=\"All\" data-href=\"/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel\">\n                            <a class=\"ajax-activity-content\" id=\"all-tabpanel\" href=\"https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel\"><strong>All</strong></a>\n                        </li>\n                
                 \n            <li class=\"active\" id=\"comment-tabpanel\" data-id=\"comment-tabpanel\" data-key=\"com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel\" data-label=\"Comments\" data-href=\"/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel\">\n                            <strong tabindex=\"0\">Comments</strong>\n                        </li>\n                                \n            <li data-id=\"worklog-tabpanel\" data-key=\"com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel\" data-label=\"Work Log\" data-href=\"/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel\">\n                            <a class=\"ajax-activity-content\" id=\"worklog-tabpanel\" href=\"https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel\"><strong>Work Log</strong></a>\n                        </li>\n                      
           \n            <li data-id=\"changehistory-tabpanel\" data-key=\"com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel\" data-label=\"History\" data-href=\"/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel\">\n                            <a class=\"ajax-activity-content\" id=\"changehistory-tabpanel\" href=\"https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel\"><strong>History</strong></a>\n                        </li>\n                                \n            <li data-id=\"activity-stream-issue-tab\" data-key=\"com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab\" data-label=\"Activity\" data-href=\"/jira/browse/OR-2349?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab\">\n                            <a class=\"ajax-activity-content\" id=\"activity-stream-issue-tab\" href=\"https://ci.open-paas.org
 /jira/browse/OR-2349?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab\"><strong>Activity</strong></a>\n                        </li>\n                </ul>\n\n            </div>\n    <div class=\"issuePanelWrapper\">\n        <div class=\"issuePanelProgress\"></div>\n        <div class=\"issuePanelContainer\" id=\"issue_actions_container\">\n                                    <div class=\"message-container\">\n    There are no comments yet on this issue.\n</div>                             </div>\n    </div>\n</div></div><div id=\"addcomment\" class=\"module\">\n    <div id=\"addcomment\" class=\"module\">\n    <div class=\"mod-content\">\n        <form action=\"/jira/secure/AddComment.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin\" class=\"aui top-label ajs-dirty-warning-exempt\" id=\"issue-comment-add\" method=\"post\">\n            <div class=\"form-body\">\n                <div class=\"hidden\">\n                    
 <input name=\"atl_token\" value=\"BE2F-79PL-H8QS-2STB|99bf85b35fda4cb18ee69314eef5a1392be0a3d3|lin\" type=\"hidden\">\n                    <input name=\"id\" value=\"16626\" type=\"hidden\">\n                </div>\n\n                \n\n\n    \n            \n                \n    \n    \n                            <div class=\"field-group aui-field-wikiedit comment-input\">\n                                                                        <label for=\"comment\">Comment</label>\n                \n<div class=\"wiki-edit\">\n    <div id=\"wiki-edit-dropdown2-text-style-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-dropdown\"><div class=\"aui-dropdown2-section\"><ul class=\"aui-list-truncate\"><li><a original-title=\"Paragraph\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"paragraph\">Paragraph</a></li><li><a original-title=\"Heading 1\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h1\" data-operation=\"h1\">Heading 1</a></li><li><a or
 iginal-title=\"Heading 2\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h2\" data-operation=\"h2\">Heading 2</a></li><li><a original-title=\"Heading 3\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h3\" data-operation=\"h3\">Heading 3</a></li><li><a original-title=\"Heading 4\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h4\" data-operation=\"h4\">Heading 4</a></li><li><a original-title=\"Heading 5\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h5\" data-operation=\"h5\">Heading 5</a></li><li><a original-title=\"Heading 6\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-h6\" data-operation=\"h6\">Heading 6</a></li><li><a original-title=\"Preformatted\" href=\"#\" class=\"wiki-edit-operation wiki-edit-operation-monospace\" data-operation=\"monospace\">Preformatted</a></li><li><a original-title=\"Paragraph quote\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"paragraph-quote\">Paragraph quote</a></li><li>
 <a original-title=\"Block quote\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"block-quote\">Block quote</a></li></ul></div></div><div id=\"wiki-edit-dropdown2-more-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-dropdown\"><div class=\"aui-dropdown2-section\"><ul class=\"aui-list-truncate\"><li><a original-title=\"Strikethrough (Ctrl+Shift+S)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"delete\" data-shortcut=\"ctrl+shift+s, command+shift+s\">Strikethrough</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"superscript\">Superscript</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"subscript\">Subscript</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"cite\">Citation</a></li></ul></div></div><div id=\"wiki-edit-dropdown2-link-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-dropdown wiki-edit-dropdown-link\"><div class=\"aui-dropdown2-section\"><ul class=\"aui-
 list-truncate\"><li><a original-title=\"External link (Ctrl+K)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"link\" data-shortcut=\"ctrl+k, command+k\">External link</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"link-mail\">Mail link</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"link-anchor\">Anchor link</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"link-attachment\">Attachment link</a></li></ul></div><div class=\"aui-dropdown2-section wiki-edit-insert-link\"><strong>Attachment link</strong><ul class=\"aui-list-truncate\"><li><a href=\"#\"></a></li></ul></div></div><div id=\"wiki-edit-dropdown2-image-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-dropdown wiki-edit-dropdown-image\"><div class=\"aui-dropdown2-section\"><ul class=\"aui-list-truncate\"><li><a original-title=\"External image\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"image\">External image</a></
 li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"image-attachment\">Attached image</a></li></ul></div><div class=\"aui-dropdown2-section wiki-edit-insert-image\"><strong>Attached image</strong><ul class=\"aui-list-truncate\"><li><a href=\"#\"></a></li></ul></div></div><div id=\"wiki-edit-color-picker-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-picker wiki-edit-color-picker\" data-container=\"wiki-edit-color-picker-buttons-wikiEdit0\"><div class=\"aui-dropdown2-section\"><ul><li><a href=\"#\" style=\"background-color: #333333\" data-operation=\"color\" data-color=\"#333333\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #707070\" data-operation=\"color\" data-color=\"#707070\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #cccccc\" data-operation=\"color\" data-color=\"#cccccc\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #205081\" data-operation=\"color\" data-color=\"#205081\">&nbsp;</a></li><li><a href=\
 "#\" style=\"background-color: #59afe1\" data-operation=\"color\" data-color=\"#59afe1\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #14892c\" data-operation=\"color\" data-color=\"#14892c\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #8eb021\" data-operation=\"color\" data-color=\"#8eb021\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #d04437\" data-operation=\"color\" data-color=\"#d04437\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #f79232\" data-operation=\"color\" data-color=\"#f79232\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #f6c342\" data-operation=\"color\" data-color=\"#f6c342\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #654982\" data-operation=\"color\" data-color=\"#654982\">&nbsp;</a></li><li><a href=\"#\" style=\"background-color: #f691b2\" data-operation=\"color\" data-color=\"#f691b2\">&nbsp;</a></li></ul></div></div><div id=\"wiki-edit-dropdown2-icon-picker-wikiEdit0\" cla
 ss=\"aui-dropdown2 aui-style-default wiki-edit-picker wiki-edit-icon-picker\" data-container=\"wiki-edit-icon-picker-buttons-wikiEdit0\"><div class=\"aui-dropdown2-section\"><ul><li><a original-title=\":)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\":)\"><img src=\"test_files/smile.gif\" alt=\"smile\"></a></li><li><a original-title=\":(\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\":(\"><img src=\"test_files/sad.gif\" alt=\"sad\"></a></li><li><a original-title=\":P\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\":P\"><img src=\"test_files/tongue.gif\" alt=\"tongue\"></a></li><li><a original-title=\":D\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\":D\"><img src=\"test_files/biggrin.gif\" alt=\"biggrin\"></a></li><li><a original-title=\";)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\";)\"><img src=\"test_files/wink.gif\" alt=\"wink\"></a></li><li><a original-title=\"(y)\" href=\"#\" class=\"wiki-edit-operation\" dat
 a-operation=\"(y)\"><img src=\"test_files/thumbs_up.gif\" alt=\"thumbs up\"></a></li><li><a original-title=\"(n)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(n)\"><img src=\"test_files/thumbs_down.gif\" alt=\"thumbs down\"></a></li><li><a original-title=\"(i)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(i)\"><img src=\"test_files/information.gif\" alt=\"information\"></a></li><li><a original-title=\"(/)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(/)\"><img src=\"test_files/check.gif\" alt=\"check\"></a></li><li><a original-title=\"(x)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(x)\"><img src=\"test_files/error.gif\" alt=\"error\"></a></li><li><a original-title=\"(!)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(!)\"><img src=\"test_files/warning.gif\" alt=\"warning\"></a></li><li><a original-title=\"(+)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(+)\"><img src=\"test_files/add.gif\" alt
 =\"add\"></a></li><li><a original-title=\"(-)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(-)\"><img src=\"test_files/forbidden.gif\" alt=\"forbidden\"></a></li><li><a original-title=\"(?)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(?)\"><img src=\"test_files/help_16.gif\" alt=\"help\"></a></li><li><a original-title=\"(on)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(on)\"><img src=\"test_files/lightbulb_on.gif\" alt=\"lightbulb on\"></a></li><li><a original-title=\"(off)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(off)\"><img src=\"test_files/lightbulb.gif\" alt=\"lightbulb\"></a></li><li><a original-title=\"(*)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(*)\"><img src=\"test_files/star_yellow.gif\" alt=\"star yellow\"></a></li><li><a original-title=\"(*r)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(*r)\"><img src=\"test_files/star_red.gif\" alt=\"star red\"></a></li><li><a original-
 title=\"(*g)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(*g)\"><img src=\"test_files/star_green.gif\" alt=\"star green\"></a></li><li><a original-title=\"(*b)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(*b)\"><img src=\"test_files/star_blue.gif\" alt=\"star blue\"></a></li><li><a original-title=\"(*y)\" href=\"#\" class=\"wiki-edit-operation\" data-operation=\"(*y)\"><img src=\"test_files/star_yellow.gif\" alt=\"star yellow\"></a></li></ul></div></div><div id=\"wiki-edit-dropdown2-other-wikiEdit0\" class=\"aui-dropdown2 aui-style-default wiki-edit-dropdown\"><div class=\"aui-dropdown2-section\"><ul class=\"aui-list-truncate\"><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"mention\">User mention</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"table\">Table</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"code\">Code</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operatio
 n=\"noformat\">Preformatted</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"panel\">Panel</a></li><li><a href=\"#\" class=\"wiki-edit-operation\" data-operation=\"hr\">Horizontal ruler</a></li></ul></div></div><div class=\"wiki-edit-toolbar\" id=\"wiki-edit-wikiEdit0\"><div class=\"aui-toolbar2\"><div class=\"aui-toolbar2-inner\"><div class=\"aui-toolbar2-primary\"><div class=\"aui-buttons\"><a original-title=\"\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-style-picker-trigger\" aria-owns=\"wiki-edit-dropdown2-text-style-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"toolbardemo-dropdown2-more-wikiEdit0\">Style</a></div><div class=\"aui-buttons wiki-edit-toolbar-section\"><a original-title=\"Bold (Ctrl+B)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation\" data-operation=\"bold\" data-shortcut=\"ctrl+b, command+b\"><span class=\"aui-icon aui-icon-small aui-iconfont-e
 ditor-bold\">Bold</span></a><a original-title=\"Italic (Ctrl+I)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation\" data-operation=\"italic\" data-shortcut=\"ctrl+i, command+i\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-italic\">Italic</span></a><a original-title=\"Underline (Ctrl+U)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation\" data-operation=\"underline\" data-shortcut=\"ctrl+u, command+u\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-underline\">Underline</span></a><a original-title=\"Text color\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation wiki-edit-operation-color\" data-operation=\"color\" data-color=\"red\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-color\">Text color</span><span style=\"background-color: red;\" class=\"wiki-edit-color-indicator\"></span></a><a original-title=\"More colors\" href=\"#\" tabindex=\"-1\
 " class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-color-picker-trigger\" data-operation=\"color-parameter\" aria-owns=\"wiki-edit-color-picker-wikiEdit0\" aria-haspopup=\"true\"><span>More colors</span></a><a original-title=\"More\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-more-picker-trigger\" aria-owns=\"wiki-edit-dropdown2-more-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"toolbardemo-dropdown2-more-wikiEdit0\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-styles\">More</span></a></div><div class=\"aui-buttons\"><a original-title=\"Link (Ctrl+K)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-link-picker-trigger\" aria-owns=\"wiki-edit-dropdown2-link-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"wiki-edit-dropdown2-link-wikiEdit0\"><span class=\"aui-icon aui-icon-small aui-iconfont-link\">Link</span></a><a original-title=\"Image\" hre
 f=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-image-picker-trigger\" aria-owns=\"wiki-edit-dropdown2-image-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"wiki-edit-dropdown2-image-wikiEdit0\"><span class=\"aui-icon aui-icon-small aui-iconfont-image\">Image</span></a></div><div class=\"aui-buttons wiki-edit-toolbar-section\"><a original-title=\"Bullet list (Ctrl+Shift+B)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation\" data-operation=\"bullet-list\" data-shortcut=\"ctrl+shift+b, command+shift+b\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-list-bullet\">Bullet list</span></a><a original-title=\"Numbered list (Ctrl+Shift+N)\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-operation\" data-operation=\"numbered-list\" data-shortcut=\"ctrl+shift+n, command+shift+n\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-list-number\">Numbered list</span></
 a></div><div class=\"aui-buttons\"><a original-title=\"Icons\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-icon-picker-trigger wiki-edit-tooltip\" aria-owns=\"wiki-edit-dropdown2-icon-picker-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"wiki-edit-dropdown2-icon-picker-wikiEdit0\"><span class=\"aui-icon aui-icon-small aui-iconfont-editor-emoticon\">Icons</span></a><a original-title=\"Other\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-other-picker-trigger wiki-edit-tooltip\" aria-owns=\"wiki-edit-dropdown2-other-wikiEdit0\" aria-haspopup=\"true\" aria-controls=\"wiki-edit-dropdown2-other-wikiEdit0\"><span class=\"aui-icon aui-icon-small aui-iconfont-add\">Other</span></a></div><div class=\"aui-buttons wiki-edit-toolbar-last\"><a original-title=\"Toggle visibility\" href=\"#\" tabindex=\"-1\" class=\"aui-button aui-button-subtle wiki-edit-visible-toggle wiki-edit-tooltip\"><spa
 n class=\"aui-icon icon-toolbartoggle\">Lock / Unlock</span></a></div></div></div><!-- .aui-toolbar-inner --></div></div><div id=\"comment-wiki-edit\" class=\"wiki-edit-content\">\n                                 <textarea class=\"textarea long-field wiki-textfield mentionable\" cols=\"60\" id=\"comment\" name=\"comment\" rows=\"10\" data-projectkey=\"OR\" data-issuekey=\"OR-2349\" wrap=\"virtual\"></textarea>\n                <div class=\"content-inner\">            \n        </div>\n    </div>\n</div>\n<div class=\"field-tools\">\n    \n    <button class=\"jira-icon-button fullscreen\" id=\"comment-preview_link\" type=\"button\"><span class=\"aui-icon wiki-renderer-icon\">Preview comment</span></button>\n    <a class=\"help-lnk\" id=\"viewHelp\" href=\"https://ci.open-paas.org/jira/secure/WikiRendererHelpAction.jspa?section=texteffects\" title=\"Get local help about wiki markup help\" data-helplink=\"local\"><span class=\"aui-icon aui-icon-small aui-iconfont-help\"></span></a>\n<
 /div>\n\n                                                                                        <div class=\"security-level\">\n        <fieldset class=\"hidden parameters\">\n            <input title=\"securityLevelViewableByAll\" value=\"Viewable by All Users\" type=\"hidden\">\n            <input title=\"securityLevelViewableRestrictedTo\" value=\"Restricted to &lt;span class='redText'&gt;{0}&lt;/span&gt;\" type=\"hidden\">\n        </fieldset>\n        \n        <div class=\"select-menu\" id=\"commentLevel-multi-select\"><a class=\"drop\" href=\"#\">\n            <span class=\"security-level-drop-icon aui-icon aui-icon-small  aui-iconfont-unlocked\">\n                This comment will be Viewable by All Users\n            </span>\n            <span class=\"icon drop-menu\"></span>\n        </a><div class=\"aui-list aui-list-checked\" id=\"commentLevel-suggestions\" tabindex=\"-1\"></div></div><div class=\"select-menu\" id=\"commentLevel-multi-select\"><div class=\"aui-list aui-
 list-checked\" id=\"commentLevel-suggestions\" tabindex=\"-1\"></div></div><select multiple=\"multiple\" style=\"display: none;\" name=\"commentLevel\" id=\"commentLevel\">\n            <option selected=\"selected\" value=\"\">All Users</option>\n                            <optgroup label=\"Project Roles\">\n                                            <option value=\"role:10002\">Administrators</option>\n                                             <option value=\"role:10001\">Developers</option>\n                                             <option value=\"role:10000\">Users</option>\n                                     </optgroup>\n                                </select>\n        <span class=\"current-level\">Viewable by All Users</span>\n    </div>\n                                    </div>\n    \n            </div>\n            <div class=\"buttons-container form-footer\">\n                <div class=\"buttons\">\n                    <input accesskey=\"s\" class=\"aui-butto
 n\" id=\"issue-comment-add-submit\" name=\"Add\" title=\"Press Alt+Shift+s to submit this form\" value=\"Add\" type=\"submit\">\n                    <a accesskey=\"`\" class=\"aui-button aui-button-link cancel\" href=\"#\" id=\"issue-comment-add-cancel\" title=\"Press Alt+Shift+` to cancel\">Cancel</a>\n                </div>\n            </div>\n        </form>\n    </div>\n    <div class=\"mod-footer\">\n        <ul class=\"ops\">\n            <li>\n                <a href=\"https://ci.open-paas.org/jira/secure/AddComment%21default.jspa?id=16626\" id=\"footer-comment-button\" name=\"add-comment\" class=\"aui-button\">\n                    <span class=\"aui-icon aui-icon-small aui-iconfont-comment icon-comment\"></span>\n                    <span>Comment</span>\n                </a>\n            </li>\n        </ul>\n    </div>\n</div>\n\n</div>\n</div><div id=\"viewissuesidebar\" class=\"aui-item issue-side-column\"><div id=\"peoplemodule\" class=\"module toggle-wrap\"><div id=\"p
 eoplemodule_heading\" class=\"mod-header\"><ul class=\"ops\"></ul><h2 class=\"toggle-title\">People</h2></div><div class=\"mod-content\"><ul class=\"item-details\" id=\"peopledetails\">\n    <li class=\"people-details\">\n                <dl>\n            <dt>Assignee:</dt>\n            <dd>\n                <span title=\"Click to edit\" id=\"assignee-val\" class=\"view-issue-field editable-field inactive\">\n\n            <span class=\"user-hover\" id=\"issue_summary_assignee_scolson\" rel=\"scolson\">\n            \n\n    <span class=\"aui-avatar aui-avatar-small\"><span class=\"aui-avatar-inner\"><img src=\"test_files/useravatar.png\" alt=\"scolson\"></span></span>\n            Stephane COLSON\n        </span>\n    <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n                            </dd>\n        </dl>\n                        <dl>\n            <dt>Reporter:</dt>\n            <dd>\n                <span title=\"Click to edit\" id=\"r
 eporter-val\" class=\"view-issue-field editable-field inactive\">\n\n            <span class=\"user-hover\" id=\"issue_summary_reporter_scolson\" rel=\"scolson\">\n            \n\n    <span class=\"aui-avatar aui-avatar-small\"><span class=\"aui-avatar-inner\"><img src=\"test_files/useravatar.png\" alt=\"scolson\"></span></span>\n            Stephane COLSON\n        </span>\n    <span class=\"overlay-icon aui-icon aui-icon-small aui-iconfont-edit\"></span></span>\n            </dd>\n        </dl>\n                    </li>\n</ul>\n    <ul class=\"item-details\">\n        <li>\n                            <dl>\n                    <dt>Votes:</dt>\n                    <dd>\n                                                                            <a id=\"view-voter-list\" href=\"https://ci.open-paas.org/jira/secure/ViewVoters%21default.jspa?id=16626\" title=\"View Voters\">\n                                                    <span id=\"vote-data\" class=\"aui-badge vote-state-off\"
 >0</span>\n                                                    </a>\n                        \n                                                                    </dd>\n                </dl>\n                                        <dl>\n                    <dt>Watchers:</dt>\n                    <dd>\n                                                                        \n                                                                            <a aria-haspopup=\"true\" aria-expanded=\"false\" class=\"__skate\" id=\"view-watcher-list\" href=\"https://ci.open-paas.org/jira/secure/ManageWatchers%21default.jspa?id=16626\" title=\"View Watchers\" aria-controls=\"inline-dialog-watchers\" data-aui-trigger=\"\">\n                                                    <span id=\"watcher-data\" class=\"aui-badge watch-state-on\">1</span>\n                                                    </a>\n                            <aui-inline-dialog2 data-aui-persistent=\"true\" id=\"inline-dialo
 g-watchers\" class=\"aui-layer aui-inline-dialog __skate\" data-aui-alignment=\"bottom left\" data-aui-responds-to=\"none\" aria-hidden=\"true\">\n                                <div class=\"aui-inline-dialog-contents\"></div>\n                            </aui-inline-dialog2>\n                        \n                                                                                    <a id=\"watching-toggle\" class=\"watch-state-on\" href=\"https://ci.open-paas.org/jira/secure/VoteOrWatchIssue.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin&amp;id=16626&amp;watch=unwatch\" rel=\"16626\">Stop watching this issue</a> <span class=\"icon\"></span>\n                                                                        </dd>\n                </dl>\n                    </li>\n    </ul>\n</div></div><div id=\"datesmodule\" class=\"module toggle-wrap\"><div id=\"datesmodule_heading\" class=\"mod-header\"><ul class=\"ops\"></ul><h2 class=\"toggle-title
 \">Dates</h2></div><div class=\"mod-content\"><ul class=\"item-details\">\n    <li>\n            <dl class=\"dates\">\n            <dt>Created:</dt>\n            <dd class=\"date user-tz\" title=\"13/Jul/16 10:32 AM\">\n\n                <span data-name=\"Created\" id=\"create-date\" data-fieldtype=\"datetime\">\n                                                                        <time class=\"livestamp\" datetime=\"2016-07-13T10:32:00+0200\">4 hours ago</time>                                                             </span>\n            </dd>\n        </dl>\n            <dl class=\"dates\">\n            <dt>Updated:</dt>\n            <dd class=\"date user-tz\" title=\"13/Jul/16 10:59 AM\">\n\n                <span data-name=\"Updated\" id=\"updated-date\" data-fieldtype=\"datetime\">\n                                                                        <time class=\"livestamp\" datetime=\"2016-07-13T10:59:46+0200\">4 hours ago</time>                                       
                       </span>\n            </dd>\n        </dl>\n        </li>\n</ul>\n</div></div><div style=\"display: block;\" id=\"viewissue-devstatus-panel\" class=\"module toggle-wrap js-animation-completed\"><div id=\"viewissue-devstatus-panel_heading\" class=\"mod-header\"><ul class=\"ops\"></ul><h2 class=\"toggle-title\">Development</h2><div class=\"try-labs-container\"></div></div><div class=\"mod-content\"><ul id=\"devstatus-container\" class=\"item-details dev-status-container\" data-labs-json=\"{&quot;allowed&quot;:false,&quot;optedIn&quot;:true,&quot;optedInByAdmin&quot;:true,&quot;dismissed&quot;:false,&quot;id&quot;:1}\" data-show-contact-admin-form=\"false\" data-issue-type=\"Bug\" data-issue-status=\"Progressing\" data-is-assignable=\"true\" data-is-assignee=\"true\" data-ait-help-url-json=\"{&quot;url&quot;:&quot;https://docs.atlassian.com/jira/docs-064/Advanced+workflow+configuration&quot;,&quot;alt&quot;:&quot;Get help!&quot;,&quot;key&quot;:&quot;workflow.auto.
 triggers&quot;,&quot;local&quot;:false,&quot;title&quot;:&quot;Advanced workflow configuration&quot;}\" data-issue-id=\"16626\" data-issue-key=\"OR-2349\"><div class=\"hidden dev-summary json-blob\" data-json=\"{&quot;cachedValue&quot;:{&quot;errors&quot;:[],&quot;configErrors&quot;:[],&quot;summary&quot;:{&quot;pullrequest&quot;:{&quot;overall&quot;:{&quot;count&quot;:1,&quot;lastUpdated&quot;:&quot;2016-07-13T12:43:39.542+0200&quot;,&quot;stateCount&quot;:1,&quot;state&quot;:&quot;OPEN&quot;,&quot;open&quot;:true},&quot;byInstanceType&quot;:{&quot;stash&quot;:{&quot;count&quot;:1,&quot;name&quot;:&quot;Stash&quot;}}},&quot;build&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;failedBuildCount&quot;:0,&quot;successfulBuildCount&quot;:0,&quot;unknownBuildCount&quot;:0},&quot;byInstanceType&quot;:{}},&quot;review&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;stateCount&quot;:0,&quot;state&quot;:null,&quot;dueDate
 &quot;:null,&quot;overDue&quot;:false,&quot;completed&quot;:false},&quot;byInstanceType&quot;:{}},&quot;deployment-environment&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;topEnvironments&quot;:[],&quot;showProjects&quot;:false,&quot;successfulCount&quot;:0},&quot;byInstanceType&quot;:{}},&quot;repository&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null},&quot;byInstanceType&quot;:{}},&quot;branch&quot;:{&quot;overall&quot;:{&quot;count&quot;:1,&quot;lastUpdated&quot;:&quot;2016-07-13T12:43:39.542+0200&quot;},&quot;byInstanceType&quot;:{&quot;stash&quot;:{&quot;count&quot;:1,&quot;name&quot;:&quot;Stash&quot;}}}}},&quot;isStale&quot;:false}\"></div><ul class=\"item-details status-panels devstatus-entry\"><li class=\"status-panel js-has-data\" id=\"branch-status-panel\" data-module=\"BranchModule\"><dl><dt><div style=\"height: auto;\" class=\"rolling-container sliding-container\"><div class=\"rolling-content\"><div cla
 ss=\"summary-content\"><a class=\"summary\" href=\"https://ci.open-paas.org/jira/browse/OR-2349?devStatusDetailDialog=branch\" title=\"Branches related to OR-2349\"><span class=\"count\">1</span> branch</a></div></div></div></dt><dd class=\"sub-text\"><div style=\"height: auto;\" class=\"rolling-container sliding-container\"><div class=\"rolling-content\"><d

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[08/10] james-project git commit: MAILBOX-278 Ignore Error thrown by Tika to be able to parse the rest of the message

Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/6c0947f6/mailbox/elasticsearch/src/test/resources/eml/bodyMakeTikaToFail.eml
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/resources/eml/bodyMakeTikaToFail.eml b/mailbox/elasticsearch/src/test/resources/eml/bodyMakeTikaToFail.eml
new file mode 100644
index 0000000..8732157
--- /dev/null
+++ b/mailbox/elasticsearch/src/test/resources/eml/bodyMakeTikaToFail.eml
@@ -0,0 +1,1272 @@
+Date: Mon, 30 Jan 2017 11:51:35 +0100
+From: Raphael OUAZANA <ra...@linagora.com>
+To: OUAZANA Raphael <ra...@linagora.com>
+Subject: subject should be parsed
+Message-ID: <25...@linagora.com>
+X-Sender: raph.ouazana@linagora.com
+User-Agent: Roundcube Webmail/1.1.4
+
+Return-Path: <ip...@obm.lng.org>
+Received: from lenny.obm.lng.org (localhost [127.0.0.1])
+	 by lenny.obm.lng.org (Cyrus v2.3.14-Debian-2.3.14-2) with LMTPA;
+	 Wed, 21 Mar 2012 14:51:59 +0100
+X-Sieve: CMU Sieve 2.3
+Received: from [192.168.2.48] (unknown [192.168.2.48])
+	by lenny.obm.lng.org (Postfix) with ESMTP id E495D32929
+	for <us...@obm.lng.org>; Wed, 21 Mar 2012 14:51:58 +0100 (CET)
+Message-ID: <4F...@obm.lng.org>
+Date: Wed, 21 Mar 2012 14:52:14 +0100
+ From: iphone <ip...@obm.lng.org>
+User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; 
+rv:1.9.2.28) Gecko/20120306 Lightning/1.0b2 Thunderbird/3.1.20
+MIME-Version: 1.0
+To: usera <us...@obm.lng.org>
+Subject: Fwd: Re: email with sign
+Content-Type: multipart/mixed;
+  boundary="------------080809000000030101030405"
+
+This is a multi-part message in MIME format.
+--------------080809000000030101030405
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+Content-Transfer-Encoding: 7bit
+
+new email text part
+
+--------------080809000000030101030405
+Content-Type: message/rfc822;
+  name="Re: email with sign.eml"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment;
+  filename="Re: email with sign.eml"
+
+Return-Path: <us...@obm.lng.org>
+Received: from lenny.obm.lng.org (localhost [127.0.0.1])
+	 by lenny.obm.lng.org (Cyrus v2.3.14-Debian-2.3.14-2) with LMTPA;
+	 Wed, 21 Mar 2012 14:19:29 +0100
+X-Sieve: CMU Sieve 2.3
+Received: from [192.168.2.48] (unknown [192.168.2.48])
+	by lenny.obm.lng.org (Postfix) with ESMTP id 47EC832D51
+	for <ip...@obm.lng.org>; Wed, 21 Mar 2012 14:19:29 +0100 (CET)
+Message-ID: <4F...@obm.lng.org>
+Date: Wed, 21 Mar 2012 14:19:44 +0100
+ From: usera <us...@obm.lng.org>
+User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; 
+rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20
+MIME-Version: 1.0
+To: iphone <ip...@obm.lng.org>
+Subject: Re: email with sign
+References: <4F...@obm.lng.org>
+In-Reply-To: <4F...@obm.lng.org>
+Content-Type: multipart/alternative;
+  boundary="------------050702060806040107070701"
+
+This is a multi-part message in MIME format.
+--------------050702060806040107070701
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+Content-Transfer-Encoding: 7bit
+
+On 03/21/2012 01:59 PM, iphone wrote:
+> email with sign text part
+> --
+new email text part
+
+--------------050702060806040107070701
+Content-Type: multipart/related;
+  boundary="------------090109030206070103090500"
+
+
+--------------090109030206070103090500
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: 7bit
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+   <head>
+     <meta content="text/html; charset=ISO-8859-1"
+       http-equiv="Content-Type">
+   </head>
+   <body text="#000000" bgcolor="#ffffff">
+     On 03/21/2012 01:59 PM, iphone wrote:
+     <blockquote cite="mid:4F69D0C6.501@obm.lng.org" type="cite">
+       <meta http-equiv="content-type" content="text/html;
+         charset=ISO-8859-1">
+       email with sign text part<br>
+       <div class="moz-signature">-- <br>
+         <img src="cid:part1.05020706.03070506@obm.lng.org" 
+border="0"></div>
+     </blockquote>
+     new email text part<br>
+   </body>
+
+</html>
+
+--------------090109030206070103090500
+Content-Type: image/jpeg
+Content-Transfer-Encoding: base64
+Content-ID: <pa...@obm.lng.org>
+
+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
+RvvR7cp9+nyYupWotquN7t17lQ1W/iOqfiKi4Sl3iAJbUmI2CNhIVz3Yykxd66HItw0joyzq
+lWSbK0tavBjTt3sSJ8Z5BaZQtzgKWNjmWEKSoKO3KgdwJoC46n1W1brNapdnipvUm9SG49qa
+bfDbchS21OhRcwdqA22tZUAThPIE4FQrfSXEtUqRa9awFWW7tPstNxoXGuKJXGbeW0WS20Fq
+3CM+MFtJy2Rg5TmTvGjus6XsdsttyFunWBbLttltxG9jbjbSmubKNqNim1uIKE7QAo7duBiM
+hdH85zVNu1VfNQNT7zGuCJTy2IHAZUy3Elx22G0FxRQEmY45uUpZJJHIEbQPub0raPtUORIv
+dzTH6uuaXjFiyZKGWo0l1hTjiksjh5UypPjAArCkoU4AFK+k9KmkWHZEa43EMyY7zyXkxosl
+9tlpEuRGDriwyA2nfGcClKwhBB8dSSlaud9IXRzrONGv9o0il+ajVMGdEnyVR44ZaTImzZKA
+SuQlbezrriVKS27vHclBxi4o6KNto1zA8PZ7V22XA39T/wA148u4yN+N/j7fCO3Hi54Wcjdh
+IFsh6005L1IrT0ec6qeHHGk5iPJZccbBLjaHikNLWkA7kJUVDarIGDjLqDVmn7BPhQLtcBHk
+zXWmmGw0tZUp15DLYO0EJ3OOJSCrA7z3JURUtNdFMGxdIb+qY5sRS5NlzgrwCz4RLskrK0qm
+klZbBcXtCUpVghJUUjB+ekLRGor/AKvdl2i5QrexJYta1SZUMyktOW6c5KQ3ww80r9Ip1GVA
+nxWlDkVJUAL/AGy5Qrm285CfDoYfcjujaUlDiFFKkkEAjmP3ggjIINbdVvRNpm2+dqefNbDJ
+u95VLaZ3BWxtDDMdJ5EjxwxxMeTfzwcirJQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKU
+pQClKUApSlAKUpQClKUApSlAKUpQClKUBjkuLajuutsOPrQgqS02UhSyB9UbiBk93MgecioX
+w9dfUq/++hfmKnqUBA+Hrr6lX/30L8xTw9dfUq/++hfmKnqUBA+Hrr6lX/30L8xTw9dfUq/+
++hfmKnqUBA+Hrr6lX/30L8xTw9dfUq/++hfmKnqUBA+Hrr6lX/30L8xTw9dfUq/++hfmKnqU
+BA+Hrr6lX/30L8xTw9dfUq/++hfmKnqUBA+Hrr6lX/30L8xTw9dfUq/++hfmKnqUBA+Hrr6l
+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
+IVsZZfbzsWknIyCD5fMTUxSld2LBjwrbjior4KjglOUncnYpSlalRSlKAUpSgIzUNqVc2GSy
+/wBXkxnOKw4U7gFYIII8oIJH76iPBGqvtOz/AHNz5lWlSgkFSiAB5Sax9ZjekNf1xQFa8Eaq
++07P9zc+ZTwRqr7Ts/3Nz5lWXrMb0hr+uKdZjekNf1xUUTZWvBGqvtOz/c3PmV+Ks2qFbc3K
+znaoKH8jd7wQR/rPOBVm6zG9Ia/rinWY3pDX9cUoWVrwRqr7Ts/3Nz5lPA+qfLc7Rj2RHM/2
+lWXrMb0hr+uKdZj+kNf1xShZq2C2ptVuTFDqnVlanHFn+ktRyo/vJrWvlmdmXCJdIExMO4RU
+rQ2txritqQvG5Kk5SSOQPIg5AqYBBGQcivlxaG07nFpQnzqOBUkEJ1XWH23YvhDv5mnVdYfb
+di+EO/mal+txPSmPeCnW4npTHvBQER1XWH23YvhDv5mnVdYfbdi+EO/mal+txPSmPeCnW4np
+THvBQGpYbYq2syC9JMqVKeL8l4oCQte0JGEjuASlKQOfIDmTzqRr8SpK0hSVBQPcQciv2gFK
+UoBSlKAUpSgFKUoBSlKAVB631Ta9IWZNzuvHWl2Q3FjsR0b3ZDzhwhtCcjKifOQOR51OVTul
+rSErV9ltibdKYjXKz3eNd4RfBLS3WSSELxzCSFEZGccuRoWjV8m9atXQ34Fwm3m33HTDdvcC
+JCr0lthsAjkpLoWppafJlKzg8jitmTq3SkW0MXiTqaysW2QcMTHJ7SWXT5krKtp/capet9J6
+41lYogui9ORJtsvsW6wYbDrzjDqGSSWn3VIBVuyTlLYxgcjVfY6ILqxZDIUiG7qJV9nXdh+J
+eX4KbYZO0KbZWlhZWnCRnchOefnqC6jB9WdRt+qrTcNRtWWBIYll63eEW5DEyOtC2uJw+SA5
+xSM/09mzybt3Kp2uWaA0FrK2dI1t1bqm+wLu8zpQ2eU+2FJddkdcLwUE7QnYEEJ3ZBJGdvOu
+p1JSaSfApSlCopSlAKUpQGtdp8a12uVcprqWo0VlbzqyeSUpBJP8BX84umnpRvnSHrFy4TVP
+M2kKPg6NkhCW88lEfrEcya949O1luuouh7VNlsiVLuMq3uIYQk4K1d+0ftAI/fXhRWmpUmxM
+M3SzTrZMYSG1syo6m1ZSMEpyOdUndHVpau+5XrYtwPNvsuFLiFBSfYa9KW/6UZ07p+128aF6
+42xFQzxhdtmVISARjgnHd5zyrzMqDPtcwpfYWpnd4isHar2GrILXKmaXutzmYjw47KVt+JhK
+3VLASlP7t37hWMLi6PSyQhlScj1F0R/SSGvukK2aS7GeDuv8X+U+E+Ls2NLc+rwk5zsx3jvz
+XoCv5+/RH/8AeE0x/wBr/uj1f0CreLtHmarHHHNKPoKgtears2idLy9R36QWYUYDIQAVuKJw
+lCBkZUT5P38gCanaqHTJozt/0c3XSyZfVXpSEqZdKlBAcQoLTvA705SMg58+MgVYwjW5X0JC
+z6qgz9HL1W+w9AtyGFySp15l39ClO4uBTDjiCMA9ys8u6tDo26QrJr1iYu0sTorsMMLdYmNp
+Q5w3mw6y4NqlDatByOefOBWRFguF06Np2lr0hqE7MgPQVKZuL0/CXGyjeXXkpWo+MT42f2mq
+L0W9HWutDqcmMS9NvTZ79qh3BC1PqbTbocbgKU0QlJ46sBQChtHcSagulFp+pMyemawRH7nG
+mWDU0SVAiomJjyYSGXJLK5IjJWhK1gpy4RgObCRzAxV7sNwl3KGt+ZY7hZnEuFAYmrYUtQwD
+vBZccTjmRzIPI8sYJ5Lc+jDWF8vmp7zfFaSW7dLYzDTEZEpMWc8zJDrUiQlKkrSpKEobwla+
+7vI8Wrn0M6QuOjNNTrfcn4hVLukiczFhqUqPBacIKY7RUEkoTg/0U8yeVOSZqG3jqTOq0Jkz
+bNb3smNKlqS+gHAWlLK1gH2ZSMjyjlVNuuquja26+a0bI05GMxT8eK5IRbmTHZfkIWtlpZ+t
+uWltRGEkd2SM1cNUq2XjT6s4xMd/u7tcs1J0YXK6dLnalq4Q0WuRdbZdpKVKVx0vQWnW0ISn
+G0pVxASSoEYPI0ZXGou9x1rs3pr1etP3Nv8Awp2b016vWn7m3/hWTrR/WP8AGnWj+sf40KGP
+s3pr1etP3Nv/AArXnWDTrDCVo07ZyS62jnCb7lLSk+TzGtzrR/WP8a15z5W20nPfIZ/tU0BG
+6nj6SsMFLzml4MyS8rhxYUWA0p+S5gnYgHAzgEkkhIAJJABNZ7Jb9HXq2InwLHbC0slKgqCh
+txpYOFIUkgFC0kEEHmCK+NTXG9xIaJllhNXFxlW56GVhDj6MHk2tRCUrzgjdyOMEpzuGxYpV
+1VbkOXgRm5jhK1tRyShoE8kbj9YgYBVgZOSAO6hBn0QtZtDzKlrWmNNkR2ypWSEIdUlIJPfy
+Aqq9Ll6stmnx5eqdzlhh26RMkMBO7iLStpCBt7lZLmADyyR5s1ZtCHda5qvPc5Z/8ZVUnpz0
+i5rt/sozKRFenWWTwnVglKVokRnE7sc8EoAOPJTsWjW7noSuhYPR3rC0yJ9u0jCjqizHYMuN
+KhNpdjvtHC21BJUnI5dxI5jnU/2G0b6r2j7qj/Co3oi0lP0naLybs/FcuN6vcq7yUxVKU00t
+5Q8RClBJUAEjmQOeeVXSglV8Fd7DaN9V7R91R/hTsNo31XtH3VH+FWKlSVK/o1pEN692tjKY
+kG4BuOgqJ4aFR2XCkZ8m5xWB5By8lWCoLTP+m9Uf70b/ALnGqdoBSlKAUpSgFKUoBSlKAUpS
+gFKUoBSlKAUpSgFKUoBSlKAUpSgFROq9OWjU9pctl5iIkMqHinuU2r9ZJ7walqjtS3q36dsU
+y9XV7gw4jZcdVjJx5gPKSeQFGWipOSUepxV/oLlNTxHaksSoCl81uEJXt/2hjv8AaKv0Xol0
+Uuzt2+8WePdUpUF/pwdoOMDABAArnuofpCzGrZ4ZselUu2pLvCL0yTw1rP8AsoAPL21FQPpQ
+uy1qbGj2kuJGSkzzzHn/AJusHmxrue2vBvEslLb80vqdk050X9H+nbyxebJpW3wbhH3cJ9pJ
+CkbklKsc/KlRH76uFcZ6Num5/V+tYGnV6cbhpl8TLwllZTsbUvu2DOduO/y12ar48kciuJ5+
+v0Op0WRY9Qqk1fVPj8r9BSlK0OIUpSgFKUoDQvdrZusZDTjjjS21hxp1s4U2oeUf/fOojsxc
+PWm4fd2PwVOXOfFtsUyJbmxGQkYGSonuAA5knzVG9pof2fe/hT/4Kgk1ezFw9abh93Y/BTsx
+cPWm4fd2PwVtdpof2fe/hT/4Kdpof2fe/hT/AOCnA5NXsxcPWm4fd2PwV+HS884zqiecEEfy
+djkQcg/Urb7TQ/s+9/Cn/wAFO00P7Pvfwp/8FOByavZi4etNw+7sfgp2Yn+XVFwI83AY/BW1
+2mh/Z97+FP8A4KHU8IDKoF6SB3k2t8Af92nA5JG0W9i2QURI+4pTklSjkqJ7yT5zWvebKxcn
+o8oSJMOZGzwZMdSQtAPeMKBSQfMQR3eat2DKjzYjcqK6l1lwbkqSeRFal9vdvsrTa5ziwXVb
+W22m1OOLOM4SlIJPLzVJBp+A7r65Xz3MP5FPAd19cr57mH8itTt1Z/Qr78Hkfgp26s/oV9+D
+yPwVBJt+A7r65Xz3MP5FPAd09cr57mH8itTt1Z/Qr78Hkfgp26s/oV9+DyPwUBN2a2MWuMtl
+lbrq3HC6888rct1Z71KPn5AcsAAAAACt2tS0XKHdoKJsF3iMqJGSMEEHBBB5gg+Q1t1JApSl
+AKUpQClKUByrVHSNfbLqPVh6tbXbNpt63peb4SxIdRJSNygvftBSo8hs5g94xznT0o6V7X9m
+eM8ZXXvB/Ey3s6x+pt38TGfF3bNueWay3To4sty1HcrxLm3JaLm9Gemwd7YjvKjpAaB8TfgY
+yRuwT3+TG3C0VAg35+6Qbnd4rciaZ78FmSER3XyMKWoBO8g4BKd20kd1YJZUz2pZPD5QScXa
+j2452x+e7c/TlGvaOkK1XW3zblDt106hGaU63MebbajyUpcLaih1awgEKSeSyk454xVc1B0r
+Lf0/a5+kLaqU7NvqbO4ZAbcSy737RteSlalAgpKV7CM5UOWZgdFlg7PXDT/hG9m1TG+GiJ1s
+cKKONxv0SduM7/6StxxyzjlX2x0ZWRrYBcLqpCL61ftqnGyDLQCCSdmdqsgqGfINu3nmGsrV
+Ewl4bCTlTdPhO+ld/j/HdMrtp6YEsybudS28wm27s9brfHQWULUWRl3iOLf4e5O5GfqpyoBK
+l5O3cmdMFhjuC5IVKkWk2RFy4bUIcXxpYj/XLoGQo4KNnkJCz9WpgdGllblOTYs+6xZ6rrJu
+rUtpxviMuyEhLqU5QU7CEjkoE+2sF/6KrDe0OCfc744ty1Ita3VSkuOKbRITICypaVErK0gZ
+PLHIAcqisyRp5nhUppuLS4uvnS/Dvd3fwNtXSLaEJvKXoU6O/Z3Wm5TElyOwQHUlTagpx1KM
+EDuKgr2VGPdLNqK9NPxLVOftl8Zkv9cUttAjoYCi7lBVklG3Khy5fVKz4tSN66NrHdb3PvD8
+u5Ny5s2HOKmnUANOxUKQ2UAoPIhRyDn2YrWY6KdOtQLTBTLuhjWlcrqranGyOFJGHmVeJkoU
+CoZ+sNxwruxZ+b7/AB/gyg/DKTld/n/x+k6r4XZKaR1zatSXAQI8SfCkrhIuDCJbaU8eMs4S
+6napXLOORweY5Vaaq2kdD2rTdwE+PKnzZKISLewuW4lRYjIOUtJ2pTyzjmcnl31aa0hur7x5
+2r8jzP8Awf4ilKVc5hSlKAUpSgFcg+l3OcidDUplskKlzI7OR5t+/wD/AOK6/XmD6WOpbjNu
+7uj5DHV4bKWpURZH+cL8YLOfYD3ftrPLLbFnqeDaaWo1kFHs7/RnCnr1drvaotrluMJYiJIb
+LbISTk/0scifbirDpSyxWrfOdDYckKiKO5XMjA3cvN3VXoDAYQd4AUeVWK339nT8V24uLa/R
+NKKUuAKQpWOQKTyIz5K4Yq3yfp+bF5WByS5XP1Lb9HP/AJ5bD/2j+7u17Frm3QVBsl60FpzW
+jmjrVZbzKi8RfV4obKFHcgqT5QlQyQM9ysZNdJrq0+F4o7Wfm/j/AIpDxLUrLCLSSrn8W/qK
+q3SrqpejNETb8zGRJfaKENNrWEpK1KCQTzBIGc4HPl5Bki01HamssDUVhmWS5tqXElt7HAlW
+FDnkEHyEEAj9lbTTcXXU8vTSxxzRllVxtWvh3IqFf5THR5I1PcHIsxTMJ2biKhKEKShBVtBS
+66knkeYWRUR0R61uWq1XKLdo0RqTDYhSQqMlSUFuUwHUpwok7k8wTnn5hVrj2hPgN60XGdKu
+rLzamnFyg2FqQobSk8NKBjGfJn21XbF0cWqyMtIt13vjLiJkaQ48iUlK30R0cNuO5tSApkJ5
+FOMnHM1Rqdquh2QyaV4ssZr7zf3Wlwufy7WundFZv3SFq2xz7/b7hGsYfgQ2JLa2m3ilBdkp
+aSnCilTw2KBK0BICvF76vmhrwb3aHZZu0K5lEhbKlxoLkThqTgFtbbi1KCwc5zjkRy8pi2Oj
+u2tTJ85V71E7NlxDDRLXPPHjM8Uu7W3AAr6x71FRwMd3KpnSOm4OmYEiLCdkvrlS3Jkl+QoF
+x55wjctW0Ac8DkAByqIRmpc9C+ry6SWGsSqXHbrwr+K5+Pfv1Meo8eHNOg4x1x0kH2R3SP8A
+jVMvvSRPgdJPgBuHEVbWbjAtz6lBXGU5LbcWlaTnASnYAQQc57xVu1gsM3CxSFna23MWFKPc
+NzLiRn9qlAfvqvT9H2Sbq1vUrypPWUusvrZSsBpx1pKktOKGM7khZAwQPODU5FJ1tOfQz08J
+S89Wqdfja+ll+4g/WH8acQfrD+NRHWPbTrHtrSziol+IP1h/GtW5vKTGQULKSX2RlJxyLiQR
+/CtLrHtrFKdK0tJHP9O0T7AHEkmlijNqeVe0QkMaejxlzn1bEyJRyxFGCS4tIUFLHLASnBJI
+yUjKhnsUyfJtra7rCTCmpJQ62h0OIJBxuQocyhXeMgHB5gHlUFqWLNuMJBtl2dtlwYVxI74S
+XG92CMON5AcQQeYJB8oKSARnsjCrZbURnZ8ma6CVuyJC8qcWTlR8yRk8kpAAHIAAUsijc0R/
+o6cB3C5ywB5hxlVUel/Ua9J3Zm/tx0SXIlokqbaWTtK1Px0JJx5AV/wzVr0Cd9mkOjmh2fJc
+QodykqdUQR7CCDUJr+zW6/ast9pvCT1CdbJUZRCtp3lbS0hJ/W8QqH/VqJW4uupvp5Y45ovK
+rjav8L5JPo21HM1FbroLi1HRNtd1kW19UdJS24pojx0hRJAIUORJq01D6S07B01bnYcJyQ8X
+5LkqQ++oFx55w5UtWABk8u4AcqmKQTUVY1MscssniVR7ClKVYwILTHK9anSOQF0RgftiRyf+
+JJqdqA0mtD1y1JJZUFsu3QcNaTlKtsZhCsHy4UhQ/aDU/QClKwolxVznYKJLKpbLSHnWA4C4
+hCyoIWU94SotrAJ5EoVjuNAZqUpQClKUApSsM+XFgQZE6dJZixIzSnn33nAhtpCRlS1KPJKQ
+ASSeQAoDNSlKAUpSgFKUoBSlKAUpSgFKUoBSlKAVBav0jp3VsMRb/a2JqE/UKhhSD5wRzFTt
+KVZaE5QkpRdNHGbp9HHQ0t/iR5d4gpz/ADbMkFP/AHga3LH9Hvo5t0pmVJgybq6yoKR157iJ
+BHl28h/wrrVKqoRTtI68niWryw8ueRtfifLLTbLSGWUJbbQAlKUjASB3ACvqlKscQpSlAKUp
+QClKUBilxo8uOqPKZQ80sYUhYyDUP2O0t9gwPcip2lAQXY7S32BA9yKdjtLfYED3IqdpQEF2
+O0t9gQPcinY7S32BA9yKnaUBBdjtLfYED3IoNH6XBBFhgAjuPCFTtKA+GWm2WktNIShCRhKQ
+OQrFcIMK4RlRp8SPLYV3tvNhaT+48q2KUBBdjdIeq1j+4Nfhp2N0h6rWP7g1+Gp2lAQXY3SH
+qtY/uDX4adjdIeq1j+4NfhqdpQGOMwxFYRHjMtssoGENtpCUpHmAHdWSlKAVzm5XpjTXTDe5
+1ztuoHIk7T9rZjvwLFMnNqW1IuBcQVR2lhKgHWzhWDhQroUl9mNHdkyXm2WGkFbjjiglKEgZ
+KiTyAA55qF7a6N9bbB8RZ/FQHLWHtYx+mqJcC1f2LUb2/EuEREe5SGOrLaeTHe4jjyo5Spzg
+LIYZHCBO9aQlW7F0h3K5xOkKRx7hqyNKOqbFHtYiOvotyoDjsQPoc2nglalmQFBX6Qp248Td
+XV+2ujfW2wfEWfxVEPTuih7UKNRvTNFOXpsAIuKnIpkpAGMB36w5cu+gOMI/yjKvsRA7YxIl
+2kRo86PGZuqhAfFzhKcT1iQ85lAjdbBebS0yRkZVkATUq168Yct8aPO1spqZcZUWWsyJK1NR
+mNRQmYygo/U3QVSFFfe4jetRUE5HZO2ujfW2wfEWfxU7a6N9bbB8RZ/FQHGbpA6SYNsfTZ5u
+q1OyGruw8qSZEnhR415jNRlISVJVxVQVSFJKVJce+sFEgKE5Ht+oZP0ctfW5+TfL3Jk265tW
+1Eu1yo0hxCou1DaGpDz0lYK920uK3kqwBgJz0rtro31tsHxFn8VO2ujfW2wfEWfxUBVdRax6
+/K09dbLB1eIFsvIXeG+z9wjrXHchS20YaW0lb6Q8pkkISvaQlRAwDVCbia8uVn1xenXNcRZk
+C1S59giceS1vlC5XdbKOGk4dIaTDTwvGSUKbGCNmOz9tdG+ttg+Is/ip210b622D4iz+KgOI
+aluWrEanTGtFw1WjVkm9X1ppp114Wx1pEGeqAlsKPAVjbGJCO5YPE5hNdH6H+ueFb0Y/avwB
+1eH1XtH1nrPW/wBN1nb1n9Jsx1fu8Tdv2cqkYU7oog32RfoUzRUa7ych+ey5FRIdz37nB4ys
++01L9tdG+ttg+Is/ioDk6H77dteMyX7pqmNHVcL3GupYdkNwokVsSWY694VwkKCW2F7SAsqd
+bWhQAcC+s9HlwuF20Bp263dvh3GbaosiWjbt2uraSpYx5PGJ5VqOak6PXWZjLl+0utudnraF
+TGCmRlAQd4z43ipCeeeQA7hWyNa6NAwNW2D4iz+KgJ+lQPbXRvrbYPiLP4qdtdG+ttg+Is/i
+oCepUD210b622D4iz+KnbXRvrbYPiLP4qAnqVA9tdG+ttg+Is/ip210b622D4iz+KgJ6lQPb
+XRvrbYPiLP4qdtdG+ttg+Is/ioCepUD210b622D4iz+KnbXRvrbYPiLP4qAnqVA9tdG+ttg+
+Is/ip210b622D4iz+KgJ6lQPbXRvrbYPiLP4qdtdG+ttg+Is/ioCepUD210b622D4iz+KnbX
+RvrbYPiLP4qAnqVA9tdG+ttg+Is/ip210b622D4iz+KgJ6lQPbXRvrbYPiLP4qdtdG+ttg+I
+s/ioCepUD210b622D4iz+KnbXRvrbYPiLP4qAnqVA9tdG+ttg+Is/ip210b622D4iz+KgJ6l
+QPbXRvrbYPiLP4qdtdG+ttg+Is/ioCepUD210b622D4iz+KnbXRvrbYPiLP4qAnqVA9tdG+t
+tg+Is/ip210b622D4iz+KgJ6lQPbXRvrbYPiLP4qdtdG+ttg+Is/ioCepUD210b622D4iz+K
+nbXRvrbYPiLP4qAnqUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKZFf
+iu6uF/SC6bWtISezOnnGnL04n9M8fGTFSfZ5VeypSvoVnNQW5nci60HA2XEBZ7klQya+68Tp
+hP3N2Drm3Xi63C6QH235gclKLmAoElIzgJIyMYr2Rpy8Qb9ZIt3tzwdjSWwtB8o84PmI7qlx
+oyw6iOW6JClKVU3FKUoBSlKAUpSgFKitQTpUXqcWClsyprxaaU59VGElZUcd+EpPLy91a/VN
+Ufb9u+Fq+dQE7SoLqmqPt+3fC1fOp1TVH2/bvhavnUBO0qC6pqj7ft3wtXzq+HmdSMoC3NQ2
+5KSpKQfBau9RAH+t85FAWClQRianAydQW0Af9Fq+dQxNUAZF9tqj5jbFDP7+LQE7So3Tlwcu
+Vt4z7aW32nXGHkpOUhaFFKsHzZFaGpbnc0XiDY7OY7UyU04+XpCCtDbaCkE7QRk5UnlkeXzc
+wLDSqv1HXnrFZPha/m06jrz1isnwtfzaAtFKq/UdeesVk+Fr+bTqOvPWKyfC1/NoC0UqI0xP
+mS2Zka4paE2BJ6u+prOxZ2IcSpOeYylxPLyHI599S9AKUpQCq10rf812rP8Acsz+wXVlpUp0
+ys47otHCrQLvovog05dbULHARd/BTc64QLOll2JGWjLj761LWl5Q3Dx1JABUo458li1nrS8a
+l0tZfDzrEK5XS8RU3BuIzvnRY7aFMvp3IKQTlYykBJ8oNd1pVt/qjl+ytUoyaSr9/wAe5501
+jfLzD6cHbVKvr0uONUWREODOYYdQll1DinFtJU3lBQohAcRhXjeMVKwRYtLay1OrUcrT9z1B
+FuF2djS1x34MiK9bI6kJUUF9KGw8ykeKPHWckfw7TSpc010EdLKMm1N9b/11PNup9d3l7o11
+RBuNxTeLnDhxX1vhMC4WwkymkEJ2MgBXMkIc3EDn3gGrSdcat/yi+Deufpu1Hg3wH1ZH+jdm
+eubtvE9ud23yYrtNKb16ELS5E73vt8r+PxOT3q8WiyfSXTKvN0g22OvRobS7LkIZQVmaSEgq
+IGcAnHsNV/pG6S79aVdIQtt+abEZi1SdOKQy04lTTuzjuNkpIcQc/WO4DIxjlXeKVCku6Lz0
+82moyq23+qr1/M4WzrjWCLsJS73xYo6Rl6c6oqK0EmKru8YJ3bk+Q5/bmoyx9JWt5Fw08PCn
+XLjNTelTrL1RtPBdjtLVHYyE7xkpSe/cc8zg16HqpWvQdviakh36Td71dJEAPiAifKDqYvG+
+vtO0LVkcvHUrA5CpUo+hlLT5U1tm/bXxKn0N6v1DftRphzLr4ZgrsTE2W91dtvqM5S8Li5Qk
+dwycKyoY766zSlUk7Z14oOEabsUpSoNBSlKAUpSgIbXV6Rp3Rl4vzn1YEN2Rjz7Ukiv5xXrw
+ldpj1+muKekzlmQtzOclRzj/ANK/pVfLZBvVnmWi5MJkQpjKmH2ldy0KGCP4VwnU/wBGbT8e
+xqb0VNlQ5beVJZmvqeZdH6vPmn2Efvq8Gl1Mc0HNcHmro81fJsF0bKllIztIPcoeY1aNS3iy
+OamjIshK2Lh/OoQMoZexk7T5R56ibvoKba727B1BbXoL7J/m3OSV+ZSVdyk/srpOiOgrUD1o
+buUSKhDpJUx1p3ZgKGCQMebynz1twuTyJYG20k/wNj6P/wDzu2T/ALR/d3K9aVwbop6KtV6b
+19bb1ckwREj8XicN/crxmlpGBjzqFd5rGbtnd4djljxNSVc/wK5/9Idm8PdEN7TZFPiQEIU4
+GVYWpoLHEHIEkbc5AI5Z5+Q9ApVU6dnZkh5kHH1KDaG2EdDE5vSTluclC2SAyq1ONLQZPCOM
+KabbSV529yEnPkqg/R7vtvsTU4zZS49quLtngQP0a1IcuTkMdYQNoOFFweMTgZ7zXfKVbdw0
+YvTvdGSf+JwLTg0Y30hatkwoCbnppjTqpMtp1pxTYdbkKW4iSh/Klv7kFSVKxhAAAIANdC6C
+LW1b+jeDNTFjRnbwpV0eajthtpJewpKUpHJICNicf7NXulHK0MWmWOW78e3qQOpVbb3p1R8k
+x3+7O1xTWDlzP0gm1o43W/DFpMDGc9Q4L/W9v+xuxu8mcZrturIcx4QZsJrjuwny6WgQCtKk
+KQQM+XCif3VFeEbp6s3j+DPzKrGW1svnw+akrqnZZesp81Osp81VrwjdPVm8fwZ+ZTwjdPVm
+8fwZ+ZVbN6LL1lPmrVub4XHbSPLIZ/tU1CeEbp6s3j+DPzK+HJ10Xszpm8Da4hf1Wee1QVj+
+c9lBRl114BnRIdv1HJcbtsqRwnGFHbHlEpO1p5WOSCf6JICzhJ3Z2nZ0VKt3Z9pNquEqfAQt
+aI70hRUSgKIASsgFaB3JWd24AHcrvMZcXJFygvwLho65S4j6C28w+0wttxJ7wpJcwR7DWZud
+ckIS23pe7IQkBKQEshKR5Byc5CliiU0Md1unHz3SYf8AxlVzv6SIuRt8rwTxuteApP8ANZ3c
+PrEbid3+xvz7M10zSMGRAtBRLSlLzz7shaAc7S4sqxn2ZrU1BCntalt1/hRFThGjvR3Y7a0p
+cKXCk7k7iEkgoHIkcialOnZTJDfFx9UVr6PwV2ZvfAz4JOoZvgfH831PeNnD/wBjO7GOVdHq
+C8O3P1NvvvYfz6eHbn6m333sP59S3bsjFj8uCj6E7SoLw7c/U2++9h/Pp4dufqdffew/n1Bc
+aZ/03qj/AHo3/c41TtQ+mIkxo3KdOZEd+4y+sFgLCi0kNNtJBI5E4bBOOWSRk99TFAKUpQCl
+KUApSsIlxDOVBEpgy0th1TAcHECCSAop78ZBGe7lQGalaMK82edJEWFdYEl8tqdDTMhC1lAW
+UFWAc7QoFJPdkY763qlprqBStdidCfmSYTEyO7Ki7esModCls7hlO9IOU5HMZ762KgCla/Xo
+XhLwb1yP17g8fq3FHF4edu/bnO3PLOMZ5VsUApSlAKUpQClKUApSlAKUpQCvzI89Fd1VHpP1
+hC0nYSpaFSbjMyxBhtn9I84R/wAEjvJ8n7SKtCDnJRj1IbUVbJxL9gu8kNpdts9+MvITuQ4p
+pXn8pSaksivI3Z63aCsou8qa9H1K6eKHo7pSWiTnB/W/Ya6v0H9M1q1bAfg32dFhXKGAVuOu
+BtDyO7cMnGfOK682injjvjyjDHqIye18M7GCKVGQb/YJ0pEaFfLbJkLzsaZlIWtWBk4AOTyB
+P7qk643Frqbpp9BSlY5L7MaO5IkvNsstpKluOKCUpA7ySeQFQSZKVq225W65xOt22fFmxskc
+aO8lxGR3jckkUtlyt10YU/bLhEnNJWUKXHeS4kKHeCUk8/ZU0xZtUqKVqXTiUS1qv9qSiGQJ
+SjMbwwSdoC+fi8yBzxz5Vs2m62u7xlSbTcodwYSsoU5FfS6kKABKSUkjOCDj2iji1zRFo3KV
+D6lky0OW+BDe6u5OkFovbcltKUKWSAfLhJA9pqPdjMtXJu2O65uCJzqd7cZT8YOrT5wjh5I5
+H+FR16ElopUF4Dl+tN7/AIx/lU8By/Wm9/xj/KoCdpUF4Dl+tN7/AIx/lVik2qSw2Fr1RfSC
+tCOXV+9Sgkf6rzmgLFSqxdIjdqguT7pra5wYjWOI/IejNtpyQBlSmwBkkD99bPgSZjKdU3rP
+kzwCP7KgJ6lRWlZsida1GWUqfYkOxnFpGAstrKSrHkzjNRWr7hL8NwrMxcxaWXYz0uRMATlD
+bZSCAVeKPrg5IIwD+4C1Uqn2+yTLhERLt/SJdpcZz6jzHVVoV5OSg3g1sdl7x68333cf5VOg
+LRSqv2XvHrzffdx/lU7MXj15vvu4/wAqgLRSoXSkiYtNxt8+R1p+3S+rmRt2l0Fpt1JIHIHD
+gBx5R5O6pqgFKUoBSlKAVRukxi7W+fB1Np+DImT0R37e40w2VKUl1BU0ogf0UuoRk+QKJq80
+q0JbXZDVo4/dNP6mtV1VY7BIu7UKBo9JjOMKcSw7Obkhfk8UuLAII7ylR8la+o3ddSdMx34U
+C+Il3iXPkj9JJS5bkhOIzWxtaNu7an6+UpJJKTnB7RStlqHxaKeX8TztPs+qL3pbXct603zw
+lLh2VSAY7zK5LrbQRIATgcQAleU4IzggfVNWa29su1UXgdpArw8jZ1jj9U8D8MY38TxeL593
+6Td3867HSrPVNqq90l9AsfxOd3Zx219OSb1Jt90ctytNCKJEW3vyU8XrJVsPCQrB2jP8POKr
+WvZesidc+CWdUKTcGbY9ZFRmZA4SU7eOEgAFpR57kYCjzyO+u00qkc21p17Tslwvucaaa1q3
+cxPDmpCoa9XHDSlPKa8GK71bDy4XmV9UeQioa2z9bsXvTUJ+Zfmr/KTeesszHHExnn0srLGx
+KvEUgeIRjxR+3Nd+qAs+jdN2i5puNvtoakI3hol5xaWd5yvhoUopbye/aBmtI6hU7RV432ZU
+OiftR4eT17w74O8Cs9d8K8TPhHf4/C4nPZtz9Xxe6unUpXPknvldGkVSoUpSqEilKUApSlAY
+pjimYjzyUFxTaCoIH9IgZxXkPTnSjDuNwvGtNXBSbvlTVujr/m2G0nmhPmV5899ewFc0nNeb
+elzodixblIvkOCV24uLecQ0chBUcqKk+bOefdXoeHyx73Gfc5tUpbbicB1jqa4awua3QpYZK
+uXOsNsbVpp1m9LVhDCxxkk43tk4Un+FdG0h0bXW/XQw9NW7dFzlc17lHZB8m7+kfYP34rpb3
+0bY8pDYn3WLMUghWXWlgZ/6oVjFetm1OLH91s4ceGcuUjU6Hm+D0qWxrOdqnwD5/0Lleka5h
+oroxnWHV0S+yLwxJDJcKkJaKSrchSe/P+1XT68bXZY5cicXfB36eDhFpiqX022W5X7o1ulut
+KVuSiEOJaRnc6ErCikYIySAeRznzZwRdKVyQk4SUl2N2rVFTSxJuXRhNt0JUozHLa9GbVIjv
+x1lwtkDk+S53kcypX7apPQ+i66cXKlTtPXpLFxVara00iGQppxuKEPPLScFLQUMFfd5s12Kl
+aLNUXGupVx5TOUafbkQ9e33UFr0jcYcGNYFNsx3oIYKH0OqUWGUt+K4HCN+4bjlWMjuq4dF1
+vlW/RMFVxS6LlNBmzi6kpcL7p3qCgeYIyE48m0CrPSonl3KqJUaIDU6tl608rzTHf7s7XLdS
+2e9yOl4y2YMlbL13tc1qSlsltthhp1LySvuSSVDxScnNde1DalXNhksv9XkxnOKw4U7gFYII
+I8oIJH76iPBGqvtOz/c3PmVGPI8bbXcmUVImut/sp1v9lQvgjVX2nZ/ubnzKeCNVfadn+5uf
+MrIsTXW/2VrXGRvZbRy5yGf7VNR3gjVX2nZ/ubnzK/FWbVCtublZztUFD+Ru94II/wBZ5wKA
+19czIbDMKfcNOv3uNGdUVIYbL62VKSUhYZ/1neU5GSndnGNxElplYiWCFHTbhbUttAJh8bic
+BPkRu7uQwMDIGMAkAVreCNVfadn+5ufMp4H1T5bnaMeyI5n+0oDb0Kd1tnK890ln/wAZVUbp
+4tlxvDirdamlvTHbLIKG0fWWEyIylJHnJSCMeWuk2C2ptVuTFDqnVlanHFn+ktRyo/vJrWvl
+mdmXCJdIExMO4RUrQ2txritqQvG5Kk5SSOQPIg5Aq8JOElJdiGrVED0PwJsO03t+XEfiNT77
+LmRGX2y2tDC1DblB5pzgnBA76u1QXVdYfbdi+EO/madV1h9t2L4Q7+ZpOe+TZCVKidpUF1XW
+H23YvhDv5mnVdYfbdi+EO/maqSNM/wCm9Uf70b/ucap2o6w2xVtZkF6SZUqU8X5LxQEha9oS
+MJHcAlKUgc+QHMnnUjQClKUApSlAKVrXSa1boDkx9K1Nt4yEAE8yB5f218G4JQttMlhcUubz
++lcbGAkZJ5KOR+zOMc8CsJ6nHCeyT54+bpfqy6xyatI3KVgbmRHN3DlML2J3K2uA7R5z5hXy
+bhADHHM2MGt23fxU7c+bOe+refjq9y/UjZL0NmlairnbUhJVcIgCxlJLyeYyRkc/OCP3Vm6z
+G6x1brDXG7+HvG7+HfRZ8Uukl+vqHCS6oy0rW6614V8HbV8XgcfOBt27tuP25r7clxW+LxJL
+KODji7nANme7Pmz7aLNjab3dOPzQ2S9DNSsCZkNTvCTLYLm4o2BwZ3DvGPOKImQ1vcFEthTh
+JGwOAqyO8Y9lT52P/kv1GyXoZ6VijyY0jd1eQ07tOFbFhWP24rLVoyjJXF2iGmuGKUpViBSl
+KAUpSgFa82WxDaK3ie7O1IyTWxXOdRX8J6U2dOy2nFxHIiXAUH6qhk8/OK5NbqHp8Lmuprhx
++ZKi2t3qK0ltCIEhtK8lIShH/kD/AOVScSSzKa4jCwpPcfIQfMR5K4P0ndLWiEONMQ7pITcY
+bp2toYI7u8Z7qz9EvS5O1QzPmNQGGW0LCEpcyVnHLcSCOZry4eLywxlPUr7q7pep0fZN9KHU
+7vSqjp7VE243hiG8xHShzdkpByMJJ8/sq3V6Wh1+HXY3kwvhOvf6mGfTzwS2z6ilK17jNYt8
+NcqSra2jzd5PmHtrqnOOOLnN0kZRi5OkbFK1mJjbkEzFJU20EleVKSrxQM5ykkf8ax2q5x7k
+lwspcQUbSpLgAOFDKTyJ5EVmtTicox3cy6fEt5cqbrobtKjmbu29Icjohy+MhHEDakBJWndt
+yMkY5+fFbFumJmtLcQ061scLZC9vMjvxgkEeT91Rj1eHI0oO7+hMsU4q2jYUoJBUogAeUmsf
+WY3pDX9cVDarQmTNs1veyY0qWpL6AcBaUsrWAfZlIyPKOVaj0DSDVxEFWnrZvKkoKhBa2pUo
+EpB5ZycGr5c+PEk5urdfmRGEp9EWTrMb0hr+uKdZjekNf1xUX2b016vWn7m3/hTs3pr1etP3
+Nv8AwrUoSnWY3pDX9cU6zG9Ia/riovs3pr1etP3Nv/CtedYNOsMJWjTtnJLraOcJvuUtKT5P
+MaAnOsxvSGv64p1mP6Q1/XFVXU8fSVhgpec0vBmSXlcOLCiwGlPyXME7EA4GcAkkkJABJIAJ
+rPZLfo69WxE+BY7YWlkpUFQUNuNLBwpCkkAoWkggg8wRQFoBBGQcivlxaG07nFpQnzqOBULo
+hazaHmVLWtMabIjtlSskIQ6pKQSe/kBUNrcwpGrLZBu6ONbEwZEl1g80uLSptKcjuV9c8jyz
+jzVWc4wi5SdJEqLk6Rb+txPSmPeCnW4npTHvBVat2ktETmVONaWtaSham1oXEQFJUO8HFbPY
+bRvqvaPuqP8ACox5I5IqUXaZMouLpk51uJ6Ux7wU63E9KY94Kg+w2jfVe0fdUf4U7DaN9V7R
+91R/hVypYUqStIUlQUD3EHIr9qv6NaRDevdrYymJBuAbjoKieGhUdlwpGfJucVgeQcvJVgoB
+SlKAUpSgI/UUJ242d+GwpCXHNuCskDkoHyfsrTu9j47jHUG40dtDUhKkhO0FTje0HAH8anKV
+xajw/BqG5ZFy9q/+rtfN8m2PUTxpKPa/mqK1I07IebDYeZbHg1EYlOebiVBWe7uOO/v9lZ/B
+dwbhSURurMvSVJC1B9xR2AYPjKzz8g5ch58VPUrBeD6aLcopp1V/quPTq+nqaPV5GqZCSLdN
+WITKI0MRI4yY/HUApQPLJ2cwOR7u818eBZPX9/Fa4PXuub8nid31MYxj25qepVn4Xgk7lb6f
+JVXC6fD9K5KrUzXQi5MOam/i5RkR3EdV4BQ46UHO/dnkk1o3Sy3CUblw1Rk9eSyVBS1eIpGM
+geLzHt/4VYqVObwzDmjKMm6bb/Npp/qmxDUzg012+jsr/gOTu3b2N3hbrmcnPD83d3+zu9tR
+MKJxZkC3tPNuBpMpC3WwrekKBAKwQMHJq7Urmy+CYZSi4uqq/jynXXjoaR1s0nfvhr6kNZbV
+IiS0SJCmRw4iYyUtEndg53HIHOpmlK9LTaaGmhsh0OfJklklukKUpXQZilKUApSlACcAnzVw
+qXcTdemqY8EYRGiFKT+xJrup5jFc71BoGUm8yb1p+S21JfbKFtupyCCPIa8zxXBlz4duNWdO
+lnCE7keKNeu51ZLc87yv/Or59Gm6hmTLt2NxecJ/YPPVhvn0dtb3K7OSNkdCFrKiovoPf7M1
+1joP6EYug313G5Sm505Y5JSnxEfxrknoHqdM8ElVnR9oWPJvTJvRX/KeJ/8Az/8AoVXS6wtx
+YzawtuOyhQ7lJQARWat/BvDH4dgeJy3W7+SX0MdbqVqcimlXFCtK+wPCVrehhexSwCk5OMg5
+GfZW7SvTzYoZscsc1aap/mc0JOElJdUaYjOvWpyHICW1LbU2Sl1TnIjGcqAJqOs9ruNvJcSu
+KpxxTKHQSogNNo25HIeMf4VO0rnnocU5wm7uPR/L6v8AU0WeSTiujIZmBchOlzVuRUOuxy0g
+NbglSwTtWrPcQMDy1v2iKYVsjxVFJU2gBRT3FXlP8c1tUqcGjx4Zbo3fPX4u2RPNKap+6K/q
+lWy8afVnGJjv93drSkwXHbv1sOoDanmnlAk7tzYIAH8anr3a2brGQ04440ttYcadbOFNqHlH
+/wB86iOzFw9abh93Y/BVtTpMepSWRdHf0/ZjHlljtx7kj1o/rH+NOtH9Y/xqO7MXD1puH3dj
+8FOzFw9abh93Y/BXQZkj1o/rH+Na858rbaTnvkM/2qa1uzFw9abh93Y/BX4dLzzjOqJ5wQR/
+J2ORByD9SgMeprje4kNEyywmri4yrc9DKwhx9GDybWohKV5wRu5HGCU53DYsUq6qtyHLwIzc
+xwla2o5JQ0CeSNx+sQMAqwMnJAHdXx2YuHrTcPu7H4KdmJ/l1RcCPNwGPwUBm0Id1rmq89zl
+n/xlVFauhG468tsNKwhTlpl7Se7IdYI/8qtVot7FsgoiR9xSnJKlHJUT3knzmte82Vi5PR5Q
+kSYcyNngyY6khaAe8YUCkg+Ygju81Uy4o5scsc+jVP8ABkwm4SUl1RkskJyEw/xlILsiQt9Y
+QSUgq8gJ7+6t+oLwHdfXK+e5h/Ip4DuvrlfPcw/kVGHFHDBQj0QnJzluZO0qC8B3X1yvnuYf
+yKeA7p65Xz3MP5FalRpn/TeqP96N/wBzjVO1pWa2MWuMtllbrq3HC6888rct1Z71KPn5AcsA
+AAAACt2gFKVRukLUuobZrLSunNPi1pcvaZxW7NYW4ElhpLiQAlacbskEnOMg45YNZSUVbNMW
+J5ZbY/F/orfyReaVymJ046Zb0vZrpdGH2pdwhLluRmltjhIQ4ptRBcWjdlSFbUpyogHAqzw+
+kOyz9Qs2e1xLrcd7cZx2VFi72I4kIK2S4c7khSRndtKRkZIzVFmg+jN56HUQvdB8X8uC30rn
+Nx6WLX1fUka1wH5N2sttdn9X48dxC0IO0krbdUBtOCpJIXjuSSQDWLX0x3qPcLWrU1qag206
+dF6nvtsJKlpcXsa4QEhW1BUptIKsrKjzQgHKYeogn1Lw8O1E02l/Prx6nbaVzNPS7ZLkmALS
+64265fYlrkNrYak/z4UU4W0+EAHYfHCl7SCCgnu3dOdLFgvirQGLdd4yLwxJdguSW2kIdMfP
+FRniHBAGcnCfb31KzQfcpLQ54q3H31/ZX+Bf6Vy+69M9lZ0pfb3bLVLuDlkdYblMJkxylPGO
+G18VtxaCknxfE3KB70jBImIvSdY3rw1bnIF0jBy4ptSpLjbZZbnFO4xlFKyd47iQCnPco99F
+mg+4eh1CVuPvh/s0XilVLtNP/wAsfY3gxvB/Z7wnxNquLxescLGc427eeMZz5fJWtqLpMsNi
+7VdbiXJfZjqfXeE2g8TrOOHw8rGcZGc7fZmrPJFctlFpcsmlFW2k/wBXS+bLtSqIz0pWFy7C
+Aq33dtHh5dgMpTKOCJae5OQsqwryHH7cVgg9L2mJUi3jql1Zh3ETVxZzrKAwtuKhSnXOSyrb
+hJA8XOfIO+o86HqW+xZ/+L9/0zoVKqejte2nU9xFvjxLjBkuQEXGOiY2lPHirO1LqNqleLnH
+I4PMcqtlWjJSVowyY545bZqmKUpVigpSlAKUpQCo7UN8tVgt6p93mtRI4ONyz3nzAeU1I1xL
+6Rt6s9rv1gfvdtdukOLvdXES9sCycbc8jkAju8tZ5ZuEG0dWiwRz5lCXT4dS2L6Zej9tex68
+ONYIBLkZaRz8vMVeLZcIV0gtTrfKalRnU7kONq3JUK8B6q1A9qnUcy5Oo4a5DpUEAYShPclI
+A8wwK2bi5Kt1ltwiz5SArfuCHCkZyPIDXnrXTVuS4PpJ/wDT2CaisU2m+t8/we/KV4z+jdcb
+g/002Bp+dKdbV1nKVuqIP8md8hNezK7dPn86O6qPC8T8PegyrG5Xav07v+BSlVPpc1cvRGg5
+2oWYqJT7JQ2y2tYSkrWoJBPMEgZzhPPl5BkjWUlFNs4cWOWWahHq+C2UqrQdQy2OjeRqq4uR
+JqmYLs3ERCUIUlCCraCl11JPinxkrIqG6HNc3PV6rnFu8aG1KhMQZQVFSpKFNyo4eSkhSlHc
+nJBOefmFV8yNpepr9lybJTXSPX9joVK5xaNT6zla2vGlJ6tPQpES3omtyUMPONs7ncBBStbZ
+fHD5lxG1KVHackYM70W3y66k0wq8XNUNbb8p0QXY0dbAdjpVtS4UKWsgqIUfrdxTSORSdInJ
+pZ447m12+fQssqQxFYU/JeQy0gZUtZwBUT2u0v8Ab9u9+mvjU6EO3awMOpC2nJqytChkK2sO
+KTkexSQf3VSL/wBJtxt3Sf2dahRFWxi5W+2PqUFcZTsttxaVpOdoSnYAQUnOTzFTPIodSuDT
+zztqHZWXrtdpf7ft3v007XaX+37d79NS+6m6rmBEdrtL/b9u9+mna7S/2/bvfpqX3Vr3F9xq
+OlTatqi80nOPIpxIP/AmgNDtdpf7ft3v00GrtMEgC/24k/8Az001RdLnb4rabNZXLtOeXtba
+LvBaSBzUpx0ghIxyHIkkgYxkjdtssXC2syVxJEbjIyuPJb2uNnypUOYyO7kSD3gkYNAbjTiH
+W0uNrStChkKByCK17pcoFrjGTcZjERkd63VhI/iai9DAItUplAw2zcJTTaR3JQl5QSkewAYq
+mdNmouy0xm+KiNTeo2x95lh3mjjF5hpCj+zin9xNVlJRVsvjxyyTUI9XwW7t3oz1ntP3lP8A
+jTt3oz1ntP3lP+NaHRjfHNS2y6i5wYKJ1pu8m1vqjtFLbimiPHSlRJAIUORJ/bVt6rG9HZ/q
+CkZblaJy43jm4S6oge3ejPWe0/eU/wCNO3ejPWe0/eU/41PdVjejs/1BTqsb0dn+oKsZn5Dl
+R5kZEmI8h9lwZQtByFD2Gs1QGkm249x1HFYQlthm5jhtpGEo3RmFqwPJlS1H9pNT9AKrGstF
+w9TXa03Vy6XS3TLUmQmM7CW2Dh9AQ5nehX9EYBGCMk9+MWelRKKkqZfHkljlui+faKQvoysL
+KbebPMutjdg29VuQ9b5CUOLjqVvKFKUlXPdlW5OFZJINbiNB2xrVXaKLcr1FkLDHWmmppDcw
+sIKGy8cb14CjkbsK5bgatdKr5cPQ1eqzPrI5xa+hzTVsaeah3G8toetkq1LSXm1fyZ9SlqRz
+b5bVrKknvz3lQ5VtS+ijS8xttqY5cH2kafasAbU6kAsNuJcQvkkHiBSUnPdy+rV9pVfJhVUW
+eu1Dd73ZTZHR7CmIgeE7/qC4uwbtHurTkmUhR4jIIQjaEBCUczkJSkk8yc1oRuiPTLNnsVq6
+1dXI1ljz47AW8jLiJiVJd3kIGSAo7du3HlzXQaVPlQfYhazOlS

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[07/10] james-project git commit: MAILBOX-278 Ensure other attachments are parsed when one of them is failing

Posted by ad...@apache.org.
MAILBOX-278 Ensure other attachments are parsed when one of them is failing


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/05df700b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/05df700b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/05df700b

Branch: refs/heads/master
Commit: 05df700b87cd1bc6ea496c5f8ea034f26110ba82
Parents: d87642a
Author: Laura Royet <lr...@linagora.com>
Authored: Fri Jan 27 14:46:36 2017 +0100
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Feb 7 16:15:23 2017 +0700

----------------------------------------------------------------------
 .../json/IndexableMessageTest.java              | 33 +++++++++++++
 .../resources/eml/emailWith3Attachments.eml     | 50 ++++++++++++++++++++
 2 files changed, 83 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/05df700b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
index 55ce95c..f5ff7fc 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessageTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.elasticsearch.json;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -31,6 +32,8 @@ import javax.mail.Flags;
 import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.elasticsearch.IndexAttachments;
+import org.apache.james.mailbox.extractor.ParsedContent;
+import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
@@ -38,6 +41,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 
 public class IndexableMessageTest {
 
@@ -246,4 +250,33 @@ public class IndexableMessageTest {
         // Then
         assertThat(indexableMessage.getAttachments()).isNotEmpty();
     }
+
+    @Test
+    public void otherAttachmentsShouldBeenIndexedWhenOneOfThemCannotBeParsed() throws Exception {
+        //Given
+        MailboxMessage mailboxMessage = mock(MailboxMessage.class);
+        TestId mailboxId = TestId.of(1);
+        when(mailboxMessage.getMailboxId())
+            .thenReturn(mailboxId);
+        when(mailboxMessage.getFullContent())
+            .thenReturn(new ByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/emailWith3Attachments.eml"))));
+        when(mailboxMessage.createFlags())
+            .thenReturn(new Flags());
+        when(mailboxMessage.getUid())
+            .thenReturn(MESSAGE_UID);
+
+        TextExtractor textExtractor = mock(TextExtractor.class);
+        when(textExtractor.extractContent(any(), any(), any()))
+            .thenReturn(new ParsedContent("first attachment content", ImmutableMap.of()))
+            .thenThrow(new RuntimeException("second cannot be parsed"))
+            .thenReturn(new ParsedContent("third attachment content", ImmutableMap.of()));
+
+        // When
+        IndexableMessage indexableMessage = IndexableMessage.from(mailboxMessage, ImmutableList.of(new MockMailboxSession("username").getUser()),
+                textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES);
+
+        // Then
+        assertThat(indexableMessage.getText()).contains("first attachment content");
+        assertThat(indexableMessage.getText()).contains("third attachment content");
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/05df700b/mailbox/elasticsearch/src/test/resources/eml/emailWith3Attachments.eml
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/resources/eml/emailWith3Attachments.eml b/mailbox/elasticsearch/src/test/resources/eml/emailWith3Attachments.eml
new file mode 100644
index 0000000..e4b7185
--- /dev/null
+++ b/mailbox/elasticsearch/src/test/resources/eml/emailWith3Attachments.eml
@@ -0,0 +1,50 @@
+To: Laura ROYET <la...@linagora.com>
+From: Laura Royet <la...@linagora.com>
+Subject: test
+Message-ID: <cb...@linagora.com>
+Date: Wed, 11 Jan 2017 11:52:35 +0100
+User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
+ Thunderbird/45.6.0
+MIME-Version: 1.0
+Content-Type: multipart/mixed;
+ boundary="------------36566F1E9D791340FFB75FF8"
+
+This is a multi-part message in MIME format.
+--------------36566F1E9D791340FFB75FF8
+Content-Type: text/plain; charset=utf-8; format=flowed
+Content-Transfer-Encoding: 7bit
+
+
+
+-- 
+Laura Royet
+
+
+--------------36566F1E9D791340FFB75FF8
+Content-Type: application/vnd.oasis.opendocument.text;
+ name="attachment1.odt"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment;
+ filename="attachment1.odt"
+
+UEsDBBQAAAgAAGJVK0pexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQu
+dC54bWxQSwUGAAAAABEAEQBwBAAAjyUAAAAA
+--------------36566F1E9D791340FFB75FF8
+Content-Type: text/html; charset=UTF-8;
+ name="attachment2-nonIndexableAttachment.html"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment;
+ filename="attachment2-nonIndexableAttachment.html"
+
+PCFET0NUWVBFIGh0bWw+CjxodG1sIGNsYXNzPSJtb3ppbGxhIiBsYW5nPSJlbiI+PGhlYWQ+
+CI+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=
+--------------36566F1E9D791340FFB75FF8
+Content-Type: application/vnd.oasis.opendocument.text;
+ name="attachment3.odt"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment;
+ filename="attachment3.odt"
+
+UEsDBBQAAAgAAG9VK0pexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQu
+AAAAEgkAABNRVRBLUlORi9tYW5pZmVzdC54bWxQSwUGAAAAABEAEQBwBAAApyUAAAAA
+--------------36566F1E9D791340FFB75FF8--


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[02/10] james-project git commit: MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails

Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/attachment/nonIndexableAttachment.html
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/attachment/nonIndexableAttachment.html b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/attachment/nonIndexableAttachment.html
new file mode 100644
index 0000000..e692316
--- /dev/null
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/attachment/nonIndexableAttachment.html
@@ -0,0 +1,827 @@
+<!DOCTYPE html>
+<html class="mozilla" lang="en"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+    
+
+
+
+
+
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=Edge">
+<meta name="application-name" content="JIRA" data-name="jira" data-version="6.4.5"><meta name="ajs-serverRenderedViewIssue" content="true">
+<meta name="ajs-hasCriteriaAutoUpdate" content="true">
+<meta name="ajs-viewissue-use-history-api" content="false">
+<meta name="ajs-viewissue-max-cache-size" content="">
+<meta name="ajs-autocomplete-enabled" content="true">
+<meta name="ajs-view-issue-trace-key" content="jira.issue.refreshed">
+<meta name="ajs-view-issue-psycho-key" content="jira.psycho.issue.refreshed">
+<meta name="ajs-view-issue-refreshed-cached-key" content="jira.psycho.issue.refreshed.cached">
+<meta name="ajs-return-to-search-trace-key" content="jira.returned.to.search">
+<meta name="ajs-return-to-search-psycho-key" content="jira.psycho.returned.to.search">
+<meta name="ajs-default-avatar-url" content="https://ci.open-paas.org/jira/secure/useravatar?size=xsmall&amp;avatarId=10123">
+<meta name="ajs-jira.issues.preferred.layout.key" content="split-view">
+<meta name="ajs-max-recent-searchers" content="10">
+<meta name="ajs-jira-base-url" content="https://ci.open-paas.org/jira">
+<meta name="ajs-dev-mode" content="false">
+<meta name="ajs-context-path" content="/jira">
+<meta name="ajs-version-number" content="6.4.5">
+<meta name="ajs-build-number" content="64020">
+<meta name="ajs-is-beta" content="false">
+<meta name="ajs-is-rc" content="false">
+<meta name="ajs-is-snapshot" content="false">
+<meta name="ajs-is-milestone" content="false">
+<meta name="ajs-remote-user" content="scolson">
+<meta name="ajs-remote-user-fullname" content="Stephane COLSON">
+<meta name="ajs-user-locale" content="en_US">
+<meta name="ajs-user-locale-group-separator" content=",">
+<meta name="ajs-app-title" content="OpenPaas-Linagora">
+<meta name="ajs-keyboard-shortcuts-enabled" content="true">
+<meta name="ajs-keyboard-accesskey-modifier" content="Alt+Shift">
+<meta name="ajs-enabled-dark-features" content="[&quot;com.atlassian.jira.projects.issuenavigator&quot;,&quot;com.atlassian.jira.projects.ProjectCentricNavigation.Switch&quot;,&quot;jira.plugin.devstatus.phasetwo.enabled&quot;,&quot;com.atlassian.jira.config.PDL&quot;,&quot;jira.frother.reporter.field&quot;,&quot;jira.plugin.devstatus.phasetwo&quot;,&quot;com.atlassian.jira.darkfeature.CommonHeader&quot;,&quot;app-switcher.new&quot;,&quot;frother.assignee.field&quot;,&quot;jira.issue.status.lozenge&quot;]">
+<meta name="ajs-date-relativize" content="true">
+<meta name="ajs-date-time" content="h:mm a">
+<meta name="ajs-date-day" content="EEEE h:mm a">
+<meta name="ajs-date-dmy" content="dd/MMM/yy">
+<meta name="ajs-date-complete" content="dd/MMM/yy h:mm a">
+<meta name="ajs-in-admin-mode" content="false">
+<meta name="ajs-is-sysadmin" content="true">
+<meta name="ajs-is-admin" content="true">
+<meta name="ajs-outgoing-mail-enabled" content="true">
+<script type="text/javascript">var AJS=AJS||{};AJS.debug=true;</script><meta name="ajs-admin-quicksearch-show" content="true">
+
+
+    
+<meta id="atlassian-token" name="atlassian-token" content="BE2F-79PL-H8QS-2STB|99bf85b35fda4cb18ee69314eef5a1392be0a3d3|lin">
+
+
+
+<link rel="shortcut icon" href="https://ci.open-paas.org/jira/s/en_US-j84vrp/64020/3/_/favicon.ico">
+
+
+    
+
+
+<!--[if IE]><![endif]-->
+<script type="text/javascript">var contextPath = '/jira';</script>
+<script>
+window.WRM=window.WRM||{};window.WRM._unparsedData=window.WRM._unparsedData||{};
+WRM._unparsedData["com.atlassian.plugins.atlassian-plugins-webresource-plugin:context-path.context-path"]="\"/jira\"";
+WRM._unparsedData["jira.webresources:dateFormatProvider.dateFormat"]="{\"meridiem\":[\"AM\",\"PM\"],\"eras\":[\"BC\",\"AD\"],\"months\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"monthsShort\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],\"weekdaysShort\":[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],\"weekdays\":[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]}";
+WRM._unparsedData["com.atlassian.jira.jira-header-plugin:dismissedFlags.flags"]="{\"dismissed\":[\"com.atlassian.jira.tzdetect.-36000000,-36000000\",\"com.atlassian.jira.tzdetect.-18000000,-14400000\",\"com.atlassian.jira.tzdetect.-28800000,-25200000\"]}";
+WRM._unparsedData["com.atlassian.jira.jira-header-plugin:newsletter-signup-tip.newsletterSignup"]="{\"formUrl\":\"https://www.atlassian.com/apis/exact-target/{0}/subscribe?mailingListId=1239131\",\"userEmail\":\"scolson@linagora.com\",\"showNewsletterTip\":false}";
+WRM._unparsedData["com.atlassian.jira.plugins.greenhopper-marketing-plugin:gh-advertising-resources.urls"]="{\"hamlet\":\"https://hamlet.atlassian.com/\",\"lasso\":\"https://id.atlassian.com/\",\"mac\":\"https://my.atlassian.com\"}";
+WRM._unparsedData["com.atlassian.jira.plugins.jira-admin-helper-plugin:notification-event-provider.notification-event-data"]="[{\"id\":1,\"name\":\"Issue Created\",\"isDefault\":true},{\"id\":2,\"name\":\"Issue Updated\"},{\"id\":3,\"name\":\"Issue Assigned\"},{\"id\":4,\"name\":\"Issue Resolved\"},{\"id\":5,\"name\":\"Issue Closed\"},{\"id\":6,\"name\":\"Issue Commented\"},{\"id\":14,\"name\":\"Issue Comment Edited\"},{\"id\":17,\"name\":\"Issue Comment Deleted\"},{\"id\":7,\"name\":\"Issue Reopened\"},{\"id\":8,\"name\":\"Issue Deleted\"},{\"id\":9,\"name\":\"Issue Moved\"},{\"id\":10,\"name\":\"Work Logged On Issue\"},{\"id\":11,\"name\":\"Work Started On Issue\"},{\"id\":12,\"name\":\"Work Stopped On Issue\"},{\"id\":15,\"name\":\"Issue Worklog Updated\"},{\"id\":16,\"name\":\"Issue Worklog Deleted\"},{\"id\":13,\"name\":\"Generic Event\"}]";
+WRM._unparsedData["com.atlassian.jira.plugins.jira-admin-helper-plugin:permissions-provider.permissions-data"]="[{\"permissions\":[{\"name\":\"Administer Projects\",\"id\":\"23\"},{\"name\":\"Browse Projects\",\"id\":\"10\"},{\"name\":\"View Development Tools\",\"id\":\"29\"},{\"name\":\"View Read-Only Workflow\",\"id\":\"45\"}],\"name\":\"Project Permissions\"},{\"permissions\":[{\"name\":\"Create Issues\",\"id\":\"11\"},{\"name\":\"Edit Issues\",\"id\":\"12\"},{\"name\":\"Transition Issues\",\"id\":\"46\"},{\"name\":\"Schedule Issues\",\"id\":\"28\"},{\"name\":\"Move Issues\",\"id\":\"25\"},{\"name\":\"Assign Issues\",\"id\":\"13\"},{\"name\":\"Assignable User\",\"id\":\"17\"},{\"name\":\"Resolve Issues\",\"id\":\"14\"},{\"name\":\"Close Issues\",\"id\":\"18\"},{\"name\":\"Modify Reporter\",\"id\":\"30\"},{\"name\":\"Delete Issues\",\"id\":\"16\"},{\"name\":\"Link Issues\",\"id\":\"21\"},{\"name\":\"Set Issue Security\",\"id\":\"26\"}],\"name\":\"Issue Permissions\"},{\"permission
 s\":[{\"name\":\"View Voters and Watchers\",\"id\":\"31\"},{\"name\":\"Manage Watchers\",\"id\":\"32\"}],\"name\":\"Voters & Watchers Permissions\"},{\"permissions\":[{\"name\":\"Add Comments\",\"id\":\"15\"},{\"name\":\"Edit All Comments\",\"id\":\"34\"},{\"name\":\"Edit Own Comments\",\"id\":\"35\"},{\"name\":\"Delete All Comments\",\"id\":\"36\"},{\"name\":\"Delete Own Comments\",\"id\":\"37\"}],\"name\":\"Comments Permissions\"},{\"permissions\":[{\"name\":\"Create Attachments\",\"id\":\"19\"},{\"name\":\"Delete All Attachments\",\"id\":\"38\"},{\"name\":\"Delete Own Attachments\",\"id\":\"39\"}],\"name\":\"Attachments Permissions\"},{\"permissions\":[{\"name\":\"Work On Issues\",\"id\":\"20\"},{\"name\":\"Edit Own Worklogs\",\"id\":\"40\"},{\"name\":\"Edit All Worklogs\",\"id\":\"41\"},{\"name\":\"Delete Own Worklogs\",\"id\":\"42\"},{\"name\":\"Delete All Worklogs\",\"id\":\"43\"}],\"name\":\"Time Tracking Permissions\"}]";
+WRM._unparsedData["com.atlassian.jira.plugins.jira-dnd-attachment-plugin:drag-and-drop-attachment-javascript.upload-limit"]="\"10485760\"";
+WRM._unparsedData["com.atlassian.plugins.atlassian-plugins-webresource-rest:web-resource-manager.resource-base-url-pattern"]="\"(?:/jira(?:/s/.*?/_)?/download)\"";
+WRM._unparsedData["com.atlassian.plugins.base-hipchat-integration-plugin:configure-integration-data.configure-integration"]="{\"inviteEnabled\":false}";
+WRM._unparsedData["com.atlassian.plugins.base-hipchat-integration-plugin:hipchat-installed-scopes.scopes"]="{}";
+WRM._unparsedData["com.atlassian.plugins.base-hipchat-integration-plugin:hipchat-user-link-support.user-link-context"]="{\"userLinked\":false,\"userHasManageRoomsScope\":false,\"beginOauth\":\"https://ci.open-paas.org/jira/rest/hipchat/integration/latest/oauth2/begin\"}";
+WRM._unparsedData["com.atlassian.plugins.base-hipchat-integration-plugin:integration-steps-resources.enable-invite"]="{\"inviteToHipChatEnabled\":true,\"isInvitationsToGroupAllowedURI\":\"https://ci.open-paas.org/jira/rest/hipchat/integration/latest/groups/default/invitations-allowed\"}";
+WRM._unparsedData["com.atlassian.plugins.browser.metrics.browser-metrics-plugin:api.feature-data-provider"]="true";
+WRM._unparsedData["com.atlassian.plugins.browser.metrics.browser-metrics-plugin:browser-metrics.feature-data-provider-legacy"]="true";
+WRM._unparsedData["com.atlassian.plugins.helptips.jira-help-tips:common.JiraHelpTipData"]="{\"dismissed\":[\"add.new.users\",\"automaticTransitionDevSummaryTooltip\",\"devstatus.cta.createbranch.tooltip\",\"hipchat.feature.discovery.tip\",\"notification-helper-helptip\",\"permission-helper-helptip\",\"sidebar-chaperone-collapse-tip\",\"sidebar-chaperone-disable-tip\",\"sidebar-chaperone-general-overview-tip\",\"split-view-intro\",\"view.all.issues\"],\"anonymous\":false}";
+WRM._unparsedData["com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources.resource-uris"]="{\"deployJava.html\":\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/deployJava.html\",\"clipboard.jar\":\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/clipboard.jar\",\"clipboard-legacy.jar\":\"/jira/s/en_US-j84vrp/64020/3/1.5.27/_/download/resources/com.atlassian.plugins.jira-html5-attach-images:jira-html5-attach-images-resources/clipboard-legacy.jar\"}";
+</script>
+<link type="text/css" rel="stylesheet" href="test_files/batch_002.css" media="all">
+<!--[if lte IE 9]>
+<link type="text/css" rel="stylesheet" href="/jira/s/4fc2450354ce7afde50f0e2acff5da33-CDN/en_US-j84vrp/64020/3/38/_/download/superbatch/css/batch.css?conditionalComment=lte+IE+9" media="all">
+<![endif]-->
+<link type="text/css" rel="stylesheet" href="test_files/batch.css" media="all">
+<link type="text/css" rel="stylesheet" href="test_files/com.css" media="all">
+<script type="text/javascript" src="test_files/batch_002.js"></script><style type="text/css">:root #header + #content > #left > #rlblock_left,
+:root #content > #right > .dose > .dosesingle,
+:root #content > #center > .dose > .dosesingle
+{display:none !important;}</style><style></style><style type="text/css"></style>
+<script type="text/javascript" src="test_files/batch.js"></script><style type="text/css"></style><style type="text/css"></style><link type="text/css" charset="ISO-8859-1" href="test_files/common.css" rel="stylesheet">
+<script type="text/javascript" src="test_files/com.js"></script>
+<script type="text/javascript" src="test_files/jira_002.js"></script>
+<script type="text/javascript" src="test_files/jira.js"></script>
+
+<script type="text/javascript" src="test_files/shortcuts.js"></script>
+
+
+
+    
+    
+    <meta name="decorator" content="atl.general">
+    <meta id="isNavigator" name="isNavigator" content="true">
+    <meta name="ajs-is-inline-edit-enabled" content="true">
+    <meta name="ajs-user.search.mode" content="basic">
+    <meta name="ajs-issue-search-help-title" content="Searching for Issues">
+    <meta name="ajs-issue-search-help-url" content="https://docs.atlassian.com/jira/docs-064/Searching+for+Issues">
+    <meta name="ajs-advanced-search-help-title" content="Performing Advanced Searches">
+    <meta name="ajs-advanced-search-help-url" content="https://docs.atlassian.com/jira/docs-064/Advanced+Searching">
+                <meta name="ajs-remote-user-avatar-url" content="https://ci.open-paas.org/jira/secure/useravatar?avatarId=10111">
+    
+    
+
+
+
+
+
+
+<meta name="ajs-can-search-users" content="true">
+<meta name="ajs-can-edit-watchers" content="true">
+<meta name="ajs-default-avatar-url" content="https://ci.open-paas.org/jira/secure/useravatar?size=xsmall&amp;avatarId=10123">
+<meta name="ajs-issue-key" content="OR-2349">
+<meta name="ajs-server-view-issue-is-editable" content="true">
+
+<title>[OR-2349] Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated - OpenPaas-Linagora</title>
+<link rel="search" type="application/opensearchdescription+xml" href="https://ci.open-paas.org/jira/osd.jsp" title="[OR-2349] Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated - OpenPaas-Linagora">
+
+
+<style>@media print {#UNIQUE_ID-ghostery {display:none !important}}</style></head>
+
+
+
+
+
+<body data-aui-version="5.7.27" id="jira" class="aui-layout aui-theme-default ka ajax-issue-search-and-view page-type-navigator navigator-issue-only" data-version="6.4.5">
+<div id="page">
+    <header id="header" role="banner">
+        
+    
+        
+            
+        
+    
+
+
+
+
+
+<script>
+    AJS.$(function () {
+        var licenseBanner = require("jira/license-banner");
+        licenseBanner.showLicenseBanner("");
+        licenseBanner.showLicenseFlag("");
+    });
+</script>
+
+
+
+
+
+
+
+        
+
+
+
+        
+
+
+
+<fieldset class="parameters hidden dont-default-focus">
+    <input title="tzdetect.pref.tzid" value="Europe/Paris" type="hidden">
+    <input title="tzdetect.pref.tzname" value="(GMT+01:00) Paris" type="hidden">
+    <input title="tzdetect.pref.janOffset" value="3600000" type="hidden">
+    <input title="tzdetect.pref.julyOffset" value="7200000" type="hidden">
+</fieldset>
+<nav data-aui-responsive="true" class="aui-header aui-dropdown2-trigger-group" role="navigation"><div class="aui-header-inner"><div class="aui-header-before"><a class=" aui-dropdown2-trigger app-switcher-trigger __skate" aria-owns="app-switcher" aria-controls="app-switcher" aria-haspopup="true" data-aui-trigger="" href="#app-switcher"><span class="aui-icon aui-icon-small aui-iconfont-appswitcher">Linked Applications</span></a><div id="app-switcher" class="aui-dropdown2 aui-style-default"><div class="aui-dropdown2-section"><ul class="nav-links"><li class="nav-link nav-link-local"><a href="https://ci.open-paas.org/jira/" class="aui-dropdown2-radio aui-dropdown2-checked" title="https://ci.open-paas.org/jira/"><span class="nav-link-label">OpenPaas-Linagora</span></a></li><li class="nav-link"><a href="https://ci.open-paas.org/stash/" class="aui-dropdown2-radio " title="https://ci.open-paas.org/stash/"><span class="nav-link-label">Stash - OpenPaas</span></a></li><li class="nav-link"><a hr
 ef="https://ci.open-paas.org/jenkins/" class="aui-dropdown2-radio " title="https://ci.open-paas.org/jenkins/"><span class="nav-link-label">Jenkins - OpenPaas</span></a></li></ul></div><div class="aui-dropdown2-section"><ul class="nav-links"><li><a class="nav-link-edit-wrapper" href="https://ci.open-paas.org/jira/plugins/servlet/customize-application-navigator"><span class="nav-link-edit">Configure\u2026</span></a></li></ul></div></div><script>
+            (function (NL) {
+                var initialise = function () {
+                    // For some milestones of AUI, the atlassian soy namespace was renamed to aui. Handle that here by ensuring that window.atlassian is defined.
+                    window.atlassian = window.atlassian || window.aui;
+                    new NL.AppSwitcher({
+                        dropdownContents: '#app-switcher'
+                    });
+                };
+                if (NL.AppSwitcher) {
+                    initialise();
+                } else {
+                    NL.onInit = initialise;
+                }
+            }(window.NL = (window.NL || {})));
+            window.NL.environment = {isUserAdmin: true, isAppSuggestionAvailable: false};</script></div><div class="aui-header-primary"><h1 id="logo" class="aui-header-logo aui-header-logo-custom"><a href="https://ci.open-paas.org/jira/secure/MyJiraHome.jspa"><img data-aui-responsive-header-index="0" src="test_files/icon-jira-logo.png" alt="OpenPaas-Linagora"></a></h1><ul style="width: auto;" class="aui-nav __skate">
+
+
+
+
+<li><a class="aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger " href="https://ci.open-paas.org/jira/secure/Dashboard.jspa" id="home_link" accesskey="d" title="View and manage your dashboards" aria-haspopup="true" aria-owns="home_link-content">Dashboards</a><div id="home_link-content" class="aui-dropdown2 aui-style-default" data-aui-dropdown2-ajax-key="home_link"></div></li><li><a class="aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger " href="https://ci.open-paas.org/jira/browse/OR" id="browse_link" accesskey="p" title="View recent projects and browse a list of projects" aria-haspopup="true" aria-owns="browse_link-content">Projects</a><div id="browse_link-content" class="aui-dropdown2 aui-style-default" data-aui-dropdown2-ajax-key="browse_link"></div></li><li><a class="aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger " href="https://ci.open-paas.org/jira/issues/" id="find_link" accesskey="i" title="Search for issues and vi
 ew recent issues" aria-haspopup="true" aria-owns="find_link-content">Issues</a><div id="find_link-content" class="aui-dropdown2 aui-style-default" data-aui-dropdown2-ajax-key="find_link"></div></li><li><a class="aui-nav-link aui-dropdown2-ajax jira-ajax-menu aui-dropdown2-trigger " href="https://ci.open-paas.org/jira/secure/GreenHopper.jspa" id="greenhopper_menu" title="Manage your project with JIRA Agile" aria-haspopup="true" aria-owns="greenhopper_menu-content">Agile</a><div id="greenhopper_menu-content" class="aui-dropdown2 aui-style-default" data-aui-dropdown2-ajax-key="greenhopper_menu"></div></li>
+<li style="display: none;"><a id="aui-responsive-header-dropdown-trigger-0" class=" aui-dropdown2-trigger __skate" aria-owns="aui-responsive-header-dropdown-content-0" aria-controls="aui-responsive-header-dropdown-content-0" aria-haspopup="true" data-aui-trigger="" href="#">More<span class="icon aui-icon-dropdown"></span></a><div id="aui-responsive-header-dropdown-content-0" class="aui-dropdown2 aui-style-default"><div class="aui-dropdown2-section"><ul id="aui-responsive-header-dropdown-list-0"></ul></div></div></li><li id="create-menu"><a id="create_link" class="aui-button aui-button-primary aui-style create-issue " title="Create a new issue / bug / feature request / etc ( Type 'c' )" href="https://ci.open-paas.org/jira/secure/CreateIssue%21default.jspa" accesskey="c">Create</a></li></ul></div><div class="aui-header-secondary"><ul class="aui-nav __skate"><li>
+    <form action="/jira/secure/QuickSearch.jspa" method="get" id="quicksearch" class="aui-quicksearch dont-default-focus ajs-dirty-warning-exempt">
+        <input id="quickSearchInput" class="search" title="Search ( Type '/' )" placeholder="Search" name="searchString" accesskey="q" type="text">
+        <input class="hidden" value="Search" type="submit">
+    </form>
+</li>
+
+
+
+    <li id="system-help-menu">
+        <a class="aui-nav-link aui-dropdown2-trigger" id="help_menu" aria-haspopup="true" aria-owns="system-help-menu-content" href="https://docs.atlassian.com/jira/docs-064/JIRA+Documentation" target="$textUtils.htmlEncode($rootHelpMenuItem.params.target)" title="Help"><span class="aui-icon aui-icon-small aui-iconfont-help">Help</span></a>
+        <div id="system-help-menu-content" class="aui-dropdown2 aui-style-default">
+                            <div class="aui-dropdown2-section">
+                                                                <ul id="jira-help" class="aui-list-truncate">
+                                                            <li>
+                                    <a id="view_help" class="" title="Goto the online documentation for JIRA" href="https://docs.atlassian.com/jira/docs-064/JIRA+Documentation" target="_blank">Online Help</a>
+                                </li>
+                                                            <li>
+                                    <a id="gh_view_help" class="" title="Get help online for JIRA Agile" href="http://docs.atlassian.com/agile/docs-067/JIRA+Agile+Documentation" target="_blank">JIRA Agile Help</a>
+                                </li>
+                                                            <li>
+                                    <a id="keyshortscuthelp" class="" title="Get more information about JIRA's Keyboard Shortcuts ( Type '?' )" href="https://ci.open-paas.org/jira/secure/ViewKeyboardShortcuts%21default.jspa" target="_blank">Keyboard Shortcuts</a>
+                                </li>
+                                                            <li>
+                                    <a id="view_about" class="" title="Get more information about JIRA" href="https://ci.open-paas.org/jira/secure/AboutPage.jspa">About JIRA</a>
+                                </li>
+                                                            <li>
+                                    <a id="view_credits" class="" title="See who did what" href="https://ci.open-paas.org/jira/secure/JiraCreditsPage%21default.jspa" target="_blank">JIRA Credits</a>
+                                </li>
+                                                    </ul>
+                                    </div>
+                    </div>
+    </li>
+
+
+<li id="system-admin-menu">
+    <a href="https://ci.open-paas.org/jira/secure/project/ViewProjects.jspa" id="admin_menu" class="aui-nav-link aui-dropdown2-trigger" aria-haspopup="true" aria-owns="system-admin-menu-content" title="Administration"><span class="aui-icon aui-icon-small aui-iconfont-configure">Administration</span></a>
+    <div id="system-admin-menu-content" class="aui-dropdown2 aui-style-default">
+                    <div class="aui-dropdown2-section">
+                <strong>JIRA administration</strong>
+                <ul class="aui-list-truncate">
+                                            <li>
+                            <a href="https://ci.open-paas.org/jira/secure/project/ViewProjects.jspa" class="aui-nav-link" id="admin_project_menu">Projects</a>
+                        </li>
+                                            <li>
+                            <a href="https://ci.open-paas.org/jira/secure/admin/ViewIssueTypes.jspa" class="aui-nav-link" id="admin_issues_menu">Issues</a>
+                        </li>
+                                            <li>
+                            <a href="https://ci.open-paas.org/jira/secure/admin/user/UserBrowser.jspa" class="aui-nav-link" id="admin_users_menu">User management</a>
+                        </li>
+                                            <li>
+                            <a href="https://ci.open-paas.org/jira/secure/admin/ViewApplicationProperties.jspa" class="aui-nav-link" id="admin_system_menu">System</a>
+                        </li>
+                                            <li>
+                            <a href="https://ci.open-paas.org/jira/plugins/servlet/upm/marketplace" class="aui-nav-link" id="admin_plugins_menu">Add-ons</a>
+                        </li>
+                                    </ul>
+            </div>
+            </div>
+</li>
+
+
+
+
+
+
+
+
+<li id="user-options">
+            <a id="header-details-user-fullname" class="aui-dropdown2-trigger" aria-haspopup="true" aria-owns="user-options-content" data-username="scolson" data-displayname="Stephane COLSON" href="https://ci.open-paas.org/jira/secure/ViewProfile.jspa" title="User profile for Stephane COLSON">
+            <span class="aui-avatar aui-avatar-small">
+                <span class="aui-avatar-inner">
+                    <img src="test_files/useravatar.png" alt="User profile for Stephane COLSON">
+                </span>
+            </span>
+        </a>
+                <div id="user-options-content" class="aui-dropdown2 aui-style-default">
+                            <div class="aui-dropdown2-section">
+                                                                <ul id="personal" class="aui-list-truncate">
+                                                                                                <li>
+                                        <a id="view_profile" class="" title="View and change your details and preferences" href="https://ci.open-paas.org/jira/secure/ViewProfile.jspa">Profile</a>
+                                    </li>
+                                                                                                                                <li>
+                                        <a id="upm-requests-link" class="" href="https://ci.open-paas.org/jira/plugins/servlet/upm/requests?source=header_user">Atlassian Marketplace</a>
+                                    </li>
+                                                                                    </ul>
+                                    </div>
+                            <div class="aui-dropdown2-section">
+                                            <strong>My JIRA Home</strong>
+                                                                <ul id="set_my_jira_home" class="aui-list-truncate">
+                                                            
+                                                                        <li>
+                                        <a id="set_my_jira_home_default" class="aui-dropdown2-radio interactive checked    " title="Set my JIRA Home to the Dashboard." href="https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.atlassian.jira.jira-my-home-plugin%3Aset_my_jira_home_dashboard&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin">Dashboard</a>
+                                    </li>
+                                                                                            
+                                                                        <li>
+                                        <a id="greenhopper-my-jira-home-set" class="aui-dropdown2-radio interactive    " title="Set my JIRA Home to Agile." href="https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.pyxis.greenhopper.jira%3Agreenhopper-my-jira-home-set-51&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin">Agile</a>
+                                    </li>
+                                                                                            
+                                                                        <li>
+                                        <a id="set_my_jira_home_issuenav" class="aui-dropdown2-radio interactive    " title="Set my JIRA Home to the Issue Navigator." href="https://ci.open-paas.org/jira/secure/UpdateMyJiraHome.jspa?target=com.atlassian.jira.jira-my-home-plugin%3Aset_my_jira_home_issue&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin">Issue Navigator</a>
+                                    </li>
+                                                                                    </ul>
+                                    </div>
+                            <div class="aui-dropdown2-section">
+                                                                <ul id="system" class="aui-list-truncate">
+                                                                                                <li>
+                                        <a class="project-centric-nav-user-option disable-project-centric-nav" href="https://ci.open-paas.org/jira">Disable new project navigation</a>
+                                    </li>
+                                                                                                                                <li>
+                                        <a id="log_out" class="" title="Log out and cancel any automatic login." href="https://ci.open-paas.org/jira/logout?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin">Log Out</a>
+                                    </li>
+                                                                                    </ul>
+                                    </div>
+                    </div>
+    </li>
+</ul></div></div><!-- .aui-header-inner--></nav><!-- .aui-header -->
+    </header>
+    
+
+
+
+    <section id="content" role="main">
+
+    
+
+    <div class="issue-container ">
+                                    <div id="issue-content" class="issue-edit-form">
+                    <header style="" id="stalker" class="issue-header js-stalker">
+                        <div class="issue-header-content"><header class="aui-page-header"><div class="aui-page-header-inner"><div class="aui-page-header-image"><span id="10100" class="aui-avatar aui-avatar-large aui-avatar-project jira-system-avatar"><span class="aui-avatar-inner"><img id="project-avatar" alt="Uploaded image for project: 'OpenPaaS RSE'" src="test_files/projectavatar.png"></span></span></div><!-- .aui-page-header-image --><div class="aui-page-header-main"><ol class="aui-nav aui-nav-breadcrumbs __skate"><li><a id="project-name-val" href="https://ci.open-paas.org/jira/browse/OR">OpenPaaS RSE</a></li><li><a class="issue-link" data-issue-key="OR-2349" href="https://ci.open-paas.org/jira/browse/OR-2349" id="key-val" rel="16626">OR-2349</a></li></ol><h1 title="Click to edit" class="editable-field inactive" id="summary-val">Docker-compose doesn't activate attachments and dwld/upld url are wrongly populated<span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit">
 </span></h1></div><!-- .aui-page-header-main --><div class="aui-page-header-actions"><div id="issue-header-pager"></div></div><!-- .aui-page-header-actions --></div><!-- .aui-page-header-inner --></header><!-- .aui-page-header --><div class="command-bar"><div class="ops-cont"><div class="ops-menus aui-toolbar"><div class="toolbar-split toolbar-split-left"><ul id="opsbar-edit-issue_container" class="toolbar-group pluggable-ops"><li class="toolbar-item"><a id="edit-issue" title=" ( Type 'e' )" class="toolbar-trigger issueaction-edit-issue" href="https://ci.open-paas.org/jira/secure/EditIssue%21default.jspa?id=16626"><span class="icon aui-icon aui-icon-small aui-iconfont-edit"></span> <span class="trigger-label">Edit</span></a></li></ul><ul id="opsbar-comment-issue_container" class="toolbar-group pluggable-ops"><li class="toolbar-item"><a id="comment-issue" title="Comment on this issue" class="toolbar-trigger issueaction-comment-issue add-issue-comment inline-comment" href="https://ci.
 open-paas.org/jira/secure/AddComment%21default.jspa?id=16626"><span class="icon aui-icon aui-icon-small aui-iconfont-comment icon-comment"></span> <span class="trigger-label">Comment</span></a></li></ul><ul id="opsbar-opsbar-operations" class="toolbar-group pluggable-ops"><li class="toolbar-item"><a id="assign-issue" title=" ( Type 'a' )" class="toolbar-trigger issueaction-assign-issue" href="https://ci.open-paas.org/jira/secure/AssignIssue%21default.jspa?id=16626"><span class="trigger-label">Assign</span></a></li><li class="toolbar-item toolbar-dropdown"><div><a href="#" id="opsbar-operations_more" data-hide-on-scroll=".split-view .issue-container" data-contain-to-window="true" class="toolbar-trigger  js-default-dropdown"><span class="dropdown-text">More</span><span class="icon drop-menu"></span></a><div class="aui-list hidden"><ul class="aui-list-section aui-first"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/GHGoToBoard.jspa?issueId=16626" class="aui-li
 st-item-link issueaction-greenhopper-rapidboard-operation js-rapidboard-operation-issue" title="View this issue on an Agile board" id="greenhopper-rapidboard-operation"><span class="trigger-label">Agile Board</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/RankTop.jspa?issueId=16626" class="aui-list-item-link issueaction-greenhopper-rank-top-operation" id="greenhopper-rank-top-operation"><span class="trigger-label">Rank to Top</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/RankBottom.jspa?issueId=16626" class="aui-list-item-link issueaction-greenhopper-rank-bottom-operation" id="greenhopper-rank-bottom-operation"><span class="trigger-label">Rank to Bottom</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/CreateWorklog%21default.jspa?id=16626" class="aui-list-item-link issueaction-log-work" title="Log work against this issue" id="log-wo
 rk"><span class="trigger-label">Log Work</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/AttachFile%21default.jspa?id=16626" class="aui-list-item-link issueaction-attach-file" title="Attach one or more files to this issue" id="attach-file"><span class="trigger-label">Attach Files</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/ShowAttachScreenshotFormAction%21default.jspa?id=16626" class="aui-list-item-link issueaction-attach-screenshot-html5" id="attach-screenshot-html5"><span class="trigger-label">Attach Screenshot</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/editDrawioDiagram.jspa?issueKey=OR-2349" class="aui-list-item-link" id="com.mxgraph.jira.plugins.drawio:drawio-add-menu-item"><span class="trigger-label">Add Drawio Diagram</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="https://ci.open-pa
 as.org/jira/secure/ViewVoters%21default.jspa?id=16626" class="aui-list-item-link issueaction-view-voters" title="View voters for this issue" id="view-voters"><span class="trigger-label">Voters</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/VoteOrWatchIssue.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin&amp;id=16626&amp;watch=unwatch" class="aui-list-item-link issueaction-unwatch-issue" title="Stop watching this issue" id="toggle-watch-issue"><span class="trigger-label">Stop Watching</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/ManageWatchers%21default.jspa?id=16626" class="aui-list-item-link issueaction-manage-watchers" title="Manage the watchers of this issue" id="manage-watchers"><span class="trigger-label">Watchers</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/CreateSubTaskIssue%21default.
 jspa?parentIssueId=16626" class="aui-list-item-link issueaction-create-subtask" title="Create sub-task for this issue" id="create-subtask"><span class="trigger-label">Create Sub-Task</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/ConvertIssue.jspa?id=16626" class="aui-list-item-link issueaction-issue-to-subtask" title="Convert this issue to sub-task" id="issue-to-subtask"><span class="trigger-label">Convert to Sub-Task</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="#devstatus.cta.createbranch" class="aui-list-item-link devstatus-cta-link" id="cta-create-branch"><span class="trigger-label">Create branch</span></a></li></ul><ul class="aui-list-section"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/MoveIssue%21default.jspa?id=16626" class="aui-list-item-link issueaction-move-issue" title="Move this issue to another project or issue type." id="move-issue"><span class="trigger-label">Mo
 ve</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/LinkJiraIssue%21default.jspa?id=16626" class="aui-list-item-link issueaction-link-issue" title="Link this issue to another issue or item" id="link-issue"><span class="trigger-label">Link</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/CloneIssueDetails%21default.jspa?id=16626" class="aui-list-item-link issueaction-clone-issue" title="Clone this issue" id="clone-issue"><span class="trigger-label">Clone</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/EditLabels%21default.jspa?id=16626" class="aui-list-item-link issueaction-edit-labels" title=" ( Type 'l' )" id="edit-labels"><span class="trigger-label">Labels</span></a></li></ul><ul class="aui-list-section aui-last"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/DeleteIssue%21default.jspa?id=16626" class="aui-list-item-link issueaction-delete-iss
 ue" title="Delete this issue" id="delete-issue"><span class="trigger-label">Delete</span></a></li></ul></div></div></li></ul><ul id="opsbar-opsbar-transitions" class="toolbar-group pluggable-ops"><li class="toolbar-item"><a id="action_id_301" class="toolbar-trigger issueaction-workflow-transition" href="https://ci.open-paas.org/jira/secure/WorkflowUIDispatcher.jspa?id=16626&amp;action=301&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin"><span class="trigger-label">Stop Progress</span></a></li><li class="toolbar-item"><a id="action_id_5" class="toolbar-trigger issueaction-workflow-transition" href="https://ci.open-paas.org/jira/secure/WorkflowUIDispatcher.jspa?id=16626&amp;action=5&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin"><span class="trigger-label">Resolve Issue</span></a></li><li class="toolbar-item"><a id="action_id_2" class="toolbar-trigger issueaction-workflow-transition" href="https://ci.open-paas.org
 /jira/secure/WorkflowUIDispatcher.jspa?id=16626&amp;action=2&amp;atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin"><span class="trigger-label">Close Issue</span></a></li></ul><ul id="opsbar-opsbar-admin" class="toolbar-group pluggable-ops"><li class="toolbar-item toolbar-dropdown"><div><a href="#" id="opsbar-admin_more" data-hide-on-scroll=".split-view .issue-container" data-contain-to-window="true" class="toolbar-trigger  js-default-dropdown"><span class="dropdown-text">Admin</span><span class="icon drop-menu"></span></a><div class="aui-list hidden"><ul class="aui-list-section aui-first"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/secure/admin/ViewCustomFields.jspa" class="aui-list-item-link issueaction-fields-add" title="Add a field and to the current issue's screens." id="com.atlassian.jira.jira-project-config-plugin:add-custom-field"><span class="trigger-label">Add field</span></a></li></ul><ul class="aui-list-section aui-last">
 <li class="aui-list-item"><a href="https://ci.open-paas.org/jira/notimportant" class="aui-list-item-link whereismycf-trigger" title="Where is my field?" id="jira-operations-whereismycf-trigger"><span class="trigger-label">Where is my field?</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/notimportant" class="aui-list-item-link permissionhelper-trigger" title="Discover why a user does or does not have certain permissions" id="jira-operations-permissionhelper-trigger"><span class="trigger-label">Permission Helper</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/notimportant" class="aui-list-item-link notificationhelper-trigger" title="Find out why users receive, or do not receive notifications for this issue" id="jira-operations-notificationhelper-trigger"><span class="trigger-label">Notification Helper</span></a></li></ul></div></div></li></ul></div><div class="toolbar-split toolbar-split-right"><ul id="opsbar-jira.issue.
 tools" class="toolbar-group pluggable-ops"><li class="toolbar-item"><a original-title="Share this issue by emailing other users" id="jira-share-trigger" class="toolbar-trigger viewissue-share" href="https://ci.open-paas.org/jira"><span class="icon aui-icon aui-icon-small aui-iconfont-share"></span> <span class="trigger-label"></span></a></li><li class="toolbar-item toolbar-dropdown"><div><a original-title="Export this issue in another format" href="#" id="viewissue-export" data-hide-on-scroll=".split-view .issue-container" data-contain-to-window="true" class="toolbar-trigger  js-default-dropdown"><span class="icon icon-default aui-icon aui-icon-small aui-iconfont-export"></span> <span class="dropdown-text">Export</span><span class="icon drop-menu"></span></a><div class="aui-list hidden"><ul class="aui-list-section aui-first aui-last"><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/si/jira.issueviews:issue-xml/OR-2349/OR-2349.xml" class="aui-list-item-link" id="jira.
 issueviews:issue-xml"><span class="trigger-label">XML</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/si/jira.issueviews:issue-word/OR-2349/OR-2349.doc" class="aui-list-item-link" id="jira.issueviews:issue-word"><span class="trigger-label">Word</span></a></li><li class="aui-list-item"><a href="https://ci.open-paas.org/jira/si/jira.issueviews:issue-html/OR-2349/OR-2349.html" class="aui-list-item-link" id="jira.issueviews:issue-html"><span class="trigger-label">Printable</span></a></li></ul></div></div></li></ul></div></div></div></div></div>
+                    </header>
+                    <div class="issue-body-content">
+                        <div class="aui-group issue-body"><div class="aui-item issue-main-column"><div id="details-module" class="module toggle-wrap"><div id="details-module_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Details</h2></div><div class="mod-content">
+
+
+
+
+<ul id="issuedetails" class="property-list two-cols">
+    <li class="item">
+        <div class="wrap">
+            <strong class="name">Type:</strong>
+            <span title="Click to edit" id="type-val" class="value editable-field inactive">
+                                <img alt="" src="test_files/bug.png" title="Bug - A problem which impairs or prevents the functions of the product." height="16" width="16"> Bug
+            <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+        </div>
+    </li>
+    <li class="item item-right">
+        <div class="wrap">
+            <strong class="name">Status:</strong>
+            <span id="status-val" class="value">
+                                <span original-title="" class=" jira-issue-status-lozenge aui-lozenge jira-issue-status-lozenge-yellow jira-issue-status-lozenge-indeterminate jira-issue-status-lozenge-max-width-medium" data-tooltip="&lt;span class=&quot;jira-issue-status-tooltip-title&quot;&gt;Progressing&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;jira-issue-status-tooltip-desc&quot;&gt;This issue is being actively worked on at the moment by the assignee.&lt;/span&gt;">Progressing</span>            </span>
+                            <span class="status-view">(<a class="issueaction-viewworkflow new-workflow-designer" href="https://ci.open-paas.org/jira/browse/OR-2349?workflowName=jira&amp;stepId=3">View Workflow</a>)</span>
+                    </div>
+    </li>
+            <li class="item">
+            <div class="wrap">
+                <strong class="name">Priority:</strong>
+                <span title="Click to edit" id="priority-val" class="value editable-field inactive">
+                                        <img alt="" src="test_files/major.png" title="Major - Major loss of function." height="16" width="16"> Major
+                <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+            </div>
+        </li>
+                                <li class="item item-right">
+            <div class="wrap">
+                <strong class="name">Resolution:</strong>
+                <span id="resolution-val" class="value unresolved">
+                                    Unresolved
+                                </span>
+            </div>
+        </li>
+                <li class="item">
+            <div class="wrap">
+                <strong class="name">Affects Version/s:</strong>
+                <span title="Click to edit" id="versions-val" class="value editable-field inactive">
+                                            None
+                                    <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+            </div>
+        </li>
+                <li class="item item-right">
+            <div class="wrap">
+                <strong class="name">Fix Version/s:</strong>
+                <span title="Click to edit" id="fixfor-val" class="value editable-field inactive">
+                                            None
+                                    <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+            </div>
+        </li>
+                <li class="item">
+            <div class="wrap">
+                <strong class="name">Component/s:</strong>
+                <span title="Click to edit" id="components-val" class="value editable-field inactive">
+                                            None
+                                    <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+            </div>
+        </li>
+                    <li class="item full-width">
+            <div class="wrap" id="wrap-labels">
+                <strong class="name">Labels:</strong>
+                    <div title="Click to edit" class="labels-wrap value editable-field inactive">
+            <span class="labels" id="labels-16626-value">None</span>
+                                <a title="Follow link" class="aui-icon aui-icon-small aui-iconfont-edit edit-labels" id="edit-labels-16626-labels" href="https://ci.open-paas.org/jira/secure/EditLabels%21default.jspa?id=16626&amp;noLink=false"><span>Labels</span></a>
+                <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></div>
+            </div>
+        </li>
+        </ul>
+
+<div id="customfieldmodule">
+    <div role="application" class="aui-tabs horizontal-tabs" id="customfield-tabs">
+                    <div aria-hidden="false" role="tabpanel" id="customfield-panel-1" class="tabs-pane active-pane">
+                        <ul class="property-list">
+                                                <li id="rowForcustomfield_10004" class="item">
+                        <div class="wrap">
+                            <strong title="Rank (Obsolete)" class="name">Rank (Obsolete):</strong>
+                            <div id="customfield_10004-val" class="value type-gh-global-rank" data-fieldtype="gh-global-rank" data-fieldtypecompletekey="com.pyxis.greenhopper.jira:gh-global-rank">
+                                      9223372036854775807
+  
+                            </div>
+                        </div>
+                    </li>
+                                                                <li id="rowForcustomfield_10201" class="item">
+                        <div class="wrap">
+                            <strong title="Acceptance Criteria" class="name">Acceptance Criteria:</strong>
+                            <div title="Click to edit" id="customfield_10201-val" class="value type-checklist editable-field inactive" data-fieldtype="checklist" data-fieldtypecompletekey="com.okapya.jira.checklist:checklist">
+                                    <div id="o-checklist-view-10201" class="o-checklist">
+        <div style="max-width: 800px;">
+                           <div class="o-checklist-header"><div><span class="o-icon-check"></span>0/1<div class="o-view-actions o-pull-right"><a title="Follow link" class="o-checked-filter" href="#"><span class="o-hide">Hide checked</span><span class="o-show">Show checked</span></a></div></div></div>
+                                        <div class="o-checklist-items o-read-only"><div class="o-checklist-item"><div class="o-checkbox"><span class="o-icon-ok-1"></span></div><div class="o-checklist-item-details"><p>Tested</p></div></div></div>
+                <div class="o-checklist-items-collapsible o-read-only"></div>
+                <a title="Follow link" class="o-show-items o-show-all">
+                    <span class="o-more"><span class="o-icon-down-open"></span>show more</span>
+                    <span class="o-less"><span class="o-icon-up-open"></span>show less</span>
+                </a>
+                    </div>
+    </div>
+    <form id="parameterContainer">
+        <fieldset class="hidden parameters">
+            <input title="okapya.close" value="Close" type="hidden">
+            <input title="okapya.import.error" value="Checklist believes that you are trying to import data to recreate items from a different list and found the following error:" type="hidden">
+        </fieldset>
+    </form>
+
+                            <script>
+            if (!okapya.checklists.hasOwnProperty("o-checklist-view-10201")) {
+                okapya.checklists["o-checklist-view-10201"] = okapya.createChecklistView({"id" : "10201", "customfieldId": "customfield_10201", "parameters": {"strikeThrough":true,"showMoreCount":2,"discretionaryOptionIds":[],"emphasizeMandatory":false,"version":1,"reporterCanEdit":true,"showStatusMenu":false,"editRoleIds":[]}}, [{"checked":false,"name":"Tested","mandatory":true,"rank":0,"optionId":10100,"version":"3.0","id":10100,"statusId":"none"}]);
+            } else {
+                okapya.checklists["o-checklist-view-10201"].registerData([{"checked":false,"name":"Tested","mandatory":true,"rank":0,"optionId":10100,"version":"3.0","id":10100,"statusId":"none"}]);
+            }
+        </script>
+        <input id="o-checklist-view-10201-data" value="[{&quot;checked&quot;:false,&quot;name&quot;:&quot;Tested&quot;,&quot;mandatory&quot;:true,&quot;rank&quot;:0,&quot;optionId&quot;:10100,&quot;version&quot;:&quot;3.0&quot;,&quot;id&quot;:10100,&quot;statusId&quot;:&quot;none&quot;}]" hidden="">
+    
+                            <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></div>
+                        </div>
+                    </li>
+                                        </ul>
+        </div>
+        </div></div>
+</div></div><div id="descriptionmodule" class="module toggle-wrap"><div id="descriptionmodule_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Description</h2></div><div class="mod-content"><div title="Click to edit" id="description-val" class="field-ignore-highlight editable-field inactive">
+    <div class="user-content-block">
+                    <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">               {
+                    <span class="code-quote">"name"</span> : <span class="code-quote">"uploadUrl"</span>,
+                    <span class="code-quote">"value"</span> : <span class="code-quote">"http:<span class="code-comment">//10.69.0.163:1080/jmap/upload"</span>,
+</span>                    <span class="code-quote">"_id"</span> : ObjectId(<span class="code-quote">"5785f85cd7f4033c00fc606d"</span>)
+                }, 
+                {
+                    <span class="code-quote">"name"</span> : <span class="code-quote">"downloadUrl"</span>,
+                    <span class="code-quote">"value"</span> : <span class="code-quote">"http:<span class="code-comment">//10.69.0.163:1080/jmap/download"</span>,
+</span>                    <span class="code-quote">"_id"</span> : ObjectId(<span class="code-quote">"5785f85cd7f4033c00fc606c"</span>)
+                }, 
+</pre>
+</div></div>
+
+<p>should be replaced with </p>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">              {
+                    <span class="code-quote">"name"</span> : <span class="code-quote">"uploadUrl"</span>,
+                    <span class="code-quote">"value"</span> : <span class="code-quote">"http:<span class="code-comment">//10.69.0.163:1080/upload"</span>,
+</span>                    <span class="code-quote">"_id"</span> : ObjectId(<span class="code-quote">"5785f85cd7f4033c00fc606d"</span>)
+                }, 
+                {
+                    <span class="code-quote">"name"</span> : <span class="code-quote">"downloadUrl"</span>,
+                    <span class="code-quote">"value"</span> : <span class="code-quote">"http:<span class="code-comment">//10.69.0.163:1080/download"</span>,
+</span>                    <span class="code-quote">"_id"</span> : ObjectId(<span class="code-quote">"5785f85cd7f4033c00fc606c"</span>)
+                }, 
+               {
+                   <span class="code-quote">"name"</span> : <span class="code-quote">"composer.attachments"</span>,
+                    <span class="code-quote">"value"</span> : <span class="code-keyword">true</span>
+               }
+
+</pre>
+</div></div>
+            </div>
+<span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></div>
+</div></div><div id="activitymodule" class="module toggle-wrap"><div id="activitymodule_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Activity</h2></div><div class="mod-content">
+
+
+
+
+
+
+
+
+
+
+    <div class="tabwrap tabs2">
+
+        <ul id="issue-tabs" class="tabs horizontal">
+                                
+            <li data-id="all-tabpanel" data-key="com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel" data-label="All" data-href="/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel">
+                            <a class="ajax-activity-content" id="all-tabpanel" href="https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel"><strong>All</strong></a>
+                        </li>
+                                
+            <li class="active" id="comment-tabpanel" data-id="comment-tabpanel" data-key="com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel" data-label="Comments" data-href="/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel">
+                            <strong tabindex="0">Comments</strong>
+                        </li>
+                                
+            <li data-id="worklog-tabpanel" data-key="com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel" data-label="Work Log" data-href="/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel">
+                            <a class="ajax-activity-content" id="worklog-tabpanel" href="https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel"><strong>Work Log</strong></a>
+                        </li>
+                                
+            <li data-id="changehistory-tabpanel" data-key="com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel" data-label="History" data-href="/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel">
+                            <a class="ajax-activity-content" id="changehistory-tabpanel" href="https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel"><strong>History</strong></a>
+                        </li>
+                                
+            <li data-id="activity-stream-issue-tab" data-key="com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab" data-label="Activity" data-href="/jira/browse/OR-2349?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab">
+                            <a class="ajax-activity-content" id="activity-stream-issue-tab" href="https://ci.open-paas.org/jira/browse/OR-2349?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab"><strong>Activity</strong></a>
+                        </li>
+                </ul>
+
+            </div>
+    <div class="issuePanelWrapper">
+        <div class="issuePanelProgress"></div>
+        <div class="issuePanelContainer" id="issue_actions_container">
+                                    <div class="message-container">
+    There are no comments yet on this issue.
+</div>                             </div>
+    </div>
+</div></div><div id="addcomment" class="module">
+    <div id="addcomment" class="module">
+    <div class="mod-content">
+        <form action="/jira/secure/AddComment.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin" class="aui top-label ajs-dirty-warning-exempt" id="issue-comment-add" method="post">
+            <div class="form-body">
+                <div class="hidden">
+                    <input name="atl_token" value="BE2F-79PL-H8QS-2STB|99bf85b35fda4cb18ee69314eef5a1392be0a3d3|lin" type="hidden">
+                    <input name="id" value="16626" type="hidden">
+                </div>
+
+                
+
+
+    
+            
+                
+    
+    
+                            <div class="field-group aui-field-wikiedit comment-input">
+                                                                        <label for="comment">Comment</label>
+                
+<div class="wiki-edit">
+    <div id="wiki-edit-dropdown2-text-style-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-dropdown"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a original-title="Paragraph" href="#" class="wiki-edit-operation" data-operation="paragraph">Paragraph</a></li><li><a original-title="Heading 1" href="#" class="wiki-edit-operation wiki-edit-operation-h1" data-operation="h1">Heading 1</a></li><li><a original-title="Heading 2" href="#" class="wiki-edit-operation wiki-edit-operation-h2" data-operation="h2">Heading 2</a></li><li><a original-title="Heading 3" href="#" class="wiki-edit-operation wiki-edit-operation-h3" data-operation="h3">Heading 3</a></li><li><a original-title="Heading 4" href="#" class="wiki-edit-operation wiki-edit-operation-h4" data-operation="h4">Heading 4</a></li><li><a original-title="Heading 5" href="#" class="wiki-edit-operation wiki-edit-operation-h5" data-operation="h5">Heading 5</a></li><li><a original-title="Heading 6" href="#"
  class="wiki-edit-operation wiki-edit-operation-h6" data-operation="h6">Heading 6</a></li><li><a original-title="Preformatted" href="#" class="wiki-edit-operation wiki-edit-operation-monospace" data-operation="monospace">Preformatted</a></li><li><a original-title="Paragraph quote" href="#" class="wiki-edit-operation" data-operation="paragraph-quote">Paragraph quote</a></li><li><a original-title="Block quote" href="#" class="wiki-edit-operation" data-operation="block-quote">Block quote</a></li></ul></div></div><div id="wiki-edit-dropdown2-more-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-dropdown"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a original-title="Strikethrough (Ctrl+Shift+S)" href="#" class="wiki-edit-operation" data-operation="delete" data-shortcut="ctrl+shift+s, command+shift+s">Strikethrough</a></li><li><a href="#" class="wiki-edit-operation" data-operation="superscript">Superscript</a></li><li><a href="#" class="wiki-edit-opera
 tion" data-operation="subscript">Subscript</a></li><li><a href="#" class="wiki-edit-operation" data-operation="cite">Citation</a></li></ul></div></div><div id="wiki-edit-dropdown2-link-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-dropdown wiki-edit-dropdown-link"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a original-title="External link (Ctrl+K)" href="#" class="wiki-edit-operation" data-operation="link" data-shortcut="ctrl+k, command+k">External link</a></li><li><a href="#" class="wiki-edit-operation" data-operation="link-mail">Mail link</a></li><li><a href="#" class="wiki-edit-operation" data-operation="link-anchor">Anchor link</a></li><li><a href="#" class="wiki-edit-operation" data-operation="link-attachment">Attachment link</a></li></ul></div><div class="aui-dropdown2-section wiki-edit-insert-link"><strong>Attachment link</strong><ul class="aui-list-truncate"><li><a href="#"></a></li></ul></div></div><div id="wiki-edit-dropdown2-image-w
 ikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-dropdown wiki-edit-dropdown-image"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a original-title="External image" href="#" class="wiki-edit-operation" data-operation="image">External image</a></li><li><a href="#" class="wiki-edit-operation" data-operation="image-attachment">Attached image</a></li></ul></div><div class="aui-dropdown2-section wiki-edit-insert-image"><strong>Attached image</strong><ul class="aui-list-truncate"><li><a href="#"></a></li></ul></div></div><div id="wiki-edit-color-picker-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-picker wiki-edit-color-picker" data-container="wiki-edit-color-picker-buttons-wikiEdit0"><div class="aui-dropdown2-section"><ul><li><a href="#" style="background-color: #333333" data-operation="color" data-color="#333333">&nbsp;</a></li><li><a href="#" style="background-color: #707070" data-operation="color" data-color="#707070">&nbsp;</a></li><li><
 a href="#" style="background-color: #cccccc" data-operation="color" data-color="#cccccc">&nbsp;</a></li><li><a href="#" style="background-color: #205081" data-operation="color" data-color="#205081">&nbsp;</a></li><li><a href="#" style="background-color: #59afe1" data-operation="color" data-color="#59afe1">&nbsp;</a></li><li><a href="#" style="background-color: #14892c" data-operation="color" data-color="#14892c">&nbsp;</a></li><li><a href="#" style="background-color: #8eb021" data-operation="color" data-color="#8eb021">&nbsp;</a></li><li><a href="#" style="background-color: #d04437" data-operation="color" data-color="#d04437">&nbsp;</a></li><li><a href="#" style="background-color: #f79232" data-operation="color" data-color="#f79232">&nbsp;</a></li><li><a href="#" style="background-color: #f6c342" data-operation="color" data-color="#f6c342">&nbsp;</a></li><li><a href="#" style="background-color: #654982" data-operation="color" data-color="#654982">&nbsp;</a></li><li><a href="#" style
 ="background-color: #f691b2" data-operation="color" data-color="#f691b2">&nbsp;</a></li></ul></div></div><div id="wiki-edit-dropdown2-icon-picker-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-picker wiki-edit-icon-picker" data-container="wiki-edit-icon-picker-buttons-wikiEdit0"><div class="aui-dropdown2-section"><ul><li><a original-title=":)" href="#" class="wiki-edit-operation" data-operation=":)"><img src="test_files/smile.gif" alt="smile"></a></li><li><a original-title=":(" href="#" class="wiki-edit-operation" data-operation=":("><img src="test_files/sad.gif" alt="sad"></a></li><li><a original-title=":P" href="#" class="wiki-edit-operation" data-operation=":P"><img src="test_files/tongue.gif" alt="tongue"></a></li><li><a original-title=":D" href="#" class="wiki-edit-operation" data-operation=":D"><img src="test_files/biggrin.gif" alt="biggrin"></a></li><li><a original-title=";)" href="#" class="wiki-edit-operation" data-operation=";)"><img src="test_files/wink.gif" 
 alt="wink"></a></li><li><a original-title="(y)" href="#" class="wiki-edit-operation" data-operation="(y)"><img src="test_files/thumbs_up.gif" alt="thumbs up"></a></li><li><a original-title="(n)" href="#" class="wiki-edit-operation" data-operation="(n)"><img src="test_files/thumbs_down.gif" alt="thumbs down"></a></li><li><a original-title="(i)" href="#" class="wiki-edit-operation" data-operation="(i)"><img src="test_files/information.gif" alt="information"></a></li><li><a original-title="(/)" href="#" class="wiki-edit-operation" data-operation="(/)"><img src="test_files/check.gif" alt="check"></a></li><li><a original-title="(x)" href="#" class="wiki-edit-operation" data-operation="(x)"><img src="test_files/error.gif" alt="error"></a></li><li><a original-title="(!)" href="#" class="wiki-edit-operation" data-operation="(!)"><img src="test_files/warning.gif" alt="warning"></a></li><li><a original-title="(+)" href="#" class="wiki-edit-operation" data-operation="(+)"><img src="test_files/
 add.gif" alt="add"></a></li><li><a original-title="(-)" href="#" class="wiki-edit-operation" data-operation="(-)"><img src="test_files/forbidden.gif" alt="forbidden"></a></li><li><a original-title="(?)" href="#" class="wiki-edit-operation" data-operation="(?)"><img src="test_files/help_16.gif" alt="help"></a></li><li><a original-title="(on)" href="#" class="wiki-edit-operation" data-operation="(on)"><img src="test_files/lightbulb_on.gif" alt="lightbulb on"></a></li><li><a original-title="(off)" href="#" class="wiki-edit-operation" data-operation="(off)"><img src="test_files/lightbulb.gif" alt="lightbulb"></a></li><li><a original-title="(*)" href="#" class="wiki-edit-operation" data-operation="(*)"><img src="test_files/star_yellow.gif" alt="star yellow"></a></li><li><a original-title="(*r)" href="#" class="wiki-edit-operation" data-operation="(*r)"><img src="test_files/star_red.gif" alt="star red"></a></li><li><a original-title="(*g)" href="#" class="wiki-edit-operation" data-operati
 on="(*g)"><img src="test_files/star_green.gif" alt="star green"></a></li><li><a original-title="(*b)" href="#" class="wiki-edit-operation" data-operation="(*b)"><img src="test_files/star_blue.gif" alt="star blue"></a></li><li><a original-title="(*y)" href="#" class="wiki-edit-operation" data-operation="(*y)"><img src="test_files/star_yellow.gif" alt="star yellow"></a></li></ul></div></div><div id="wiki-edit-dropdown2-other-wikiEdit0" class="aui-dropdown2 aui-style-default wiki-edit-dropdown"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a href="#" class="wiki-edit-operation" data-operation="mention">User mention</a></li><li><a href="#" class="wiki-edit-operation" data-operation="table">Table</a></li><li><a href="#" class="wiki-edit-operation" data-operation="code">Code</a></li><li><a href="#" class="wiki-edit-operation" data-operation="noformat">Preformatted</a></li><li><a href="#" class="wiki-edit-operation" data-operation="panel">Panel</a></li><li><a href="
 #" class="wiki-edit-operation" data-operation="hr">Horizontal ruler</a></li></ul></div></div><div class="wiki-edit-toolbar" id="wiki-edit-wikiEdit0"><div class="aui-toolbar2"><div class="aui-toolbar2-inner"><div class="aui-toolbar2-primary"><div class="aui-buttons"><a original-title="" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-style-picker-trigger" aria-owns="wiki-edit-dropdown2-text-style-wikiEdit0" aria-haspopup="true" aria-controls="toolbardemo-dropdown2-more-wikiEdit0">Style</a></div><div class="aui-buttons wiki-edit-toolbar-section"><a original-title="Bold (Ctrl+B)" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation" data-operation="bold" data-shortcut="ctrl+b, command+b"><span class="aui-icon aui-icon-small aui-iconfont-editor-bold">Bold</span></a><a original-title="Italic (Ctrl+I)" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation" data-operation="italic" data-shortcut="c
 trl+i, command+i"><span class="aui-icon aui-icon-small aui-iconfont-editor-italic">Italic</span></a><a original-title="Underline (Ctrl+U)" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation" data-operation="underline" data-shortcut="ctrl+u, command+u"><span class="aui-icon aui-icon-small aui-iconfont-editor-underline">Underline</span></a><a original-title="Text color" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation wiki-edit-operation-color" data-operation="color" data-color="red"><span class="aui-icon aui-icon-small aui-iconfont-editor-color">Text color</span><span style="background-color: red;" class="wiki-edit-color-indicator"></span></a><a original-title="More colors" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-color-picker-trigger" data-operation="color-parameter" aria-owns="wiki-edit-color-picker-wikiEdit0" aria-haspopup="true"><span>More colors</span></a><a original-title
 ="More" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-more-picker-trigger" aria-owns="wiki-edit-dropdown2-more-wikiEdit0" aria-haspopup="true" aria-controls="toolbardemo-dropdown2-more-wikiEdit0"><span class="aui-icon aui-icon-small aui-iconfont-editor-styles">More</span></a></div><div class="aui-buttons"><a original-title="Link (Ctrl+K)" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-link-picker-trigger" aria-owns="wiki-edit-dropdown2-link-wikiEdit0" aria-haspopup="true" aria-controls="wiki-edit-dropdown2-link-wikiEdit0"><span class="aui-icon aui-icon-small aui-iconfont-link">Link</span></a><a original-title="Image" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-image-picker-trigger" aria-owns="wiki-edit-dropdown2-image-wikiEdit0" aria-haspopup="true" aria-controls="wiki-edit-dropdown2-image-wikiEdit0"><span class="aui-icon aui-icon-small aui-iconfont
 -image">Image</span></a></div><div class="aui-buttons wiki-edit-toolbar-section"><a original-title="Bullet list (Ctrl+Shift+B)" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation" data-operation="bullet-list" data-shortcut="ctrl+shift+b, command+shift+b"><span class="aui-icon aui-icon-small aui-iconfont-editor-list-bullet">Bullet list</span></a><a original-title="Numbered list (Ctrl+Shift+N)" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-operation" data-operation="numbered-list" data-shortcut="ctrl+shift+n, command+shift+n"><span class="aui-icon aui-icon-small aui-iconfont-editor-list-number">Numbered list</span></a></div><div class="aui-buttons"><a original-title="Icons" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-icon-picker-trigger wiki-edit-tooltip" aria-owns="wiki-edit-dropdown2-icon-picker-wikiEdit0" aria-haspopup="true" aria-controls="wiki-edit-dropdown2-icon-picker-wikiEdit0"><s
 pan class="aui-icon aui-icon-small aui-iconfont-editor-emoticon">Icons</span></a><a original-title="Other" href="#" tabindex="-1" class="aui-button aui-button-subtle aui-dropdown2-trigger wiki-edit-other-picker-trigger wiki-edit-tooltip" aria-owns="wiki-edit-dropdown2-other-wikiEdit0" aria-haspopup="true" aria-controls="wiki-edit-dropdown2-other-wikiEdit0"><span class="aui-icon aui-icon-small aui-iconfont-add">Other</span></a></div><div class="aui-buttons wiki-edit-toolbar-last"><a original-title="Toggle visibility" href="#" tabindex="-1" class="aui-button aui-button-subtle wiki-edit-visible-toggle wiki-edit-tooltip"><span class="aui-icon icon-toolbartoggle">Lock / Unlock</span></a></div></div></div><!-- .aui-toolbar-inner --></div></div><div id="comment-wiki-edit" class="wiki-edit-content">
+                                 <textarea class="textarea long-field wiki-textfield mentionable" cols="60" id="comment" name="comment" rows="10" data-projectkey="OR" data-issuekey="OR-2349" wrap="virtual"></textarea>
+                <div class="content-inner">            
+        </div>
+    </div>
+</div>
+<div class="field-tools">
+    
+    <button class="jira-icon-button fullscreen" id="comment-preview_link" type="button"><span class="aui-icon wiki-renderer-icon">Preview comment</span></button>
+    <a class="help-lnk" id="viewHelp" href="https://ci.open-paas.org/jira/secure/WikiRendererHelpAction.jspa?section=texteffects" title="Get local help about wiki markup help" data-helplink="local"><span class="aui-icon aui-icon-small aui-iconfont-help"></span></a>
+</div>
+
+                                                                                        <div class="security-level">
+        <fieldset class="hidden parameters">
+            <input title="securityLevelViewableByAll" value="Viewable by All Users" type="hidden">
+            <input title="securityLevelViewableRestrictedTo" value="Restricted to &lt;span class='redText'&gt;{0}&lt;/span&gt;" type="hidden">
+        </fieldset>
+        
+        <div class="select-menu" id="commentLevel-multi-select"><a class="drop" href="#">
+            <span class="security-level-drop-icon aui-icon aui-icon-small  aui-iconfont-unlocked">
+                This comment will be Viewable by All Users
+            </span>
+            <span class="icon drop-menu"></span>
+        </a><div class="aui-list aui-list-checked" id="commentLevel-suggestions" tabindex="-1"></div></div><div class="select-menu" id="commentLevel-multi-select"><div class="aui-list aui-list-checked" id="commentLevel-suggestions" tabindex="-1"></div></div><select multiple="multiple" style="display: none;" name="commentLevel" id="commentLevel">
+            <option selected="selected" value="">All Users</option>
+                            <optgroup label="Project Roles">
+                                            <option value="role:10002">Administrators</option>
+                                             <option value="role:10001">Developers</option>
+                                             <option value="role:10000">Users</option>
+                                     </optgroup>
+                                </select>
+        <span class="current-level">Viewable by All Users</span>
+    </div>
+                                    </div>
+    
+            </div>
+            <div class="buttons-container form-footer">
+                <div class="buttons">
+                    <input accesskey="s" class="aui-button" id="issue-comment-add-submit" name="Add" title="Press Alt+Shift+s to submit this form" value="Add" type="submit">
+                    <a accesskey="`" class="aui-button aui-button-link cancel" href="#" id="issue-comment-add-cancel" title="Press Alt+Shift+` to cancel">Cancel</a>
+                </div>
+            </div>
+        </form>
+    </div>
+    <div class="mod-footer">
+        <ul class="ops">
+            <li>
+                <a href="https://ci.open-paas.org/jira/secure/AddComment%21default.jspa?id=16626" id="footer-comment-button" name="add-comment" class="aui-button">
+                    <span class="aui-icon aui-icon-small aui-iconfont-comment icon-comment"></span>
+                    <span>Comment</span>
+                </a>
+            </li>
+        </ul>
+    </div>
+</div>
+
+</div>
+</div><div id="viewissuesidebar" class="aui-item issue-side-column"><div id="peoplemodule" class="module toggle-wrap"><div id="peoplemodule_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">People</h2></div><div class="mod-content"><ul class="item-details" id="peopledetails">
+    <li class="people-details">
+                <dl>
+            <dt>Assignee:</dt>
+            <dd>
+                <span title="Click to edit" id="assignee-val" class="view-issue-field editable-field inactive">
+
+            <span class="user-hover" id="issue_summary_assignee_scolson" rel="scolson">
+            
+
+    <span class="aui-avatar aui-avatar-small"><span class="aui-avatar-inner"><img src="test_files/useravatar.png" alt="scolson"></span></span>
+            Stephane COLSON
+        </span>
+    <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+                            </dd>
+        </dl>
+                        <dl>
+            <dt>Reporter:</dt>
+            <dd>
+                <span title="Click to edit" id="reporter-val" class="view-issue-field editable-field inactive">
+
+            <span class="user-hover" id="issue_summary_reporter_scolson" rel="scolson">
+            
+
+    <span class="aui-avatar aui-avatar-small"><span class="aui-avatar-inner"><img src="test_files/useravatar.png" alt="scolson"></span></span>
+            Stephane COLSON
+        </span>
+    <span class="overlay-icon aui-icon aui-icon-small aui-iconfont-edit"></span></span>
+            </dd>
+        </dl>
+                    </li>
+</ul>
+    <ul class="item-details">
+        <li>
+                            <dl>
+                    <dt>Votes:</dt>
+                    <dd>
+                                                                            <a id="view-voter-list" href="https://ci.open-paas.org/jira/secure/ViewVoters%21default.jspa?id=16626" title="View Voters">
+                                                    <span id="vote-data" class="aui-badge vote-state-off">0</span>
+                                                    </a>
+                        
+                                                                    </dd>
+                </dl>
+                                        <dl>
+                    <dt>Watchers:</dt>
+                    <dd>
+                                                                        
+                                                                            <a aria-haspopup="true" aria-expanded="false" class="__skate" id="view-watcher-list" href="https://ci.open-paas.org/jira/secure/ManageWatchers%21default.jspa?id=16626" title="View Watchers" aria-controls="inline-dialog-watchers" data-aui-trigger="">
+                                                    <span id="watcher-data" class="aui-badge watch-state-on">1</span>
+                                                    </a>
+                            <aui-inline-dialog2 data-aui-persistent="true" id="inline-dialog-watchers" class="aui-layer aui-inline-dialog __skate" data-aui-alignment="bottom left" data-aui-responds-to="none" aria-hidden="true">
+                                <div class="aui-inline-dialog-contents"></div>
+                            </aui-inline-dialog2>
+                        
+                                                                                    <a id="watching-toggle" class="watch-state-on" href="https://ci.open-paas.org/jira/secure/VoteOrWatchIssue.jspa?atl_token=BE2F-79PL-H8QS-2STB%7C99bf85b35fda4cb18ee69314eef5a1392be0a3d3%7Clin&amp;id=16626&amp;watch=unwatch" rel="16626">Stop watching this issue</a> <span class="icon"></span>
+                                                                        </dd>
+                </dl>
+                    </li>
+    </ul>
+</div></div><div id="datesmodule" class="module toggle-wrap"><div id="datesmodule_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Dates</h2></div><div class="mod-content"><ul class="item-details">
+    <li>
+            <dl class="dates">
+            <dt>Created:</dt>
+            <dd class="date user-tz" title="13/Jul/16 10:32 AM">
+
+                <span data-name="Created" id="create-date" data-fieldtype="datetime">
+                                                                        <time class="livestamp" datetime="2016-07-13T10:32:00+0200">4 hours ago</time>                                                             </span>
+            </dd>
+        </dl>
+            <dl class="dates">
+            <dt>Updated:</dt>
+            <dd class="date user-tz" title="13/Jul/16 10:59 AM">
+
+                <span data-name="Updated" id="updated-date" data-fieldtype="datetime">
+                                                                        <time class="livestamp" datetime="2016-07-13T10:59:46+0200">4 hours ago</time>                                                             </span>
+            </dd>
+        </dl>
+        </li>
+</ul>
+</div></div><div style="display: block;" id="viewissue-devstatus-panel" class="module toggle-wrap js-animation-completed"><div id="viewissue-devstatus-panel_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Development</h2><div class="try-labs-container"></div></div><div class="mod-content"><ul id="devstatus-container" class="item-details dev-status-container" data-labs-json="{&quot;allowed&quot;:false,&quot;optedIn&quot;:true,&quot;optedInByAdmin&quot;:true,&quot;dismissed&quot;:false,&quot;id&quot;:1}" data-show-contact-admin-form="false" data-issue-type="Bug" data-issue-status="Progressing" data-is-assignable="true" data-is-assignee="true" data-ait-help-url-json="{&quot;url&quot;:&quot;https://docs.atlassian.com/jira/docs-064/Advanced+workflow+configuration&quot;,&quot;alt&quot;:&quot;Get help!&quot;,&quot;key&quot;:&quot;workflow.auto.triggers&quot;,&quot;local&quot;:false,&quot;title&quot;:&quot;Advanced workflow configuration&quot;}" data-issue-id="1662
 6" data-issue-key="OR-2349"><div class="hidden dev-summary json-blob" data-json="{&quot;cachedValue&quot;:{&quot;errors&quot;:[],&quot;configErrors&quot;:[],&quot;summary&quot;:{&quot;pullrequest&quot;:{&quot;overall&quot;:{&quot;count&quot;:1,&quot;lastUpdated&quot;:&quot;2016-07-13T12:43:39.542+0200&quot;,&quot;stateCount&quot;:1,&quot;state&quot;:&quot;OPEN&quot;,&quot;open&quot;:true},&quot;byInstanceType&quot;:{&quot;stash&quot;:{&quot;count&quot;:1,&quot;name&quot;:&quot;Stash&quot;}}},&quot;build&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;failedBuildCount&quot;:0,&quot;successfulBuildCount&quot;:0,&quot;unknownBuildCount&quot;:0},&quot;byInstanceType&quot;:{}},&quot;review&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;stateCount&quot;:0,&quot;state&quot;:null,&quot;dueDate&quot;:null,&quot;overDue&quot;:false,&quot;completed&quot;:false},&quot;byInstanceType&quot;:{}},&quot;deployment-environment&quo
 t;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null,&quot;topEnvironments&quot;:[],&quot;showProjects&quot;:false,&quot;successfulCount&quot;:0},&quot;byInstanceType&quot;:{}},&quot;repository&quot;:{&quot;overall&quot;:{&quot;count&quot;:0,&quot;lastUpdated&quot;:null},&quot;byInstanceType&quot;:{}},&quot;branch&quot;:{&quot;overall&quot;:{&quot;count&quot;:1,&quot;lastUpdated&quot;:&quot;2016-07-13T12:43:39.542+0200&quot;},&quot;byInstanceType&quot;:{&quot;stash&quot;:{&quot;count&quot;:1,&quot;name&quot;:&quot;Stash&quot;}}}}},&quot;isStale&quot;:false}"></div><ul class="item-details status-panels devstatus-entry"><li class="status-panel js-has-data" id="branch-status-panel" data-module="BranchModule"><dl><dt><div style="height: auto;" class="rolling-container sliding-container"><div class="rolling-content"><div class="summary-content"><a class="summary" href="https://ci.open-paas.org/jira/browse/OR-2349?devStatusDetailDialog=branch" title="Branches related 
 to OR-2349"><span class="count">1</span> branch</a></div></div></div></dt><dd class="sub-text"><div style="height: auto;" class="rolling-container sliding-container"><div class="rolling-content"><div>Updated <time title="13/Jul/16 2:09 PM" class="livestamp date user-tz allow-future" data-datetime-format="fullAge" datetime="2016-07-13T14:09:29.039+0200">33 minutes ago</time></div></div></div></dd></dl></li><li class="status-panel hidden js-has-data" id="commit-status-panel" data-module="CommitModule"></li><li class="status-panel js-has-data" id="pullrequest-status-panel" data-module="PullRequestModule"><dl><dt><div style="height: auto;" class="rolling-container sliding-container"><div class="rolling-content"><div class="summary-content"><a class="summary" href="https://ci.open-paas.org/jira/browse/OR-2349?devStatusDetailDialog=pullrequest" title="Pull requests related to OR-2349"><span class="count">1</span> pull request</a> <span class="aui-lozenge aui-lozenge-overflow aui-lozenge-s
 ubtle aui-lozenge-complete  pullrequest-state">OPEN</span></div></div></div></dt><dd class="sub-text"><div style="height: auto;" class="rolling-container sliding-container"><div class="rolling-content"><div>Updated <time title="13/Jul/16 2:09 PM" class="livestamp date user-tz allow-future" data-datetime-format="fullAge" datetime="2016-07-13T14:09:29.039+0200">33 minutes ago</time></div></div></div></dd></dl></li><li class="status-panel hidden js-has-data" id="review-status-panel" data-module="ReviewModule"></li><li class="status-panel hidden js-has-data" id="build-status-panel" data-module="BuildModule" data-issue-type="Bug" data-issue-status="Progressing" data-is-assignee="true"></li><li class="status-panel deployment-summary hidden js-has-data" id="deployment-status-panel" data-module="DeploymentModule" data-issue-type="Bug" data-issue-status="Progressing" data-is-assignee="true"></li></ul><li class="call-to-actions devstatus-entry"><a href="https://ci.open-paas.org/jira/browse/OR
 -2349?devStatusDetailDialog=create-branch" class="devstatus-cta-link" data-issueid="16626" data-issue-type="Bug" data-issue-status="Progressing" data-is-assignee="true"><span class="devstatus-cta-link-text">Create branch</span></a></li><li class="message-panel hidden"></li><li class="labs-on-off-container hidden"></li></ul></div></div><div id="greenhopper-agile-issue-web-panel" class="module toggle-wrap"><div id="greenhopper-agile-issue-web-panel_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Agile</h2></div><div class="mod-content">
+
+<ul class="item-details ghx-separated">
+    <li>
+        <a class="issueaction-greenhopper-rapidboard-operation js-rapidboard-operation-issue" href="https://ci.open-paas.org/jira/secure/GHGoToBoard.jspa?issueId=16626" title="View this issue on an Agile board">
+            View on Board
+        </a>
+    </li>
+</ul>
+</div></div><div style="display: none;" id="bamboo-deployment-projects-right" class="module toggle-wrap"><div id="bamboo-deployment-projects-right_heading" class="mod-header"><ul class="ops"></ul><h2 class="toggle-title">Issue deployment</h2></div><div class="mod-content"><div id="issue-deployments-panel-content"></div>
+<script>
+    (function ($, JBAM_DEPLOYMENT){
+        if (!JBAM_DEPLOYMENT) {
+            return; // Don't bother rendering, since the resources aren't loaded (yet?).
+        }
+        if (JBAM_DEPLOYMENT.panel) {
+            JBAM_DEPLOYMENT.panel.remove();
+        }
+        JBAM_DEPLOYMENT.panel =  new JBAM_DEPLOYMENT.RelatedDeploymentProjects.View({
+                                                                                    el: '#issue-deployments-panel-content',
+                                                                                    fetchUrl: '/jira/rest/bamboo/latest/deploy/OR/OR-2349',
+                                                                                    oAuthDanceReturnUrl: '/jira/browse/OR-2349',
+                                                                                    issueId: '16626'
+                                                                                });
+    }(AJS.$, window.JBAM_DEPLOYMENT));
+</script>
+</div></div></div></div>
+                    </div>
+                </div>
+                        </div>
+
+    
+    </section>
+    <footer id="footer" role="contentinfo">
+        
+
+<section class="footer-body">
+
+
+
+<ul class="atlassian-footer">
+    <li>
+        Atlassian JIRA <a class="seo-link" href="https://www.atlassian.com/software/jira">Project Management Software</a>
+
+                                    
+                        
+        <span id="footer-build-information">(v6.4.5#64020-<span title="78acd6c502bd8e526a3f0032b770e55d6f3a3b0f" data-commit-id="78acd6c502bd8e526a3f0032b770e55d6f3a3b0f}">sha1:78acd6c</span>)</span>
+    </li>
+    <li>
+        <a id="about-link" href="https://ci.open-paas.org/jira/secure/AboutPage.jspa">About JIRA</a>
+    </li>
+    <li>
+                        <a id="footer-report-problem-link" href="https://ci.open-paas.org/jira/plugins/servlet/stp/view/">Report a problem</a>
+    </li>
+</ul>
+    <ul class="atlassian-footer">
+        <li class="licensemessage">
+                            Powered by a free Atlassian <a href="http://www.atlassian.com/software/jira">JIRA</a> open source license for OpenPaas. Try JIRA - <a href="http://www.atlassian.com/softw

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[05/10] james-project git commit: MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails

Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachment.eml
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachment.eml b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachment.eml
new file mode 100644
index 0000000..2dae3f2
--- /dev/null
+++ b/mailbox/store/src/test/resources/eml/emailWithNonIndexableAttachment.eml
@@ -0,0 +1,1655 @@
+Return-Path: <la...@linagora.com>
+MIME-Version: 1.0
+Delivered-To: laura.ro@linagora.com
+Content-Type: multipart/mixed;
+ boundary="-=Part.0.16b49c355c1c1b54.158b4d6fd1b.bd3741f90275bb0a=-"
+From: Laura ROYET <la...@linagora.com>
+Sender: Laura ROYET <la...@linagora.com>
+To: Laura ROYET <la...@linagora.com>
+Subject: test
+Message-ID: 1480502737913
+Date: Wed, 30 Nov 2016 10:45:38 +0000
+
+---=Part.0.16b49c355c1c1b54.158b4d6fd1b.bd3741f90275bb0a=-
+Content-Type: text/html; name="=?US-ASCII?Q?test.html?="
+Content-Disposition: attachment
+Content-Transfer-Encoding: base64
+
+PCFET0NUWVBFIGh0bWw+CjxodG1sIGNsYXNzPSJtb3ppbGxhIiBsYW5nPSJlbiI+PGhlYWQ+Cjxt
+ZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
+PVVURi04Ij4KICAgIAoKCgoKCjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPG1ldGEgaHR0cC1lcXVp
+dj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1FZGdlIj4KPG1ldGEgbmFtZT0iYXBwbGlj
+YXRpb24tbmFtZSIgY29udGVudD0iSklSQSIgZGF0YS1uYW1lPSJqaXJhIiBkYXRhLXZlcnNpb249
+IjYuNC41Ij48bWV0YSBuYW1lPSJhanMtc2VydmVyUmVuZGVyZWRWaWV3SXNzdWUiIGNvbnRlbnQ9
+InRydWUiPgo8bWV0YSBuYW1lPSJhanMtaGFzQ3JpdGVyaWFBdXRvVXBkYXRlIiBjb250ZW50PSJ0
+cnVlIj4KPG1ldGEgbmFtZT0iYWpzLXZpZXdpc3N1ZS11c2UtaGlzdG9yeS1hcGkiIGNvbnRlbnQ9
+ImZhbHNlIj4KPG1ldGEgbmFtZT0iYWpzLXZpZXdpc3N1ZS1tYXgtY2FjaGUtc2l6ZSIgY29udGVu
+dD0iIj4KPG1ldGEgbmFtZT0iYWpzLWF1dG9jb21wbGV0ZS1lbmFibGVkIiBjb250ZW50PSJ0cnVl
+Ij4KPG1ldGEgbmFtZT0iYWpzLXZpZXctaXNzdWUtdHJhY2Uta2V5IiBjb250ZW50PSJqaXJhLmlz
+c3VlLnJlZnJlc2hlZCI+CjxtZXRhIG5hbWU9ImFqcy12aWV3LWlzc3VlLXBzeWNoby1rZXkiIGNv
+bnRlbnQ9ImppcmEucHN5Y2hvLmlzc3VlLnJlZnJlc2hlZCI+CjxtZXRhIG5hbWU9ImFqcy12aWV3
+LWlzc3VlLXJlZnJlc2hlZC1jYWNoZWQta2V5IiBjb250ZW50PSJqaXJhLnBzeWNoby5pc3N1ZS5y
+ZWZyZXNoZWQuY2FjaGVkIj4KPG1ldGEgbmFtZT0iYWpzLXJldHVybi10by1zZWFyY2gtdHJhY2Ut
+a2V5IiBjb250ZW50PSJqaXJhLnJldHVybmVkLnRvLnNlYXJjaCI+CjxtZXRhIG5hbWU9ImFqcy1y
+ZXR1cm4tdG8tc2VhcmNoLXBzeWNoby1rZXkiIGNvbnRlbnQ9ImppcmEucHN5Y2hvLnJldHVybmVk
+LnRvLnNlYXJjaCI+CjxtZXRhIG5hbWU9ImFqcy1kZWZhdWx0LWF2YXRhci11cmwiIGNvbnRlbnQ9
+Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS91c2VyYXZhdGFyP3NpemU9eHNt
+YWxsJmFtcDthdmF0YXJJZD0xMDEyMyI+CjxtZXRhIG5hbWU9ImFqcy1qaXJhLmlzc3Vlcy5wcmVm
+ZXJyZWQubGF5b3V0LmtleSIgY29udGVudD0ic3BsaXQtdmlldyI+CjxtZXRhIG5hbWU9ImFqcy1t
+YXgtcmVjZW50LXNlYXJjaGVycyIgY29udGVudD0iMTAiPgo8bWV0YSBuYW1lPSJhanMtamlyYS1i
+YXNlLXVybCIgY29udGVudD0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEiPgo8bWV0YSBu
+YW1lPSJhanMtZGV2LW1vZGUiIGNvbnRlbnQ9ImZhbHNlIj4KPG1ldGEgbmFtZT0iYWpzLWNvbnRl
+eHQtcGF0aCIgY29udGVudD0iL2ppcmEiPgo8bWV0YSBuYW1lPSJhanMtdmVyc2lvbi1udW1iZXIi
+IGNvbnRlbnQ9IjYuNC41Ij4KPG1ldGEgbmFtZT0iYWpzLWJ1aWxkLW51bWJlciIgY29udGVudD0i
+NjQwMjAiPgo8bWV0YSBuYW1lPSJhanMtaXMtYmV0YSIgY29udGVudD0iZmFsc2UiPgo8bWV0YSBu
+YW1lPSJhanMtaXMtcmMiIGNvbnRlbnQ9ImZhbHNlIj4KPG1ldGEgbmFtZT0iYWpzLWlzLXNuYXBz
+aG90IiBjb250ZW50PSJmYWxzZSI+CjxtZXRhIG5hbWU9ImFqcy1pcy1taWxlc3RvbmUiIGNvbnRl
+bnQ9ImZhbHNlIj4KPG1ldGEgbmFtZT0iYWpzLXJlbW90ZS11c2VyIiBjb250ZW50PSJzY29sc29u
+Ij4KPG1ldGEgbmFtZT0iYWpzLXJlbW90ZS11c2VyLWZ1bGxuYW1lIiBjb250ZW50PSJTdGVwaGFu
+ZSBDT0xTT04iPgo8bWV0YSBuYW1lPSJhanMtdXNlci1sb2NhbGUiIGNvbnRlbnQ9ImVuX1VTIj4K
+PG1ldGEgbmFtZT0iYWpzLXVzZXItbG9jYWxlLWdyb3VwLXNlcGFyYXRvciIgY29udGVudD0iLCI+
+CjxtZXRhIG5hbWU9ImFqcy1hcHAtdGl0bGUiIGNvbnRlbnQ9Ik9wZW5QYWFzLUxpbmFnb3JhIj4K
+PG1ldGEgbmFtZT0iYWpzLWtleWJvYXJkLXNob3J0Y3V0cy1lbmFibGVkIiBjb250ZW50PSJ0cnVl
+Ij4KPG1ldGEgbmFtZT0iYWpzLWtleWJvYXJkLWFjY2Vzc2tleS1tb2RpZmllciIgY29udGVudD0i
+QWx0K1NoaWZ0Ij4KPG1ldGEgbmFtZT0iYWpzLWVuYWJsZWQtZGFyay1mZWF0dXJlcyIgY29udGVu
+dD0iWyZxdW90O2NvbS5hdGxhc3NpYW4uamlyYS5wcm9qZWN0cy5pc3N1ZW5hdmlnYXRvciZxdW90
+OywmcXVvdDtjb20uYXRsYXNzaWFuLmppcmEucHJvamVjdHMuUHJvamVjdENlbnRyaWNOYXZpZ2F0
+aW9uLlN3aXRjaCZxdW90OywmcXVvdDtqaXJhLnBsdWdpbi5kZXZzdGF0dXMucGhhc2V0d28uZW5h
+YmxlZCZxdW90OywmcXVvdDtjb20uYXRsYXNzaWFuLmppcmEuY29uZmlnLlBETCZxdW90OywmcXVv
+dDtqaXJhLmZyb3RoZXIucmVwb3J0ZXIuZmllbGQmcXVvdDssJnF1b3Q7amlyYS5wbHVnaW4uZGV2
+c3RhdHVzLnBoYXNldHdvJnF1b3Q7LCZxdW90O2NvbS5hdGxhc3NpYW4uamlyYS5kYXJrZmVhdHVy
+ZS5Db21tb25IZWFkZXImcXVvdDssJnF1b3Q7YXBwLXN3aXRjaGVyLm5ldyZxdW90OywmcXVvdDtm
+cm90aGVyLmFzc2lnbmVlLmZpZWxkJnF1b3Q7LCZxdW90O2ppcmEuaXNzdWUuc3RhdHVzLmxvemVu
+Z2UmcXVvdDtdIj4KPG1ldGEgbmFtZT0iYWpzLWRhdGUtcmVsYXRpdml6ZSIgY29udGVudD0idHJ1
+ZSI+CjxtZXRhIG5hbWU9ImFqcy1kYXRlLXRpbWUiIGNvbnRlbnQ9Img6bW0gYSI+CjxtZXRhIG5h
+bWU9ImFqcy1kYXRlLWRheSIgY29udGVudD0iRUVFRSBoOm1tIGEiPgo8bWV0YSBuYW1lPSJhanMt
+ZGF0ZS1kbXkiIGNvbnRlbnQ9ImRkL01NTS95eSI+CjxtZXRhIG5hbWU9ImFqcy1kYXRlLWNvbXBs
+ZXRlIiBjb250ZW50PSJkZC9NTU0veXkgaDptbSBhIj4KPG1ldGEgbmFtZT0iYWpzLWluLWFkbWlu
+LW1vZGUiIGNvbnRlbnQ9ImZhbHNlIj4KPG1ldGEgbmFtZT0iYWpzLWlzLXN5c2FkbWluIiBjb250
+ZW50PSJ0cnVlIj4KPG1ldGEgbmFtZT0iYWpzLWlzLWFkbWluIiBjb250ZW50PSJ0cnVlIj4KPG1l
+dGEgbmFtZT0iYWpzLW91dGdvaW5nLW1haWwtZW5hYmxlZCIgY29udGVudD0idHJ1ZSI+CjxzY3Jp
+cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgQUpTPUFKU3x8e307QUpTLmRlYnVnPXRydWU7
+PC9zY3JpcHQ+PG1ldGEgbmFtZT0iYWpzLWFkbWluLXF1aWNrc2VhcmNoLXNob3ciIGNvbnRlbnQ9
+InRydWUiPgoKCiAgICAKPG1ldGEgaWQ9ImF0bGFzc2lhbi10b2tlbiIgbmFtZT0iYXRsYXNzaWFu
+LXRva2VuIiBjb250ZW50PSJCRTJGLTc5UEwtSDhRUy0yU1RCfDk5YmY4NWIzNWZkYTRjYjE4ZWU2
+OTMxNGVlZjVhMTM5MmJlMGEzZDN8bGluIj4KCgoKPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBo
+cmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zL2VuX1VTLWo4NHZycC82NDAyMC8z
+L18vZmF2aWNvbi5pY28iPgoKCiAgICAKCgo8IS0tW2lmIElFXT48IVtlbmRpZl0tLT4KPHNjcmlw
+dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBjb250ZXh0UGF0aCA9ICcvamlyYSc7PC9zY3Jp
+cHQ+CjxzY3JpcHQ+CndpbmRvdy5XUk09d2luZG93LldSTXx8e307d2luZG93LldSTS5fdW5wYXJz
+ZWREYXRhPXdpbmRvdy5XUk0uX3VucGFyc2VkRGF0YXx8e307CldSTS5fdW5wYXJzZWREYXRhWyJj
+b20uYXRsYXNzaWFuLnBsdWdpbnMuYXRsYXNzaWFuLXBsdWdpbnMtd2VicmVzb3VyY2UtcGx1Z2lu
+OmNvbnRleHQtcGF0aC5jb250ZXh0LXBhdGgiXT0iXCIvamlyYVwiIjsKV1JNLl91bnBhcnNlZERh
+dGFbImppcmEud2VicmVzb3VyY2VzOmRhdGVGb3JtYXRQcm92aWRlci5kYXRlRm9ybWF0Il09Intc
+Im1lcmlkaWVtXCI6W1wiQU1cIixcIlBNXCJdLFwiZXJhc1wiOltcIkJDXCIsXCJBRFwiXSxcIm1v
+bnRoc1wiOltcIkphbnVhcnlcIixcIkZlYnJ1YXJ5XCIsXCJNYXJjaFwiLFwiQXByaWxcIixcIk1h
+eVwiLFwiSnVuZVwiLFwiSnVseVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9jdG9iZXJc
+IixcIk5vdmVtYmVyXCIsXCJEZWNlbWJlclwiXSxcIm1vbnRoc1Nob3J0XCI6W1wiSmFuXCIsXCJG
+ZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNl
+cFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSxcIndlZWtkYXlzU2hvcnRcIjpbXCJTdW5cIixc
+Ik1vblwiLFwiVHVlXCIsXCJXZWRcIixcIlRodVwiLFwiRnJpXCIsXCJTYXRcIl0sXCJ3ZWVrZGF5
+c1wiOltcIlN1bmRheVwiLFwiTW9uZGF5XCIsXCJUdWVzZGF5XCIsXCJXZWRuZXNkYXlcIixcIlRo
+dXJzZGF5XCIsXCJGcmlkYXlcIixcIlNhdHVyZGF5XCJdfSI7CldSTS5fdW5wYXJzZWREYXRhWyJj
+b20uYXRsYXNzaWFuLmppcmEuamlyYS1oZWFkZXItcGx1Z2luOmRpc21pc3NlZEZsYWdzLmZsYWdz
+Il09IntcImRpc21pc3NlZFwiOltcImNvbS5hdGxhc3NpYW4uamlyYS50emRldGVjdC4tMzYwMDAw
+MDAsLTM2MDAwMDAwXCIsXCJjb20uYXRsYXNzaWFuLmppcmEudHpkZXRlY3QuLTE4MDAwMDAwLC0x
+NDQwMDAwMFwiLFwiY29tLmF0bGFzc2lhbi5qaXJhLnR6ZGV0ZWN0Li0yODgwMDAwMCwtMjUyMDAw
+MDBcIl19IjsKV1JNLl91bnBhcnNlZERhdGFbImNvbS5hdGxhc3NpYW4uamlyYS5qaXJhLWhlYWRl
+ci1wbHVnaW46bmV3c2xldHRlci1zaWdudXAtdGlwLm5ld3NsZXR0ZXJTaWdudXAiXT0ie1wiZm9y
+bVVybFwiOlwiaHR0cHM6Ly93d3cuYXRsYXNzaWFuLmNvbS9hcGlzL2V4YWN0LXRhcmdldC97MH0v
+c3Vic2NyaWJlP21haWxpbmdMaXN0SWQ9MTIzOTEzMVwiLFwidXNlckVtYWlsXCI6XCJzY29sc29u
+QGxpbmFnb3JhLmNvbVwiLFwic2hvd05ld3NsZXR0ZXJUaXBcIjpmYWxzZX0iOwpXUk0uX3VucGFy
+c2VkRGF0YVsiY29tLmF0bGFzc2lhbi5qaXJhLnBsdWdpbnMuZ3JlZW5ob3BwZXItbWFya2V0aW5n
+LXBsdWdpbjpnaC1hZHZlcnRpc2luZy1yZXNvdXJjZXMudXJscyJdPSJ7XCJoYW1sZXRcIjpcImh0
+dHBzOi8vaGFtbGV0LmF0bGFzc2lhbi5jb20vXCIsXCJsYXNzb1wiOlwiaHR0cHM6Ly9pZC5hdGxh
+c3NpYW4uY29tL1wiLFwibWFjXCI6XCJodHRwczovL215LmF0bGFzc2lhbi5jb21cIn0iOwpXUk0u
+X3VucGFyc2VkRGF0YVsiY29tLmF0bGFzc2lhbi5qaXJhLnBsdWdpbnMuamlyYS1hZG1pbi1oZWxw
+ZXItcGx1Z2luOm5vdGlmaWNhdGlvbi1ldmVudC1wcm92aWRlci5ub3RpZmljYXRpb24tZXZlbnQt
+ZGF0YSJdPSJbe1wiaWRcIjoxLFwibmFtZVwiOlwiSXNzdWUgQ3JlYXRlZFwiLFwiaXNEZWZhdWx0
+XCI6dHJ1ZX0se1wiaWRcIjoyLFwibmFtZVwiOlwiSXNzdWUgVXBkYXRlZFwifSx7XCJpZFwiOjMs
+XCJuYW1lXCI6XCJJc3N1ZSBBc3NpZ25lZFwifSx7XCJpZFwiOjQsXCJuYW1lXCI6XCJJc3N1ZSBS
+ZXNvbHZlZFwifSx7XCJpZFwiOjUsXCJuYW1lXCI6XCJJc3N1ZSBDbG9zZWRcIn0se1wiaWRcIjo2
+LFwibmFtZVwiOlwiSXNzdWUgQ29tbWVudGVkXCJ9LHtcImlkXCI6MTQsXCJuYW1lXCI6XCJJc3N1
+ZSBDb21tZW50IEVkaXRlZFwifSx7XCJpZFwiOjE3LFwibmFtZVwiOlwiSXNzdWUgQ29tbWVudCBE
+ZWxldGVkXCJ9LHtcImlkXCI6NyxcIm5hbWVcIjpcIklzc3VlIFJlb3BlbmVkXCJ9LHtcImlkXCI6
+OCxcIm5hbWVcIjpcIklzc3VlIERlbGV0ZWRcIn0se1wiaWRcIjo5LFwibmFtZVwiOlwiSXNzdWUg
+TW92ZWRcIn0se1wiaWRcIjoxMCxcIm5hbWVcIjpcIldvcmsgTG9nZ2VkIE9uIElzc3VlXCJ9LHtc
+ImlkXCI6MTEsXCJuYW1lXCI6XCJXb3JrIFN0YXJ0ZWQgT24gSXNzdWVcIn0se1wiaWRcIjoxMixc
+Im5hbWVcIjpcIldvcmsgU3RvcHBlZCBPbiBJc3N1ZVwifSx7XCJpZFwiOjE1LFwibmFtZVwiOlwi
+SXNzdWUgV29ya2xvZyBVcGRhdGVkXCJ9LHtcImlkXCI6MTYsXCJuYW1lXCI6XCJJc3N1ZSBXb3Jr
+bG9nIERlbGV0ZWRcIn0se1wiaWRcIjoxMyxcIm5hbWVcIjpcIkdlbmVyaWMgRXZlbnRcIn1dIjsK
+V1JNLl91bnBhcnNlZERhdGFbImNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW5zLmppcmEtYWRtaW4t
+aGVscGVyLXBsdWdpbjpwZXJtaXNzaW9ucy1wcm92aWRlci5wZXJtaXNzaW9ucy1kYXRhIl09Ilt7
+XCJwZXJtaXNzaW9uc1wiOlt7XCJuYW1lXCI6XCJBZG1pbmlzdGVyIFByb2plY3RzXCIsXCJpZFwi
+OlwiMjNcIn0se1wibmFtZVwiOlwiQnJvd3NlIFByb2plY3RzXCIsXCJpZFwiOlwiMTBcIn0se1wi
+bmFtZVwiOlwiVmlldyBEZXZlbG9wbWVudCBUb29sc1wiLFwiaWRcIjpcIjI5XCJ9LHtcIm5hbWVc
+IjpcIlZpZXcgUmVhZC1Pbmx5IFdvcmtmbG93XCIsXCJpZFwiOlwiNDVcIn1dLFwibmFtZVwiOlwi
+UHJvamVjdCBQZXJtaXNzaW9uc1wifSx7XCJwZXJtaXNzaW9uc1wiOlt7XCJuYW1lXCI6XCJDcmVh
+dGUgSXNzdWVzXCIsXCJpZFwiOlwiMTFcIn0se1wibmFtZVwiOlwiRWRpdCBJc3N1ZXNcIixcImlk
+XCI6XCIxMlwifSx7XCJuYW1lXCI6XCJUcmFuc2l0aW9uIElzc3Vlc1wiLFwiaWRcIjpcIjQ2XCJ9
+LHtcIm5hbWVcIjpcIlNjaGVkdWxlIElzc3Vlc1wiLFwiaWRcIjpcIjI4XCJ9LHtcIm5hbWVcIjpc
+Ik1vdmUgSXNzdWVzXCIsXCJpZFwiOlwiMjVcIn0se1wibmFtZVwiOlwiQXNzaWduIElzc3Vlc1wi
+LFwiaWRcIjpcIjEzXCJ9LHtcIm5hbWVcIjpcIkFzc2lnbmFibGUgVXNlclwiLFwiaWRcIjpcIjE3
+XCJ9LHtcIm5hbWVcIjpcIlJlc29sdmUgSXNzdWVzXCIsXCJpZFwiOlwiMTRcIn0se1wibmFtZVwi
+OlwiQ2xvc2UgSXNzdWVzXCIsXCJpZFwiOlwiMThcIn0se1wibmFtZVwiOlwiTW9kaWZ5IFJlcG9y
+dGVyXCIsXCJpZFwiOlwiMzBcIn0se1wibmFtZVwiOlwiRGVsZXRlIElzc3Vlc1wiLFwiaWRcIjpc
+IjE2XCJ9LHtcIm5hbWVcIjpcIkxpbmsgSXNzdWVzXCIsXCJpZFwiOlwiMjFcIn0se1wibmFtZVwi
+OlwiU2V0IElzc3VlIFNlY3VyaXR5XCIsXCJpZFwiOlwiMjZcIn1dLFwibmFtZVwiOlwiSXNzdWUg
+UGVybWlzc2lvbnNcIn0se1wicGVybWlzc2lvbnNcIjpbe1wibmFtZVwiOlwiVmlldyBWb3RlcnMg
+YW5kIFdhdGNoZXJzXCIsXCJpZFwiOlwiMzFcIn0se1wibmFtZVwiOlwiTWFuYWdlIFdhdGNoZXJz
+XCIsXCJpZFwiOlwiMzJcIn1dLFwibmFtZVwiOlwiVm90ZXJzICYgV2F0Y2hlcnMgUGVybWlzc2lv
+bnNcIn0se1wicGVybWlzc2lvbnNcIjpbe1wibmFtZVwiOlwiQWRkIENvbW1lbnRzXCIsXCJpZFwi
+OlwiMTVcIn0se1wibmFtZVwiOlwiRWRpdCBBbGwgQ29tbWVudHNcIixcImlkXCI6XCIzNFwifSx7
+XCJuYW1lXCI6XCJFZGl0IE93biBDb21tZW50c1wiLFwiaWRcIjpcIjM1XCJ9LHtcIm5hbWVcIjpc
+IkRlbGV0ZSBBbGwgQ29tbWVudHNcIixcImlkXCI6XCIzNlwifSx7XCJuYW1lXCI6XCJEZWxldGUg
+T3duIENvbW1lbnRzXCIsXCJpZFwiOlwiMzdcIn1dLFwibmFtZVwiOlwiQ29tbWVudHMgUGVybWlz
+c2lvbnNcIn0se1wicGVybWlzc2lvbnNcIjpbe1wibmFtZVwiOlwiQ3JlYXRlIEF0dGFjaG1lbnRz
+XCIsXCJpZFwiOlwiMTlcIn0se1wibmFtZVwiOlwiRGVsZXRlIEFsbCBBdHRhY2htZW50c1wiLFwi
+aWRcIjpcIjM4XCJ9LHtcIm5hbWVcIjpcIkRlbGV0ZSBPd24gQXR0YWNobWVudHNcIixcImlkXCI6
+XCIzOVwifV0sXCJuYW1lXCI6XCJBdHRhY2htZW50cyBQZXJtaXNzaW9uc1wifSx7XCJwZXJtaXNz
+aW9uc1wiOlt7XCJuYW1lXCI6XCJXb3JrIE9uIElzc3Vlc1wiLFwiaWRcIjpcIjIwXCJ9LHtcIm5h
+bWVcIjpcIkVkaXQgT3duIFdvcmtsb2dzXCIsXCJpZFwiOlwiNDBcIn0se1wibmFtZVwiOlwiRWRp
+dCBBbGwgV29ya2xvZ3NcIixcImlkXCI6XCI0MVwifSx7XCJuYW1lXCI6XCJEZWxldGUgT3duIFdv
+cmtsb2dzXCIsXCJpZFwiOlwiNDJcIn0se1wibmFtZVwiOlwiRGVsZXRlIEFsbCBXb3JrbG9nc1wi
+LFwiaWRcIjpcIjQzXCJ9XSxcIm5hbWVcIjpcIlRpbWUgVHJhY2tpbmcgUGVybWlzc2lvbnNcIn1d
+IjsKV1JNLl91bnBhcnNlZERhdGFbImNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW5zLmppcmEtZG5k
+LWF0dGFjaG1lbnQtcGx1Z2luOmRyYWctYW5kLWRyb3AtYXR0YWNobWVudC1qYXZhc2NyaXB0LnVw
+bG9hZC1saW1pdCJdPSJcIjEwNDg1NzYwXCIiOwpXUk0uX3VucGFyc2VkRGF0YVsiY29tLmF0bGFz
+c2lhbi5wbHVnaW5zLmF0bGFzc2lhbi1wbHVnaW5zLXdlYnJlc291cmNlLXJlc3Q6d2ViLXJlc291
+cmNlLW1hbmFnZXIucmVzb3VyY2UtYmFzZS11cmwtcGF0dGVybiJdPSJcIig/Oi9qaXJhKD86L3Mv
+Lio/L18pPy9kb3dubG9hZClcIiI7CldSTS5fdW5wYXJzZWREYXRhWyJjb20uYXRsYXNzaWFuLnBs
+dWdpbnMuYmFzZS1oaXBjaGF0LWludGVncmF0aW9uLXBsdWdpbjpjb25maWd1cmUtaW50ZWdyYXRp
+b24tZGF0YS5jb25maWd1cmUtaW50ZWdyYXRpb24iXT0ie1wiaW52aXRlRW5hYmxlZFwiOmZhbHNl
+fSI7CldSTS5fdW5wYXJzZWREYXRhWyJjb20uYXRsYXNzaWFuLnBsdWdpbnMuYmFzZS1oaXBjaGF0
+LWludGVncmF0aW9uLXBsdWdpbjpoaXBjaGF0LWluc3RhbGxlZC1zY29wZXMuc2NvcGVzIl09Int9
+IjsKV1JNLl91bnBhcnNlZERhdGFbImNvbS5hdGxhc3NpYW4ucGx1Z2lucy5iYXNlLWhpcGNoYXQt
+aW50ZWdyYXRpb24tcGx1Z2luOmhpcGNoYXQtdXNlci1saW5rLXN1cHBvcnQudXNlci1saW5rLWNv
+bnRleHQiXT0ie1widXNlckxpbmtlZFwiOmZhbHNlLFwidXNlckhhc01hbmFnZVJvb21zU2NvcGVc
+IjpmYWxzZSxcImJlZ2luT2F1dGhcIjpcImh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3Jl
+c3QvaGlwY2hhdC9pbnRlZ3JhdGlvbi9sYXRlc3Qvb2F1dGgyL2JlZ2luXCJ9IjsKV1JNLl91bnBh
+cnNlZERhdGFbImNvbS5hdGxhc3NpYW4ucGx1Z2lucy5iYXNlLWhpcGNoYXQtaW50ZWdyYXRpb24t
+cGx1Z2luOmludGVncmF0aW9uLXN0ZXBzLXJlc291cmNlcy5lbmFibGUtaW52aXRlIl09IntcImlu
+dml0ZVRvSGlwQ2hhdEVuYWJsZWRcIjp0cnVlLFwiaXNJbnZpdGF0aW9uc1RvR3JvdXBBbGxvd2Vk
+VVJJXCI6XCJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9yZXN0L2hpcGNoYXQvaW50ZWdy
+YXRpb24vbGF0ZXN0L2dyb3Vwcy9kZWZhdWx0L2ludml0YXRpb25zLWFsbG93ZWRcIn0iOwpXUk0u
+X3VucGFyc2VkRGF0YVsiY29tLmF0bGFzc2lhbi5wbHVnaW5zLmJyb3dzZXIubWV0cmljcy5icm93
+c2VyLW1ldHJpY3MtcGx1Z2luOmFwaS5mZWF0dXJlLWRhdGEtcHJvdmlkZXIiXT0idHJ1ZSI7CldS
+TS5fdW5wYXJzZWREYXRhWyJjb20uYXRsYXNzaWFuLnBsdWdpbnMuYnJvd3Nlci5tZXRyaWNzLmJy
+b3dzZXItbWV0cmljcy1wbHVnaW46YnJvd3Nlci1tZXRyaWNzLmZlYXR1cmUtZGF0YS1wcm92aWRl
+ci1sZWdhY3kiXT0idHJ1ZSI7CldSTS5fdW5wYXJzZWREYXRhWyJjb20uYXRsYXNzaWFuLnBsdWdp
+bnMuaGVscHRpcHMuamlyYS1oZWxwLXRpcHM6Y29tbW9uLkppcmFIZWxwVGlwRGF0YSJdPSJ7XCJk
+aXNtaXNzZWRcIjpbXCJhZGQubmV3LnVzZXJzXCIsXCJhdXRvbWF0aWNUcmFuc2l0aW9uRGV2U3Vt
+bWFyeVRvb2x0aXBcIixcImRldnN0YXR1cy5jdGEuY3JlYXRlYnJhbmNoLnRvb2x0aXBcIixcImhp
+cGNoYXQuZmVhdHVyZS5kaXNjb3ZlcnkudGlwXCIsXCJub3RpZmljYXRpb24taGVscGVyLWhlbHB0
+aXBcIixcInBlcm1pc3Npb24taGVscGVyLWhlbHB0aXBcIixcInNpZGViYXItY2hhcGVyb25lLWNv
+bGxhcHNlLXRpcFwiLFwic2lkZWJhci1jaGFwZXJvbmUtZGlzYWJsZS10aXBcIixcInNpZGViYXIt
+Y2hhcGVyb25lLWdlbmVyYWwtb3ZlcnZpZXctdGlwXCIsXCJzcGxpdC12aWV3LWludHJvXCIsXCJ2
+aWV3LmFsbC5pc3N1ZXNcIl0sXCJhbm9ueW1vdXNcIjpmYWxzZX0iOwpXUk0uX3VucGFyc2VkRGF0
+YVsiY29tLmF0bGFzc2lhbi5wbHVnaW5zLmppcmEtaHRtbDUtYXR0YWNoLWltYWdlczpqaXJhLWh0
+bWw1LWF0dGFjaC1pbWFnZXMtcmVzb3VyY2VzLnJlc291cmNlLXVyaXMiXT0ie1wiZGVwbG95SmF2
+YS5odG1sXCI6XCIvamlyYS9zL2VuX1VTLWo4NHZycC82NDAyMC8zLzEuNS4yNy9fL2Rvd25sb2Fk
+L3Jlc291cmNlcy9jb20uYXRsYXNzaWFuLnBsdWdpbnMuamlyYS1odG1sNS1hdHRhY2gtaW1hZ2Vz
+OmppcmEtaHRtbDUtYXR0YWNoLWltYWdlcy1yZXNvdXJjZXMvZGVwbG95SmF2YS5odG1sXCIsXCJj
+bGlwYm9hcmQuamFyXCI6XCIvamlyYS9zL2VuX1VTLWo4NHZycC82NDAyMC8zLzEuNS4yNy9fL2Rv
+d25sb2FkL3Jlc291cmNlcy9jb20uYXRsYXNzaWFuLnBsdWdpbnMuamlyYS1odG1sNS1hdHRhY2gt
+aW1hZ2VzOmppcmEtaHRtbDUtYXR0YWNoLWltYWdlcy1yZXNvdXJjZXMvY2xpcGJvYXJkLmphclwi
+LFwiY2xpcGJvYXJkLWxlZ2FjeS5qYXJcIjpcIi9qaXJhL3MvZW5fVVMtajg0dnJwLzY0MDIwLzMv
+MS41LjI3L18vZG93bmxvYWQvcmVzb3VyY2VzL2NvbS5hdGxhc3NpYW4ucGx1Z2lucy5qaXJhLWh0
+bWw1LWF0dGFjaC1pbWFnZXM6amlyYS1odG1sNS1hdHRhY2gtaW1hZ2VzLXJlc291cmNlcy9jbGlw
+Ym9hcmQtbGVnYWN5LmphclwifSI7Cjwvc2NyaXB0Pgo8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVs
+PSJzdHlsZXNoZWV0IiBocmVmPSJ0ZXN0X2ZpbGVzL2JhdGNoXzAwMi5jc3MiIG1lZGlhPSJhbGwi
+Pgo8IS0tW2lmIGx0ZSBJRSA5XT4KPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVl
+dCIgaHJlZj0iL2ppcmEvcy80ZmMyNDUwMzU0Y2U3YWZkZTUwZjBlMmFjZmY1ZGEzMy1DRE4vZW5f
+VVMtajg0dnJwLzY0MDIwLzMvMzgvXy9kb3dubG9hZC9zdXBlcmJhdGNoL2Nzcy9iYXRjaC5jc3M/
+Y29uZGl0aW9uYWxDb21tZW50PWx0ZStJRSs5IiBtZWRpYT0iYWxsIj4KPCFbZW5kaWZdLS0+Cjxs
+aW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InRlc3RfZmlsZXMvYmF0
+Y2guY3NzIiBtZWRpYT0iYWxsIj4KPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVl
+dCIgaHJlZj0idGVzdF9maWxlcy9jb20uY3NzIiBtZWRpYT0iYWxsIj4KPHNjcmlwdCB0eXBlPSJ0
+ZXh0L2phdmFzY3JpcHQiIHNyYz0idGVzdF9maWxlcy9iYXRjaF8wMDIuanMiPjwvc2NyaXB0Pjxz
+dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+OnJvb3QgI2hlYWRlciArICNjb250ZW50ID4gI2xlZnQgPiAj
+cmxibG9ja19sZWZ0LAo6cm9vdCAjY29udGVudCA+ICNyaWdodCA+IC5kb3NlID4gLmRvc2VzaW5n
+bGUsCjpyb290ICNjb250ZW50ID4gI2NlbnRlciA+IC5kb3NlID4gLmRvc2VzaW5nbGUKe2Rpc3Bs
+YXk6bm9uZSAhaW1wb3J0YW50O308L3N0eWxlPjxzdHlsZT48L3N0eWxlPjxzdHlsZSB0eXBlPSJ0
+ZXh0L2NzcyI+PC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGVz
+dF9maWxlcy9iYXRjaC5qcyI+PC9zY3JpcHQ+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxl
+PjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48bGluayB0eXBlPSJ0ZXh0L2NzcyIgY2hh
+cnNldD0iSVNPLTg4NTktMSIgaHJlZj0idGVzdF9maWxlcy9jb21tb24uY3NzIiByZWw9InN0eWxl
+c2hlZXQiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0ZXN0X2ZpbGVzL2Nv
+bS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRlc3Rf
+ZmlsZXMvamlyYV8wMDIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
+dCIgc3JjPSJ0ZXN0X2ZpbGVzL2ppcmEuanMiPjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0
+L2phdmFzY3JpcHQiIHNyYz0idGVzdF9maWxlcy9zaG9ydGN1dHMuanMiPjwvc2NyaXB0PgoKCgog
+ICAgCiAgICAKICAgIDxtZXRhIG5hbWU9ImRlY29yYXRvciIgY29udGVudD0iYXRsLmdlbmVyYWwi
+PgogICAgPG1ldGEgaWQ9ImlzTmF2aWdhdG9yIiBuYW1lPSJpc05hdmlnYXRvciIgY29udGVudD0i
+dHJ1ZSI+CiAgICA8bWV0YSBuYW1lPSJhanMtaXMtaW5saW5lLWVkaXQtZW5hYmxlZCIgY29udGVu
+dD0idHJ1ZSI+CiAgICA8bWV0YSBuYW1lPSJhanMtdXNlci5zZWFyY2gubW9kZSIgY29udGVudD0i
+YmFzaWMiPgogICAgPG1ldGEgbmFtZT0iYWpzLWlzc3VlLXNlYXJjaC1oZWxwLXRpdGxlIiBjb250
+ZW50PSJTZWFyY2hpbmcgZm9yIElzc3VlcyI+CiAgICA8bWV0YSBuYW1lPSJhanMtaXNzdWUtc2Vh
+cmNoLWhlbHAtdXJsIiBjb250ZW50PSJodHRwczovL2RvY3MuYXRsYXNzaWFuLmNvbS9qaXJhL2Rv
+Y3MtMDY0L1NlYXJjaGluZytmb3IrSXNzdWVzIj4KICAgIDxtZXRhIG5hbWU9ImFqcy1hZHZhbmNl
+ZC1zZWFyY2gtaGVscC10aXRsZSIgY29udGVudD0iUGVyZm9ybWluZyBBZHZhbmNlZCBTZWFyY2hl
+cyI+CiAgICA8bWV0YSBuYW1lPSJhanMtYWR2YW5jZWQtc2VhcmNoLWhlbHAtdXJsIiBjb250ZW50
+PSJodHRwczovL2RvY3MuYXRsYXNzaWFuLmNvbS9qaXJhL2RvY3MtMDY0L0FkdmFuY2VkK1NlYXJj
+aGluZyI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhanMtcmVtb3RlLXVzZXItYXZhdGFy
+LXVybCIgY29udGVudD0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL3VzZXJh
+dmF0YXI/YXZhdGFySWQ9MTAxMTEiPgogICAgCiAgICAKCgoKCgoKPG1ldGEgbmFtZT0iYWpzLWNh
+bi1zZWFyY2gtdXNlcnMiIGNvbnRlbnQ9InRydWUiPgo8bWV0YSBuYW1lPSJhanMtY2FuLWVkaXQt
+d2F0Y2hlcnMiIGNvbnRlbnQ9InRydWUiPgo8bWV0YSBuYW1lPSJhanMtZGVmYXVsdC1hdmF0YXIt
+dXJsIiBjb250ZW50PSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvdXNlcmF2
+YXRhcj9zaXplPXhzbWFsbCZhbXA7YXZhdGFySWQ9MTAxMjMiPgo8bWV0YSBuYW1lPSJhanMtaXNz
+dWUta2V5IiBjb250ZW50PSJPUi0yMzQ5Ij4KPG1ldGEgbmFtZT0iYWpzLXNlcnZlci12aWV3LWlz
+c3VlLWlzLWVkaXRhYmxlIiBjb250ZW50PSJ0cnVlIj4KCjx0aXRsZT5bT1ItMjM0OV0gRG9ja2Vy
+LWNvbXBvc2UgZG9lc24ndCBhY3RpdmF0ZSBhdHRhY2htZW50cyBhbmQgZHdsZC91cGxkIHVybCBh
+cmUgd3JvbmdseSBwb3B1bGF0ZWQgLSBPcGVuUGFhcy1MaW5hZ29yYTwvdGl0bGU+CjxsaW5rIHJl
+bD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBo
+cmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9vc2QuanNwIiB0aXRsZT0iW09SLTIz
+NDldIERvY2tlci1jb21wb3NlIGRvZXNuJ3QgYWN0aXZhdGUgYXR0YWNobWVudHMgYW5kIGR3bGQv
+dXBsZCB1cmwgYXJlIHdyb25nbHkgcG9wdWxhdGVkIC0gT3BlblBhYXMtTGluYWdvcmEiPgoKCjxz
+dHlsZT5AbWVkaWEgcHJpbnQgeyNVTklRVUVfSUQtZ2hvc3Rlcnkge2Rpc3BsYXk6bm9uZSAhaW1w
+b3J0YW50fX08L3N0eWxlPjwvaGVhZD4KCgoKCgo8Ym9keSBkYXRhLWF1aS12ZXJzaW9uPSI1Ljcu
+MjciIGlkPSJqaXJhIiBjbGFzcz0iYXVpLWxheW91dCBhdWktdGhlbWUtZGVmYXVsdCBrYSBhamF4
+LWlzc3VlLXNlYXJjaC1hbmQtdmlldyBwYWdlLXR5cGUtbmF2aWdhdG9yIG5hdmlnYXRvci1pc3N1
+ZS1vbmx5IiBkYXRhLXZlcnNpb249IjYuNC41Ij4KPGRpdiBpZD0icGFnZSI+CiAgICA8aGVhZGVy
+IGlkPSJoZWFkZXIiIHJvbGU9ImJhbm5lciI+CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAg
+ICAgICAgCiAgICAgICAgCiAgICAKCgoKCgo8c2NyaXB0PgogICAgQUpTLiQoZnVuY3Rpb24gKCkg
+ewogICAgICAgIHZhciBsaWNlbnNlQmFubmVyID0gcmVxdWlyZSgiamlyYS9saWNlbnNlLWJhbm5l
+ciIpOwogICAgICAgIGxpY2Vuc2VCYW5uZXIuc2hvd0xpY2Vuc2VCYW5uZXIoIiIpOwogICAgICAg
+IGxpY2Vuc2VCYW5uZXIuc2hvd0xpY2Vuc2VGbGFnKCIiKTsKICAgIH0pOwo8L3NjcmlwdD4KCgoK
+CgoKCiAgICAgICAgCgoKCiAgICAgICAgCgoKCjxmaWVsZHNldCBjbGFzcz0icGFyYW1ldGVycyBo
+aWRkZW4gZG9udC1kZWZhdWx0LWZvY3VzIj4KICAgIDxpbnB1dCB0aXRsZT0idHpkZXRlY3QucHJl
+Zi50emlkIiB2YWx1ZT0iRXVyb3BlL1BhcmlzIiB0eXBlPSJoaWRkZW4iPgogICAgPGlucHV0IHRp
+dGxlPSJ0emRldGVjdC5wcmVmLnR6bmFtZSIgdmFsdWU9IihHTVQrMDE6MDApIFBhcmlzIiB0eXBl
+PSJoaWRkZW4iPgogICAgPGlucHV0IHRpdGxlPSJ0emRldGVjdC5wcmVmLmphbk9mZnNldCIgdmFs
+dWU9IjM2MDAwMDAiIHR5cGU9ImhpZGRlbiI+CiAgICA8aW5wdXQgdGl0bGU9InR6ZGV0ZWN0LnBy
+ZWYuanVseU9mZnNldCIgdmFsdWU9IjcyMDAwMDAiIHR5cGU9ImhpZGRlbiI+CjwvZmllbGRzZXQ+
+CjxuYXYgZGF0YS1hdWktcmVzcG9uc2l2ZT0idHJ1ZSIgY2xhc3M9ImF1aS1oZWFkZXIgYXVpLWRy
+b3Bkb3duMi10cmlnZ2VyLWdyb3VwIiByb2xlPSJuYXZpZ2F0aW9uIj48ZGl2IGNsYXNzPSJhdWkt
+aGVhZGVyLWlubmVyIj48ZGl2IGNsYXNzPSJhdWktaGVhZGVyLWJlZm9yZSI+PGEgY2xhc3M9IiBh
+dWktZHJvcGRvd24yLXRyaWdnZXIgYXBwLXN3aXRjaGVyLXRyaWdnZXIgX19za2F0ZSIgYXJpYS1v
+d25zPSJhcHAtc3dpdGNoZXIiIGFyaWEtY29udHJvbHM9ImFwcC1zd2l0Y2hlciIgYXJpYS1oYXNw
+b3B1cD0idHJ1ZSIgZGF0YS1hdWktdHJpZ2dlcj0iIiBocmVmPSIjYXBwLXN3aXRjaGVyIj48c3Bh
+biBjbGFzcz0iYXVpLWljb24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWFwcHN3aXRjaGVy
+Ij5MaW5rZWQgQXBwbGljYXRpb25zPC9zcGFuPjwvYT48ZGl2IGlkPSJhcHAtc3dpdGNoZXIiIGNs
+YXNzPSJhdWktZHJvcGRvd24yIGF1aS1zdHlsZS1kZWZhdWx0Ij48ZGl2IGNsYXNzPSJhdWktZHJv
+cGRvd24yLXNlY3Rpb24iPjx1bCBjbGFzcz0ibmF2LWxpbmtzIj48bGkgY2xhc3M9Im5hdi1saW5r
+IG5hdi1saW5rLWxvY2FsIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS8i
+IGNsYXNzPSJhdWktZHJvcGRvd24yLXJhZGlvIGF1aS1kcm9wZG93bjItY2hlY2tlZCIgdGl0bGU9
+Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhLyI+PHNwYW4gY2xhc3M9Im5hdi1saW5rLWxh
+YmVsIj5PcGVuUGFhcy1MaW5hZ29yYTwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9Im5hdi1saW5r
+Ij48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvc3Rhc2gvIiBjbGFzcz0iYXVpLWRy
+b3Bkb3duMi1yYWRpbyAiIHRpdGxlPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvc3Rhc2gvIj48
+c3BhbiBjbGFzcz0ibmF2LWxpbmstbGFiZWwiPlN0YXNoIC0gT3BlblBhYXM8L3NwYW4+PC9hPjwv
+bGk+PGxpIGNsYXNzPSJuYXYtbGluayI+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3Jn
+L2plbmtpbnMvIiBjbGFzcz0iYXVpLWRyb3Bkb3duMi1yYWRpbyAiIHRpdGxlPSJodHRwczovL2Np
+Lm9wZW4tcGFhcy5vcmcvamVua2lucy8iPjxzcGFuIGNsYXNzPSJuYXYtbGluay1sYWJlbCI+SmVu
+a2lucyAtIE9wZW5QYWFzPC9zcGFuPjwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iYXVp
+LWRyb3Bkb3duMi1zZWN0aW9uIj48dWwgY2xhc3M9Im5hdi1saW5rcyI+PGxpPjxhIGNsYXNzPSJu
+YXYtbGluay1lZGl0LXdyYXBwZXIiIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJh
+L3BsdWdpbnMvc2VydmxldC9jdXN0b21pemUtYXBwbGljYXRpb24tbmF2aWdhdG9yIj48c3BhbiBj
+bGFzcz0ibmF2LWxpbmstZWRpdCI+Q29uZmlndXJl4oCmPC9zcGFuPjwvYT48L2xpPjwvdWw+PC9k
+aXY+PC9kaXY+PHNjcmlwdD4KICAgICAgICAgICAgKGZ1bmN0aW9uIChOTCkgewogICAgICAgICAg
+ICAgICAgdmFyIGluaXRpYWxpc2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAg
+Ly8gRm9yIHNvbWUgbWlsZXN0b25lcyBvZiBBVUksIHRoZSBhdGxhc3NpYW4gc295IG5hbWVzcGFj
+ZSB3YXMgcmVuYW1lZCB0byBhdWkuIEhhbmRsZSB0aGF0IGhlcmUgYnkgZW5zdXJpbmcgdGhhdCB3
+aW5kb3cuYXRsYXNzaWFuIGlzIGRlZmluZWQuCiAgICAgICAgICAgICAgICAgICAgd2luZG93LmF0
+bGFzc2lhbiA9IHdpbmRvdy5hdGxhc3NpYW4gfHwgd2luZG93LmF1aTsKICAgICAgICAgICAgICAg
+ICAgICBuZXcgTkwuQXBwU3dpdGNoZXIoewogICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93
+bkNvbnRlbnRzOiAnI2FwcC1zd2l0Y2hlcicKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg
+ICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoTkwuQXBwU3dpdGNoZXIpIHsKICAgICAg
+ICAgICAgICAgICAgICBpbml0aWFsaXNlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
+ICAgICAgICAgICAgICAgIE5MLm9uSW5pdCA9IGluaXRpYWxpc2U7CiAgICAgICAgICAgICAgICB9
+CiAgICAgICAgICAgIH0od2luZG93Lk5MID0gKHdpbmRvdy5OTCB8fCB7fSkpKTsKICAgICAgICAg
+ICAgd2luZG93Lk5MLmVudmlyb25tZW50ID0ge2lzVXNlckFkbWluOiB0cnVlLCBpc0FwcFN1Z2dl
+c3Rpb25BdmFpbGFibGU6IGZhbHNlfTs8L3NjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPSJhdWktaGVh
+ZGVyLXByaW1hcnkiPjxoMSBpZD0ibG9nbyIgY2xhc3M9ImF1aS1oZWFkZXItbG9nbyBhdWktaGVh
+ZGVyLWxvZ28tY3VzdG9tIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9z
+ZWN1cmUvTXlKaXJhSG9tZS5qc3BhIj48aW1nIGRhdGEtYXVpLXJlc3BvbnNpdmUtaGVhZGVyLWlu
+ZGV4PSIwIiBzcmM9InRlc3RfZmlsZXMvaWNvbi1qaXJhLWxvZ28ucG5nIiBhbHQ9Ik9wZW5QYWFz
+LUxpbmFnb3JhIj48L2E+PC9oMT48dWwgc3R5bGU9IndpZHRoOiBhdXRvOyIgY2xhc3M9ImF1aS1u
+YXYgX19za2F0ZSI+CgoKCgo8bGk+PGEgY2xhc3M9ImF1aS1uYXYtbGluayBhdWktZHJvcGRvd24y
+LWFqYXggamlyYS1hamF4LW1lbnUgYXVpLWRyb3Bkb3duMi10cmlnZ2VyICIgaHJlZj0iaHR0cHM6
+Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL0Rhc2hib2FyZC5qc3BhIiBpZD0iaG9tZV9s
+aW5rIiBhY2Nlc3NrZXk9ImQiIHRpdGxlPSJWaWV3IGFuZCBtYW5hZ2UgeW91ciBkYXNoYm9hcmRz
+IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLW93bnM9ImhvbWVfbGluay1jb250ZW50Ij5EYXNo
+Ym9hcmRzPC9hPjxkaXYgaWQ9ImhvbWVfbGluay1jb250ZW50IiBjbGFzcz0iYXVpLWRyb3Bkb3du
+MiBhdWktc3R5bGUtZGVmYXVsdCIgZGF0YS1hdWktZHJvcGRvd24yLWFqYXgta2V5PSJob21lX2xp
+bmsiPjwvZGl2PjwvbGk+PGxpPjxhIGNsYXNzPSJhdWktbmF2LWxpbmsgYXVpLWRyb3Bkb3duMi1h
+amF4IGppcmEtYWpheC1tZW51IGF1aS1kcm9wZG93bjItdHJpZ2dlciAiIGhyZWY9Imh0dHBzOi8v
+Y2kub3Blbi1wYWFzLm9yZy9qaXJhL2Jyb3dzZS9PUiIgaWQ9ImJyb3dzZV9saW5rIiBhY2Nlc3Nr
+ZXk9InAiIHRpdGxlPSJWaWV3IHJlY2VudCBwcm9qZWN0cyBhbmQgYnJvd3NlIGEgbGlzdCBvZiBw
+cm9qZWN0cyIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1vd25zPSJicm93c2VfbGluay1jb250
+ZW50Ij5Qcm9qZWN0czwvYT48ZGl2IGlkPSJicm93c2VfbGluay1jb250ZW50IiBjbGFzcz0iYXVp
+LWRyb3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCIgZGF0YS1hdWktZHJvcGRvd24yLWFqYXgta2V5
+PSJicm93c2VfbGluayI+PC9kaXY+PC9saT48bGk+PGEgY2xhc3M9ImF1aS1uYXYtbGluayBhdWkt
+ZHJvcGRvd24yLWFqYXggamlyYS1hamF4LW1lbnUgYXVpLWRyb3Bkb3duMi10cmlnZ2VyICIgaHJl
+Zj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvaXNzdWVzLyIgaWQ9ImZpbmRfbGluayIg
+YWNjZXNza2V5PSJpIiB0aXRsZT0iU2VhcmNoIGZvciBpc3N1ZXMgYW5kIHZpZXcgcmVjZW50IGlz
+c3VlcyIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1vd25zPSJmaW5kX2xpbmstY29udGVudCI+
+SXNzdWVzPC9hPjxkaXYgaWQ9ImZpbmRfbGluay1jb250ZW50IiBjbGFzcz0iYXVpLWRyb3Bkb3du
+MiBhdWktc3R5bGUtZGVmYXVsdCIgZGF0YS1hdWktZHJvcGRvd24yLWFqYXgta2V5PSJmaW5kX2xp
+bmsiPjwvZGl2PjwvbGk+PGxpPjxhIGNsYXNzPSJhdWktbmF2LWxpbmsgYXVpLWRyb3Bkb3duMi1h
+amF4IGppcmEtYWpheC1tZW51IGF1aS1kcm9wZG93bjItdHJpZ2dlciAiIGhyZWY9Imh0dHBzOi8v
+Y2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9HcmVlbkhvcHBlci5qc3BhIiBpZD0iZ3JlZW5o
+b3BwZXJfbWVudSIgdGl0bGU9Ik1hbmFnZSB5b3VyIHByb2plY3Qgd2l0aCBKSVJBIEFnaWxlIiBh
+cmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLW93bnM9ImdyZWVuaG9wcGVyX21lbnUtY29udGVudCI+
+QWdpbGU8L2E+PGRpdiBpZD0iZ3JlZW5ob3BwZXJfbWVudS1jb250ZW50IiBjbGFzcz0iYXVpLWRy
+b3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCIgZGF0YS1hdWktZHJvcGRvd24yLWFqYXgta2V5PSJn
+cmVlbmhvcHBlcl9tZW51Ij48L2Rpdj48L2xpPgo8bGkgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48
+YSBpZD0iYXVpLXJlc3BvbnNpdmUtaGVhZGVyLWRyb3Bkb3duLXRyaWdnZXItMCIgY2xhc3M9IiBh
+dWktZHJvcGRvd24yLXRyaWdnZXIgX19za2F0ZSIgYXJpYS1vd25zPSJhdWktcmVzcG9uc2l2ZS1o
+ZWFkZXItZHJvcGRvd24tY29udGVudC0wIiBhcmlhLWNvbnRyb2xzPSJhdWktcmVzcG9uc2l2ZS1o
+ZWFkZXItZHJvcGRvd24tY29udGVudC0wIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBkYXRhLWF1aS10
+cmlnZ2VyPSIiIGhyZWY9IiMiPk1vcmU8c3BhbiBjbGFzcz0iaWNvbiBhdWktaWNvbi1kcm9wZG93
+biI+PC9zcGFuPjwvYT48ZGl2IGlkPSJhdWktcmVzcG9uc2l2ZS1oZWFkZXItZHJvcGRvd24tY29u
+dGVudC0wIiBjbGFzcz0iYXVpLWRyb3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCI+PGRpdiBjbGFz
+cz0iYXVpLWRyb3Bkb3duMi1zZWN0aW9uIj48dWwgaWQ9ImF1aS1yZXNwb25zaXZlLWhlYWRlci1k
+cm9wZG93bi1saXN0LTAiPjwvdWw+PC9kaXY+PC9kaXY+PC9saT48bGkgaWQ9ImNyZWF0ZS1tZW51
+Ij48YSBpZD0iY3JlYXRlX2xpbmsiIGNsYXNzPSJhdWktYnV0dG9uIGF1aS1idXR0b24tcHJpbWFy
+eSBhdWktc3R5bGUgY3JlYXRlLWlzc3VlICIgdGl0bGU9IkNyZWF0ZSBhIG5ldyBpc3N1ZSAvIGJ1
+ZyAvIGZlYXR1cmUgcmVxdWVzdCAvIGV0YyAoIFR5cGUgJ2MnICkiIGhyZWY9Imh0dHBzOi8vY2ku
+b3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9DcmVhdGVJc3N1ZSUyMWRlZmF1bHQuanNwYSIgYWNj
+ZXNza2V5PSJjIj5DcmVhdGU8L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImF1aS1oZWFk
+ZXItc2Vjb25kYXJ5Ij48dWwgY2xhc3M9ImF1aS1uYXYgX19za2F0ZSI+PGxpPgogICAgPGZvcm0g
+YWN0aW9uPSIvamlyYS9zZWN1cmUvUXVpY2tTZWFyY2guanNwYSIgbWV0aG9kPSJnZXQiIGlkPSJx
+dWlja3NlYXJjaCIgY2xhc3M9ImF1aS1xdWlja3NlYXJjaCBkb250LWRlZmF1bHQtZm9jdXMgYWpz
+LWRpcnR5LXdhcm5pbmctZXhlbXB0Ij4KICAgICAgICA8aW5wdXQgaWQ9InF1aWNrU2VhcmNoSW5w
+dXQiIGNsYXNzPSJzZWFyY2giIHRpdGxlPSJTZWFyY2ggKCBUeXBlICcvJyApIiBwbGFjZWhvbGRl
+cj0iU2VhcmNoIiBuYW1lPSJzZWFyY2hTdHJpbmciIGFjY2Vzc2tleT0icSIgdHlwZT0idGV4dCI+
+CiAgICAgICAgPGlucHV0IGNsYXNzPSJoaWRkZW4iIHZhbHVlPSJTZWFyY2giIHR5cGU9InN1Ym1p
+dCI+CiAgICA8L2Zvcm0+CjwvbGk+CgoKCiAgICA8bGkgaWQ9InN5c3RlbS1oZWxwLW1lbnUiPgog
+ICAgICAgIDxhIGNsYXNzPSJhdWktbmF2LWxpbmsgYXVpLWRyb3Bkb3duMi10cmlnZ2VyIiBpZD0i
+aGVscF9tZW51IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLW93bnM9InN5c3RlbS1oZWxwLW1l
+bnUtY29udGVudCIgaHJlZj0iaHR0cHM6Ly9kb2NzLmF0bGFzc2lhbi5jb20vamlyYS9kb2NzLTA2
+NC9KSVJBK0RvY3VtZW50YXRpb24iIHRhcmdldD0iJHRleHRVdGlscy5odG1sRW5jb2RlKCRyb290
+SGVscE1lbnVJdGVtLnBhcmFtcy50YXJnZXQpIiB0aXRsZT0iSGVscCI+PHNwYW4gY2xhc3M9ImF1
+aS1pY29uIGF1aS1pY29uLXNtYWxsIGF1aS1pY29uZm9udC1oZWxwIj5IZWxwPC9zcGFuPjwvYT4K
+ICAgICAgICA8ZGl2IGlkPSJzeXN0ZW0taGVscC1tZW51LWNvbnRlbnQiIGNsYXNzPSJhdWktZHJv
+cGRvd24yIGF1aS1zdHlsZS1kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
+aXYgY2xhc3M9ImF1aS1kcm9wZG93bjItc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9ImppcmEtaGVs
+cCIgY2xhc3M9ImF1aS1saXN0LXRydW5jYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICA8YSBpZD0idmlld19oZWxwIiBjbGFzcz0iIiB0aXRsZT0iR290byB0
+aGUgb25saW5lIGRvY3VtZW50YXRpb24gZm9yIEpJUkEiIGhyZWY9Imh0dHBzOi8vZG9jcy5hdGxh
+c3NpYW4uY29tL2ppcmEvZG9jcy0wNjQvSklSQStEb2N1bWVudGF0aW9uIiB0YXJnZXQ9Il9ibGFu
+ayI+T25saW5lIEhlbHA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4K
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iZ2hfdmll
+d19oZWxwIiBjbGFzcz0iIiB0aXRsZT0iR2V0IGhlbHAgb25saW5lIGZvciBKSVJBIEFnaWxlIiBo
+cmVmPSJodHRwOi8vZG9jcy5hdGxhc3NpYW4uY29tL2FnaWxlL2RvY3MtMDY3L0pJUkErQWdpbGUr
+RG9jdW1lbnRhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiPkpJUkEgQWdpbGUgSGVscDwvYT4KICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgIDxhIGlkPSJrZXlzaG9ydHNjdXRoZWxwIiBjbGFzcz0iIiB0aXRs
+ZT0iR2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgSklSQSdzIEtleWJvYXJkIFNob3J0Y3V0cyAo
+IFR5cGUgJz8nICkiIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9W
+aWV3S2V5Ym9hcmRTaG9ydGN1dHMlMjFkZWZhdWx0LmpzcGEiIHRhcmdldD0iX2JsYW5rIj5LZXli
+b2FyZCBTaG9ydGN1dHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4K
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0idmlld19h
+Ym91dCIgY2xhc3M9IiIgdGl0bGU9IkdldCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEpJUkEiIGhy
+ZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9BYm91dFBhZ2UuanNwYSI+
+QWJvdXQgSklSQTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
+bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJ2aWV3X2NyZWRp
+dHMiIGNsYXNzPSIiIHRpdGxlPSJTZWUgd2hvIGRpZCB3aGF0IiBocmVmPSJodHRwczovL2NpLm9w
+ZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvSmlyYUNyZWRpdHNQYWdlJTIxZGVmYXVsdC5qc3BhIiB0
+YXJnZXQ9Il9ibGFuayI+SklSQSBDcmVkaXRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
+ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvbGk+CgoKPGxpIGlkPSJzeXN0ZW0tYWRt
+aW4tbWVudSI+CiAgICA8YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1
+cmUvcHJvamVjdC9WaWV3UHJvamVjdHMuanNwYSIgaWQ9ImFkbWluX21lbnUiIGNsYXNzPSJhdWkt
+bmF2LWxpbmsgYXVpLWRyb3Bkb3duMi10cmlnZ2VyIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlh
+LW93bnM9InN5c3RlbS1hZG1pbi1tZW51LWNvbnRlbnQiIHRpdGxlPSJBZG1pbmlzdHJhdGlvbiI+
+PHNwYW4gY2xhc3M9ImF1aS1pY29uIGF1aS1pY29uLXNtYWxsIGF1aS1pY29uZm9udC1jb25maWd1
+cmUiPkFkbWluaXN0cmF0aW9uPC9zcGFuPjwvYT4KICAgIDxkaXYgaWQ9InN5c3RlbS1hZG1pbi1t
+ZW51LWNvbnRlbnQiIGNsYXNzPSJhdWktZHJvcGRvd24yIGF1aS1zdHlsZS1kZWZhdWx0Ij4KICAg
+ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdWktZHJvcGRvd24yLXNlY3Rpb24iPgogICAg
+ICAgICAgICAgICAgPHN0cm9uZz5KSVJBIGFkbWluaXN0cmF0aW9uPC9zdHJvbmc+CiAgICAgICAg
+ICAgICAgICA8dWwgY2xhc3M9ImF1aS1saXN0LXRydW5jYXRlIj4KICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICA8YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvcHJvamVjdC9W
+aWV3UHJvamVjdHMuanNwYSIgY2xhc3M9ImF1aS1uYXYtbGluayIgaWQ9ImFkbWluX3Byb2plY3Rf
+bWVudSI+UHJvamVjdHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJl
+L2FkbWluL1ZpZXdJc3N1ZVR5cGVzLmpzcGEiIGNsYXNzPSJhdWktbmF2LWxpbmsiIGlkPSJhZG1p
+bl9pc3N1ZXNfbWVudSI+SXNzdWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgog
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJh
+L3NlY3VyZS9hZG1pbi91c2VyL1VzZXJCcm93c2VyLmpzcGEiIGNsYXNzPSJhdWktbmF2LWxpbmsi
+IGlkPSJhZG1pbl91c2Vyc19tZW51Ij5Vc2VyIG1hbmFnZW1lbnQ8L2E+CiAgICAgICAgICAgICAg
+ICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jaS5v
+cGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL2FkbWluL1ZpZXdBcHBsaWNhdGlvblByb3BlcnRpZXMu
+anNwYSIgY2xhc3M9ImF1aS1uYXYtbGluayIgaWQ9ImFkbWluX3N5c3RlbV9tZW51Ij5TeXN0ZW08
+L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEg
+aHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvcGx1Z2lucy9zZXJ2bGV0L3VwbS9t
+YXJrZXRwbGFjZSIgY2xhc3M9ImF1aS1uYXYtbGluayIgaWQ9ImFkbWluX3BsdWdpbnNfbWVudSI+
+QWRkLW9uczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg
+IDwvZGl2Pgo8L2xpPgoKCgoKCgoKCjxsaSBpZD0idXNlci1vcHRpb25zIj4KICAgICAgICAgICAg
+PGEgaWQ9ImhlYWRlci1kZXRhaWxzLXVzZXItZnVsbG5hbWUiIGNsYXNzPSJhdWktZHJvcGRvd24y
+LXRyaWdnZXIiIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtb3ducz0idXNlci1vcHRpb25zLWNv
+bnRlbnQiIGRhdGEtdXNlcm5hbWU9InNjb2xzb24iIGRhdGEtZGlzcGxheW5hbWU9IlN0ZXBoYW5l
+IENPTFNPTiIgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL1ZpZXdQ
+cm9maWxlLmpzcGEiIHRpdGxlPSJVc2VyIHByb2ZpbGUgZm9yIFN0ZXBoYW5lIENPTFNPTiI+CiAg
+ICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdWktYXZhdGFyIGF1aS1hdmF0YXItc21hbGwiPgogICAg
+ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImF1aS1hdmF0YXItaW5uZXIiPgogICAgICAgICAgICAg
+ICAgICAgIDxpbWcgc3JjPSJ0ZXN0X2ZpbGVzL3VzZXJhdmF0YXIucG5nIiBhbHQ9IlVzZXIgcHJv
+ZmlsZSBmb3IgU3RlcGhhbmUgQ09MU09OIj4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAg
+ICAgICAgPC9zcGFuPgogICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVzZXIt
+b3B0aW9ucy1jb250ZW50IiBjbGFzcz0iYXVpLWRyb3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCI+
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdWktZHJvcGRvd24yLXNl
+Y3Rpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgPHVsIGlkPSJwZXJzb25hbCIgY2xhc3M9ImF1aS1saXN0LXRydW5jYXRl
+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9InZpZXdfcHJvZmlsZSIgY2xhc3M9
+IiIgdGl0bGU9IlZpZXcgYW5kIGNoYW5nZSB5b3VyIGRldGFpbHMgYW5kIHByZWZlcmVuY2VzIiBo
+cmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvVmlld1Byb2ZpbGUuanNw
+YSI+UHJvZmlsZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4K
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICA8YSBpZD0idXBtLXJlcXVlc3RzLWxpbmsiIGNsYXNzPSIiIGhyZWY9Imh0dHBzOi8vY2kub3Bl
+bi1wYWFzLm9yZy9qaXJhL3BsdWdpbnMvc2VydmxldC91cG0vcmVxdWVzdHM/c291cmNlPWhlYWRl
+cl91c2VyIj5BdGxhc3NpYW4gTWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgPGRpdiBjbGFzcz0iYXVpLWRyb3Bkb3duMi1zZWN0aW9uIj4KICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk15IEpJUkEgSG9tZTwvc3Ry
+b25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgPHVsIGlkPSJzZXRfbXlfamlyYV9ob21lIiBjbGFzcz0iYXVpLWxpc3QtdHJ1
+bmNhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgPGEgaWQ9InNldF9teV9qaXJhX2hvbWVfZGVmYXVsdCIgY2xhc3M9ImF1
+aS1kcm9wZG93bjItcmFkaW8gaW50ZXJhY3RpdmUgY2hlY2tlZCAgICAiIHRpdGxlPSJTZXQgbXkg
+SklSQSBIb21lIHRvIHRoZSBEYXNoYm9hcmQuIiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5v
+cmcvamlyYS9zZWN1cmUvVXBkYXRlTXlKaXJhSG9tZS5qc3BhP3RhcmdldD1jb20uYXRsYXNzaWFu
+LmppcmEuamlyYS1teS1ob21lLXBsdWdpbiUzQXNldF9teV9qaXJhX2hvbWVfZGFzaGJvYXJkJmFt
+cDthdGxfdG9rZW49QkUyRi03OVBMLUg4UVMtMlNUQiU3Qzk5YmY4NWIzNWZkYTRjYjE4ZWU2OTMx
+NGVlZjVhMTM5MmJlMGEzZDMlN0NsaW4iPkRhc2hib2FyZDwvYT4KICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgPGEgaWQ9ImdyZWVuaG9wcGVyLW15LWppcmEtaG9tZS1zZXQiIGNsYXNzPSJhdWktZHJv
+cGRvd24yLXJhZGlvIGludGVyYWN0aXZlICAgICIgdGl0bGU9IlNldCBteSBKSVJBIEhvbWUgdG8g
+QWdpbGUuIiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvVXBkYXRl
+TXlKaXJhSG9tZS5qc3BhP3RhcmdldD1jb20ucHl4aXMuZ3JlZW5ob3BwZXIuamlyYSUzQWdyZWVu
+aG9wcGVyLW15LWppcmEtaG9tZS1zZXQtNTEmYW1wO2F0bF90b2tlbj1CRTJGLTc5UEwtSDhRUy0y
+U1RCJTdDOTliZjg1YjM1ZmRhNGNiMThlZTY5MzE0ZWVmNWExMzkyYmUwYTNkMyU3Q2xpbiI+QWdp
+bGU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJzZXRfbXlfamlyYV9ob21lX2lz
+c3VlbmF2IiBjbGFzcz0iYXVpLWRyb3Bkb3duMi1yYWRpbyBpbnRlcmFjdGl2ZSAgICAiIHRpdGxl
+PSJTZXQgbXkgSklSQSBIb21lIHRvIHRoZSBJc3N1ZSBOYXZpZ2F0b3IuIiBocmVmPSJodHRwczov
+L2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvVXBkYXRlTXlKaXJhSG9tZS5qc3BhP3Rhcmdl
+dD1jb20uYXRsYXNzaWFuLmppcmEuamlyYS1teS1ob21lLXBsdWdpbiUzQXNldF9teV9qaXJhX2hv
+bWVfaXNzdWUmYW1wO2F0bF90b2tlbj1CRTJGLTc5UEwtSDhRUy0yU1RCJTdDOTliZjg1YjM1ZmRh
+NGNiMThlZTY5MzE0ZWVmNWExMzkyYmUwYTNkMyU3Q2xpbiI+SXNzdWUgTmF2aWdhdG9yPC9hPgog
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
+dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1aS1kcm9wZG93bjIt
+c2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICA8dWwgaWQ9InN5c3RlbSIgY2xhc3M9ImF1aS1saXN0LXRydW5jYXRl
+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InByb2plY3QtY2VudHJpYy1u
+YXYtdXNlci1vcHRpb24gZGlzYWJsZS1wcm9qZWN0LWNlbnRyaWMtbmF2IiBocmVmPSJodHRwczov
+L2NpLm9wZW4tcGFhcy5vcmcvamlyYSI+RGlzYWJsZSBuZXcgcHJvamVjdCBuYXZpZ2F0aW9uPC9h
+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+IDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJsb2df
+b3V0IiBjbGFzcz0iIiB0aXRsZT0iTG9nIG91dCBhbmQgY2FuY2VsIGFueSBhdXRvbWF0aWMgbG9n
+aW4uIiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9sb2dvdXQ/YXRsX3Rva2Vu
+PUJFMkYtNzlQTC1IOFFTLTJTVEIlN0M5OWJmODViMzVmZGE0Y2IxOGVlNjkzMTRlZWY1YTEzOTJi
+ZTBhM2QzJTdDbGluIj5Mb2cgT3V0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K
+ICAgIDwvbGk+CjwvdWw+PC9kaXY+PC9kaXY+PCEtLSAuYXVpLWhlYWRlci1pbm5lci0tPjwvbmF2
+PjwhLS0gLmF1aS1oZWFkZXIgLS0+CiAgICA8L2hlYWRlcj4KICAgIAoKCgogICAgPHNlY3Rpb24g
+aWQ9ImNvbnRlbnQiIHJvbGU9Im1haW4iPgoKICAgIAoKICAgIDxkaXYgY2xhc3M9Imlzc3VlLWNv
+bnRhaW5lciAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJp
+c3N1ZS1jb250ZW50IiBjbGFzcz0iaXNzdWUtZWRpdC1mb3JtIj4KICAgICAgICAgICAgICAgICAg
+ICA8aGVhZGVyIHN0eWxlPSIiIGlkPSJzdGFsa2VyIiBjbGFzcz0iaXNzdWUtaGVhZGVyIGpzLXN0
+YWxrZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpc3N1ZS1oZWFkZXIt
+Y29udGVudCI+PGhlYWRlciBjbGFzcz0iYXVpLXBhZ2UtaGVhZGVyIj48ZGl2IGNsYXNzPSJhdWkt
+cGFnZS1oZWFkZXItaW5uZXIiPjxkaXYgY2xhc3M9ImF1aS1wYWdlLWhlYWRlci1pbWFnZSI+PHNw
+YW4gaWQ9IjEwMTAwIiBjbGFzcz0iYXVpLWF2YXRhciBhdWktYXZhdGFyLWxhcmdlIGF1aS1hdmF0
+YXItcHJvamVjdCBqaXJhLXN5c3RlbS1hdmF0YXIiPjxzcGFuIGNsYXNzPSJhdWktYXZhdGFyLWlu
+bmVyIj48aW1nIGlkPSJwcm9qZWN0LWF2YXRhciIgYWx0PSJVcGxvYWRlZCBpbWFnZSBmb3IgcHJv
+amVjdDogJ09wZW5QYWFTIFJTRSciIHNyYz0idGVzdF9maWxlcy9wcm9qZWN0YXZhdGFyLnBuZyI+
+PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIC5hdWktcGFnZS1oZWFkZXItaW1hZ2UgLS0+PGRpdiBj
+bGFzcz0iYXVpLXBhZ2UtaGVhZGVyLW1haW4iPjxvbCBjbGFzcz0iYXVpLW5hdiBhdWktbmF2LWJy
+ZWFkY3J1bWJzIF9fc2thdGUiPjxsaT48YSBpZD0icHJvamVjdC1uYW1lLXZhbCIgaHJlZj0iaHR0
+cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvYnJvd3NlL09SIj5PcGVuUGFhUyBSU0U8L2E+PC9s
+aT48bGk+PGEgY2xhc3M9Imlzc3VlLWxpbmsiIGRhdGEtaXNzdWUta2V5PSJPUi0yMzQ5IiBocmVm
+PSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9icm93c2UvT1ItMjM0OSIgaWQ9ImtleS12
+YWwiIHJlbD0iMTY2MjYiPk9SLTIzNDk8L2E+PC9saT48L29sPjxoMSB0aXRsZT0iQ2xpY2sgdG8g
+ZWRpdCIgY2xhc3M9ImVkaXRhYmxlLWZpZWxkIGluYWN0aXZlIiBpZD0ic3VtbWFyeS12YWwiPkRv
+Y2tlci1jb21wb3NlIGRvZXNuJ3QgYWN0aXZhdGUgYXR0YWNobWVudHMgYW5kIGR3bGQvdXBsZCB1
+cmwgYXJlIHdyb25nbHkgcG9wdWxhdGVkPHNwYW4gY2xhc3M9Im92ZXJsYXktaWNvbiBhdWktaWNv
+biBhdWktaWNvbi1zbWFsbCBhdWktaWNvbmZvbnQtZWRpdCI+PC9zcGFuPjwvaDE+PC9kaXY+PCEt
+LSAuYXVpLXBhZ2UtaGVhZGVyLW1haW4gLS0+PGRpdiBjbGFzcz0iYXVpLXBhZ2UtaGVhZGVyLWFj
+dGlvbnMiPjxkaXYgaWQ9Imlzc3VlLWhlYWRlci1wYWdlciI+PC9kaXY+PC9kaXY+PCEtLSAuYXVp
+LXBhZ2UtaGVhZGVyLWFjdGlvbnMgLS0+PC9kaXY+PCEtLSAuYXVpLXBhZ2UtaGVhZGVyLWlubmVy
+IC0tPjwvaGVhZGVyPjwhLS0gLmF1aS1wYWdlLWhlYWRlciAtLT48ZGl2IGNsYXNzPSJjb21tYW5k
+LWJhciI+PGRpdiBjbGFzcz0ib3BzLWNvbnQiPjxkaXYgY2xhc3M9Im9wcy1tZW51cyBhdWktdG9v
+bGJhciI+PGRpdiBjbGFzcz0idG9vbGJhci1zcGxpdCB0b29sYmFyLXNwbGl0LWxlZnQiPjx1bCBp
+ZD0ib3BzYmFyLWVkaXQtaXNzdWVfY29udGFpbmVyIiBjbGFzcz0idG9vbGJhci1ncm91cCBwbHVn
+Z2FibGUtb3BzIj48bGkgY2xhc3M9InRvb2xiYXItaXRlbSI+PGEgaWQ9ImVkaXQtaXNzdWUiIHRp
+dGxlPSIgKCBUeXBlICdlJyApIiBjbGFzcz0idG9vbGJhci10cmlnZ2VyIGlzc3VlYWN0aW9uLWVk
+aXQtaXNzdWUiIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9FZGl0
+SXNzdWUlMjFkZWZhdWx0LmpzcGE/aWQ9MTY2MjYiPjxzcGFuIGNsYXNzPSJpY29uIGF1aS1pY29u
+IGF1aS1pY29uLXNtYWxsIGF1aS1pY29uZm9udC1lZGl0Ij48L3NwYW4+IDxzcGFuIGNsYXNzPSJ0
+cmlnZ2VyLWxhYmVsIj5FZGl0PC9zcGFuPjwvYT48L2xpPjwvdWw+PHVsIGlkPSJvcHNiYXItY29t
+bWVudC1pc3N1ZV9jb250YWluZXIiIGNsYXNzPSJ0b29sYmFyLWdyb3VwIHBsdWdnYWJsZS1vcHMi
+PjxsaSBjbGFzcz0idG9vbGJhci1pdGVtIj48YSBpZD0iY29tbWVudC1pc3N1ZSIgdGl0bGU9IkNv
+bW1lbnQgb24gdGhpcyBpc3N1ZSIgY2xhc3M9InRvb2xiYXItdHJpZ2dlciBpc3N1ZWFjdGlvbi1j
+b21tZW50LWlzc3VlIGFkZC1pc3N1ZS1jb21tZW50IGlubGluZS1jb21tZW50IiBocmVmPSJodHRw
+czovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvQWRkQ29tbWVudCUyMWRlZmF1bHQuanNw
+YT9pZD0xNjYyNiI+PHNwYW4gY2xhc3M9Imljb24gYXVpLWljb24gYXVpLWljb24tc21hbGwgYXVp
+LWljb25mb250LWNvbW1lbnQgaWNvbi1jb21tZW50Ij48L3NwYW4+IDxzcGFuIGNsYXNzPSJ0cmln
+Z2VyLWxhYmVsIj5Db21tZW50PC9zcGFuPjwvYT48L2xpPjwvdWw+PHVsIGlkPSJvcHNiYXItb3Bz
+YmFyLW9wZXJhdGlvbnMiIGNsYXNzPSJ0b29sYmFyLWdyb3VwIHBsdWdnYWJsZS1vcHMiPjxsaSBj
+bGFzcz0idG9vbGJhci1pdGVtIj48YSBpZD0iYXNzaWduLWlzc3VlIiB0aXRsZT0iICggVHlwZSAn
+YScgKSIgY2xhc3M9InRvb2xiYXItdHJpZ2dlciBpc3N1ZWFjdGlvbi1hc3NpZ24taXNzdWUiIGhy
+ZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9Bc3NpZ25Jc3N1ZSUyMWRl
+ZmF1bHQuanNwYT9pZD0xNjYyNiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPkFzc2lnbjwv
+c3Bhbj48L2E+PC9saT48bGkgY2xhc3M9InRvb2xiYXItaXRlbSB0b29sYmFyLWRyb3Bkb3duIj48
+ZGl2PjxhIGhyZWY9IiMiIGlkPSJvcHNiYXItb3BlcmF0aW9uc19tb3JlIiBkYXRhLWhpZGUtb24t
+c2Nyb2xsPSIuc3BsaXQtdmlldyAuaXNzdWUtY29udGFpbmVyIiBkYXRhLWNvbnRhaW4tdG8td2lu
+ZG93PSJ0cnVlIiBjbGFzcz0idG9vbGJhci10cmlnZ2VyICBqcy1kZWZhdWx0LWRyb3Bkb3duIj48
+c3BhbiBjbGFzcz0iZHJvcGRvd24tdGV4dCI+TW9yZTwvc3Bhbj48c3BhbiBjbGFzcz0iaWNvbiBk
+cm9wLW1lbnUiPjwvc3Bhbj48L2E+PGRpdiBjbGFzcz0iYXVpLWxpc3QgaGlkZGVuIj48dWwgY2xh
+c3M9ImF1aS1saXN0LXNlY3Rpb24gYXVpLWZpcnN0Ij48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0i
+PjxhIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9HSEdvVG9Cb2Fy
+ZC5qc3BhP2lzc3VlSWQ9MTY2MjYiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsgaXNzdWVhY3Rp
+b24tZ3JlZW5ob3BwZXItcmFwaWRib2FyZC1vcGVyYXRpb24ganMtcmFwaWRib2FyZC1vcGVyYXRp
+b24taXNzdWUiIHRpdGxlPSJWaWV3IHRoaXMgaXNzdWUgb24gYW4gQWdpbGUgYm9hcmQiIGlkPSJn
+cmVlbmhvcHBlci1yYXBpZGJvYXJkLW9wZXJhdGlvbiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFi
+ZWwiPkFnaWxlIEJvYXJkPC9zcGFuPjwvYT48L2xpPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+
+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL1JhbmtUb3AuanNw
+YT9pc3N1ZUlkPTE2NjI2IiBjbGFzcz0iYXVpLWxpc3QtaXRlbS1saW5rIGlzc3VlYWN0aW9uLWdy
+ZWVuaG9wcGVyLXJhbmstdG9wLW9wZXJhdGlvbiIgaWQ9ImdyZWVuaG9wcGVyLXJhbmstdG9wLW9w
+ZXJhdGlvbiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPlJhbmsgdG8gVG9wPC9zcGFuPjwv
+YT48L2xpPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVu
+LXBhYXMub3JnL2ppcmEvc2VjdXJlL1JhbmtCb3R0b20uanNwYT9pc3N1ZUlkPTE2NjI2IiBjbGFz
+cz0iYXVpLWxpc3QtaXRlbS1saW5rIGlzc3VlYWN0aW9uLWdyZWVuaG9wcGVyLXJhbmstYm90dG9t
+LW9wZXJhdGlvbiIgaWQ9ImdyZWVuaG9wcGVyLXJhbmstYm90dG9tLW9wZXJhdGlvbiI+PHNwYW4g
+Y2xhc3M9InRyaWdnZXItbGFiZWwiPlJhbmsgdG8gQm90dG9tPC9zcGFuPjwvYT48L2xpPjwvdWw+
+PHVsIGNsYXNzPSJhdWktbGlzdC1zZWN0aW9uIj48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0iPjxh
+IGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9DcmVhdGVXb3JrbG9n
+JTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2IiBjbGFzcz0iYXVpLWxpc3QtaXRlbS1saW5rIGlzc3Vl
+YWN0aW9uLWxvZy13b3JrIiB0aXRsZT0iTG9nIHdvcmsgYWdhaW5zdCB0aGlzIGlzc3VlIiBpZD0i
+bG9nLXdvcmsiPjxzcGFuIGNsYXNzPSJ0cmlnZ2VyLWxhYmVsIj5Mb2cgV29yazwvc3Bhbj48L2E+
+PC9saT48L3VsPjx1bCBjbGFzcz0iYXVpLWxpc3Qtc2VjdGlvbiI+PGxpIGNsYXNzPSJhdWktbGlz
+dC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvQXR0
+YWNoRmlsZSUyMWRlZmF1bHQuanNwYT9pZD0xNjYyNiIgY2xhc3M9ImF1aS1saXN0LWl0ZW0tbGlu
+ayBpc3N1ZWFjdGlvbi1hdHRhY2gtZmlsZSIgdGl0bGU9IkF0dGFjaCBvbmUgb3IgbW9yZSBmaWxl
+cyB0byB0aGlzIGlzc3VlIiBpZD0iYXR0YWNoLWZpbGUiPjxzcGFuIGNsYXNzPSJ0cmlnZ2VyLWxh
+YmVsIj5BdHRhY2ggRmlsZXM8L3NwYW4+PC9hPjwvbGk+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVt
+Ij48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvU2hvd0F0dGFj
+aFNjcmVlbnNob3RGb3JtQWN0aW9uJTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2IiBjbGFzcz0iYXVp
+LWxpc3QtaXRlbS1saW5rIGlzc3VlYWN0aW9uLWF0dGFjaC1zY3JlZW5zaG90LWh0bWw1IiBpZD0i
+YXR0YWNoLXNjcmVlbnNob3QtaHRtbDUiPjxzcGFuIGNsYXNzPSJ0cmlnZ2VyLWxhYmVsIj5BdHRh
+Y2ggU2NyZWVuc2hvdDwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0iPjxh
+IGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9lZGl0RHJhd2lvRGlh
+Z3JhbS5qc3BhP2lzc3VlS2V5PU9SLTIzNDkiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsiIGlk
+PSJjb20ubXhncmFwaC5qaXJhLnBsdWdpbnMuZHJhd2lvOmRyYXdpby1hZGQtbWVudS1pdGVtIj48
+c3BhbiBjbGFzcz0idHJpZ2dlci1sYWJlbCI+QWRkIERyYXdpbyBEaWFncmFtPC9zcGFuPjwvYT48
+L2xpPjwvdWw+PHVsIGNsYXNzPSJhdWktbGlzdC1zZWN0aW9uIj48bGkgY2xhc3M9ImF1aS1saXN0
+LWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9WaWV3
+Vm90ZXJzJTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2IiBjbGFzcz0iYXVpLWxpc3QtaXRlbS1saW5r
+IGlzc3VlYWN0aW9uLXZpZXctdm90ZXJzIiB0aXRsZT0iVmlldyB2b3RlcnMgZm9yIHRoaXMgaXNz
+dWUiIGlkPSJ2aWV3LXZvdGVycyI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPlZvdGVyczwv
+c3Bhbj48L2E+PC9saT48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8v
+Y2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9Wb3RlT3JXYXRjaElzc3VlLmpzcGE/YXRsX3Rv
+a2VuPUJFMkYtNzlQTC1IOFFTLTJTVEIlN0M5OWJmODViMzVmZGE0Y2IxOGVlNjkzMTRlZWY1YTEz
+OTJiZTBhM2QzJTdDbGluJmFtcDtpZD0xNjYyNiZhbXA7d2F0Y2g9dW53YXRjaCIgY2xhc3M9ImF1
+aS1saXN0LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi11bndhdGNoLWlzc3VlIiB0aXRsZT0iU3RvcCB3
+YXRjaGluZyB0aGlzIGlzc3VlIiBpZD0idG9nZ2xlLXdhdGNoLWlzc3VlIj48c3BhbiBjbGFzcz0i
+dHJpZ2dlci1sYWJlbCI+U3RvcCBXYXRjaGluZzwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9ImF1
+aS1saXN0LWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3Vy
+ZS9NYW5hZ2VXYXRjaGVycyUyMWRlZmF1bHQuanNwYT9pZD0xNjYyNiIgY2xhc3M9ImF1aS1saXN0
+LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi1tYW5hZ2Utd2F0Y2hlcnMiIHRpdGxlPSJNYW5hZ2UgdGhl
+IHdhdGNoZXJzIG9mIHRoaXMgaXNzdWUiIGlkPSJtYW5hZ2Utd2F0Y2hlcnMiPjxzcGFuIGNsYXNz
+PSJ0cmlnZ2VyLWxhYmVsIj5XYXRjaGVyczwvc3Bhbj48L2E+PC9saT48L3VsPjx1bCBjbGFzcz0i
+YXVpLWxpc3Qtc2VjdGlvbiI+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRw
+czovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvQ3JlYXRlU3ViVGFza0lzc3VlJTIxZGVm
+YXVsdC5qc3BhP3BhcmVudElzc3VlSWQ9MTY2MjYiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsg
+aXNzdWVhY3Rpb24tY3JlYXRlLXN1YnRhc2siIHRpdGxlPSJDcmVhdGUgc3ViLXRhc2sgZm9yIHRo
+aXMgaXNzdWUiIGlkPSJjcmVhdGUtc3VidGFzayI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwi
+PkNyZWF0ZSBTdWItVGFzazwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0i
+PjxhIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3NlY3VyZS9Db252ZXJ0SXNz
+dWUuanNwYT9pZD0xNjYyNiIgY2xhc3M9ImF1aS1saXN0LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi1p
+c3N1ZS10by1zdWJ0YXNrIiB0aXRsZT0iQ29udmVydCB0aGlzIGlzc3VlIHRvIHN1Yi10YXNrIiBp
+ZD0iaXNzdWUtdG8tc3VidGFzayI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPkNvbnZlcnQg
+dG8gU3ViLVRhc2s8L3NwYW4+PC9hPjwvbGk+PC91bD48dWwgY2xhc3M9ImF1aS1saXN0LXNlY3Rp
+b24iPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+PGEgaHJlZj0iI2RldnN0YXR1cy5jdGEuY3Jl
+YXRlYnJhbmNoIiBjbGFzcz0iYXVpLWxpc3QtaXRlbS1saW5rIGRldnN0YXR1cy1jdGEtbGluayIg
+aWQ9ImN0YS1jcmVhdGUtYnJhbmNoIj48c3BhbiBjbGFzcz0idHJpZ2dlci1sYWJlbCI+Q3JlYXRl
+IGJyYW5jaDwvc3Bhbj48L2E+PC9saT48L3VsPjx1bCBjbGFzcz0iYXVpLWxpc3Qtc2VjdGlvbiI+
+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5v
+cmcvamlyYS9zZWN1cmUvTW92ZUlzc3VlJTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2IiBjbGFzcz0i
+YXVpLWxpc3QtaXRlbS1saW5rIGlzc3VlYWN0aW9uLW1vdmUtaXNzdWUiIHRpdGxlPSJNb3ZlIHRo
+aXMgaXNzdWUgdG8gYW5vdGhlciBwcm9qZWN0IG9yIGlzc3VlIHR5cGUuIiBpZD0ibW92ZS1pc3N1
+ZSI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPk1vdmU8L3NwYW4+PC9hPjwvbGk+PGxpIGNs
+YXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamly
+YS9zZWN1cmUvTGlua0ppcmFJc3N1ZSUyMWRlZmF1bHQuanNwYT9pZD0xNjYyNiIgY2xhc3M9ImF1
+aS1saXN0LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi1saW5rLWlzc3VlIiB0aXRsZT0iTGluayB0aGlz
+IGlzc3VlIHRvIGFub3RoZXIgaXNzdWUgb3IgaXRlbSIgaWQ9ImxpbmstaXNzdWUiPjxzcGFuIGNs
+YXNzPSJ0cmlnZ2VyLWxhYmVsIj5MaW5rPC9zcGFuPjwvYT48L2xpPjxsaSBjbGFzcz0iYXVpLWxp
+c3QtaXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL0Ns
+b25lSXNzdWVEZXRhaWxzJTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2IiBjbGFzcz0iYXVpLWxpc3Qt
+aXRlbS1saW5rIGlzc3VlYWN0aW9uLWNsb25lLWlzc3VlIiB0aXRsZT0iQ2xvbmUgdGhpcyBpc3N1
+ZSIgaWQ9ImNsb25lLWlzc3VlIj48c3BhbiBjbGFzcz0idHJpZ2dlci1sYWJlbCI+Q2xvbmU8L3Nw
+YW4+PC9hPjwvbGk+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2Np
+Lm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvRWRpdExhYmVscyUyMWRlZmF1bHQuanNwYT9pZD0x
+NjYyNiIgY2xhc3M9ImF1aS1saXN0LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi1lZGl0LWxhYmVscyIg
+dGl0bGU9IiAoIFR5cGUgJ2wnICkiIGlkPSJlZGl0LWxhYmVscyI+PHNwYW4gY2xhc3M9InRyaWdn
+ZXItbGFiZWwiPkxhYmVsczwvc3Bhbj48L2E+PC9saT48L3VsPjx1bCBjbGFzcz0iYXVpLWxpc3Qt
+c2VjdGlvbiBhdWktbGFzdCI+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRw
+czovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvRGVsZXRlSXNzdWUlMjFkZWZhdWx0Lmpz
+cGE/aWQ9MTY2MjYiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsgaXNzdWVhY3Rpb24tZGVsZXRl
+LWlzc3VlIiB0aXRsZT0iRGVsZXRlIHRoaXMgaXNzdWUiIGlkPSJkZWxldGUtaXNzdWUiPjxzcGFu
+IGNsYXNzPSJ0cmlnZ2VyLWxhYmVsIj5EZWxldGU8L3NwYW4+PC9hPjwvbGk+PC91bD48L2Rpdj48
+L2Rpdj48L2xpPjwvdWw+PHVsIGlkPSJvcHNiYXItb3BzYmFyLXRyYW5zaXRpb25zIiBjbGFzcz0i
+dG9vbGJhci1ncm91cCBwbHVnZ2FibGUtb3BzIj48bGkgY2xhc3M9InRvb2xiYXItaXRlbSI+PGEg
+aWQ9ImFjdGlvbl9pZF8zMDEiIGNsYXNzPSJ0b29sYmFyLXRyaWdnZXIgaXNzdWVhY3Rpb24td29y
+a2Zsb3ctdHJhbnNpdGlvbiIgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2Vj
+dXJlL1dvcmtmbG93VUlEaXNwYXRjaGVyLmpzcGE/aWQ9MTY2MjYmYW1wO2FjdGlvbj0zMDEmYW1w
+O2F0bF90b2tlbj1CRTJGLTc5UEwtSDhRUy0yU1RCJTdDOTliZjg1YjM1ZmRhNGNiMThlZTY5MzE0
+ZWVmNWExMzkyYmUwYTNkMyU3Q2xpbiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPlN0b3Ag
+UHJvZ3Jlc3M8L3NwYW4+PC9hPjwvbGk+PGxpIGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxhIGlkPSJh
+Y3Rpb25faWRfNSIgY2xhc3M9InRvb2xiYXItdHJpZ2dlciBpc3N1ZWFjdGlvbi13b3JrZmxvdy10
+cmFuc2l0aW9uIiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvV29y
+a2Zsb3dVSURpc3BhdGNoZXIuanNwYT9pZD0xNjYyNiZhbXA7YWN0aW9uPTUmYW1wO2F0bF90b2tl
+bj1CRTJGLTc5UEwtSDhRUy0yU1RCJTdDOTliZjg1YjM1ZmRhNGNiMThlZTY5MzE0ZWVmNWExMzky
+YmUwYTNkMyU3Q2xpbiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPlJlc29sdmUgSXNzdWU8
+L3NwYW4+PC9hPjwvbGk+PGxpIGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxhIGlkPSJhY3Rpb25faWRf
+MiIgY2xhc3M9InRvb2xiYXItdHJpZ2dlciBpc3N1ZWFjdGlvbi13b3JrZmxvdy10cmFuc2l0aW9u
+IiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9zZWN1cmUvV29ya2Zsb3dVSURp
+c3BhdGNoZXIuanNwYT9pZD0xNjYyNiZhbXA7YWN0aW9uPTImYW1wO2F0bF90b2tlbj1CRTJGLTc5
+UEwtSDhRUy0yU1RCJTdDOTliZjg1YjM1ZmRhNGNiMThlZTY5MzE0ZWVmNWExMzkyYmUwYTNkMyU3
+Q2xpbiI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPkNsb3NlIElzc3VlPC9zcGFuPjwvYT48
+L2xpPjwvdWw+PHVsIGlkPSJvcHNiYXItb3BzYmFyLWFkbWluIiBjbGFzcz0idG9vbGJhci1ncm91
+cCBwbHVnZ2FibGUtb3BzIj48bGkgY2xhc3M9InRvb2xiYXItaXRlbSB0b29sYmFyLWRyb3Bkb3du
+Ij48ZGl2PjxhIGhyZWY9IiMiIGlkPSJvcHNiYXItYWRtaW5fbW9yZSIgZGF0YS1oaWRlLW9uLXNj
+cm9sbD0iLnNwbGl0LXZpZXcgLmlzc3VlLWNvbnRhaW5lciIgZGF0YS1jb250YWluLXRvLXdpbmRv
+dz0idHJ1ZSIgY2xhc3M9InRvb2xiYXItdHJpZ2dlciAganMtZGVmYXVsdC1kcm9wZG93biI+PHNw
+YW4gY2xhc3M9ImRyb3Bkb3duLXRleHQiPkFkbWluPC9zcGFuPjxzcGFuIGNsYXNzPSJpY29uIGRy
+b3AtbWVudSI+PC9zcGFuPjwvYT48ZGl2IGNsYXNzPSJhdWktbGlzdCBoaWRkZW4iPjx1bCBjbGFz
+cz0iYXVpLWxpc3Qtc2VjdGlvbiBhdWktZmlyc3QiPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+
+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2VjdXJlL2FkbWluL1ZpZXdD
+dXN0b21GaWVsZHMuanNwYSIgY2xhc3M9ImF1aS1saXN0LWl0ZW0tbGluayBpc3N1ZWFjdGlvbi1m
+aWVsZHMtYWRkIiB0aXRsZT0iQWRkIGEgZmllbGQgYW5kIHRvIHRoZSBjdXJyZW50IGlzc3VlJ3Mg
+c2NyZWVucy4iIGlkPSJjb20uYXRsYXNzaWFuLmppcmEuamlyYS1wcm9qZWN0LWNvbmZpZy1wbHVn
+aW46YWRkLWN1c3RvbS1maWVsZCI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPkFkZCBmaWVs
+ZDwvc3Bhbj48L2E+PC9saT48L3VsPjx1bCBjbGFzcz0iYXVpLWxpc3Qtc2VjdGlvbiBhdWktbGFz
+dCI+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFh
+cy5vcmcvamlyYS9ub3RpbXBvcnRhbnQiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsgd2hlcmVp
+c215Y2YtdHJpZ2dlciIgdGl0bGU9IldoZXJlIGlzIG15IGZpZWxkPyIgaWQ9ImppcmEtb3BlcmF0
+aW9ucy13aGVyZWlzbXljZi10cmlnZ2VyIj48c3BhbiBjbGFzcz0idHJpZ2dlci1sYWJlbCI+V2hl
+cmUgaXMgbXkgZmllbGQ/PC9zcGFuPjwvYT48L2xpPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+
+PGEgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvbm90aW1wb3J0YW50IiBjbGFz
+cz0iYXVpLWxpc3QtaXRlbS1saW5rIHBlcm1pc3Npb25oZWxwZXItdHJpZ2dlciIgdGl0bGU9IkRp
+c2NvdmVyIHdoeSBhIHVzZXIgZG9lcyBvciBkb2VzIG5vdCBoYXZlIGNlcnRhaW4gcGVybWlzc2lv
+bnMiIGlkPSJqaXJhLW9wZXJhdGlvbnMtcGVybWlzc2lvbmhlbHBlci10cmlnZ2VyIj48c3BhbiBj
+bGFzcz0idHJpZ2dlci1sYWJlbCI+UGVybWlzc2lvbiBIZWxwZXI8L3NwYW4+PC9hPjwvbGk+PGxp
+IGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcv
+amlyYS9ub3RpbXBvcnRhbnQiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsgbm90aWZpY2F0aW9u
+aGVscGVyLXRyaWdnZXIiIHRpdGxlPSJGaW5kIG91dCB3aHkgdXNlcnMgcmVjZWl2ZSwgb3IgZG8g
+bm90IHJlY2VpdmUgbm90aWZpY2F0aW9ucyBmb3IgdGhpcyBpc3N1ZSIgaWQ9ImppcmEtb3BlcmF0
+aW9ucy1ub3RpZmljYXRpb25oZWxwZXItdHJpZ2dlciI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFi
+ZWwiPk5vdGlmaWNhdGlvbiBIZWxwZXI8L3NwYW4+PC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48
+L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0idG9vbGJhci1zcGxpdCB0b29sYmFyLXNwbGl0LXJp
+Z2h0Ij48dWwgaWQ9Im9wc2Jhci1qaXJhLmlzc3VlLnRvb2xzIiBjbGFzcz0idG9vbGJhci1ncm91
+cCBwbHVnZ2FibGUtb3BzIj48bGkgY2xhc3M9InRvb2xiYXItaXRlbSI+PGEgb3JpZ2luYWwtdGl0
+bGU9IlNoYXJlIHRoaXMgaXNzdWUgYnkgZW1haWxpbmcgb3RoZXIgdXNlcnMiIGlkPSJqaXJhLXNo
+YXJlLXRyaWdnZXIiIGNsYXNzPSJ0b29sYmFyLXRyaWdnZXIgdmlld2lzc3VlLXNoYXJlIiBocmVm
+PSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYSI+PHNwYW4gY2xhc3M9Imljb24gYXVpLWlj
+b24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250LXNoYXJlIj48L3NwYW4+IDxzcGFuIGNsYXNz
+PSJ0cmlnZ2VyLWxhYmVsIj48L3NwYW4+PC9hPjwvbGk+PGxpIGNsYXNzPSJ0b29sYmFyLWl0ZW0g
+dG9vbGJhci1kcm9wZG93biI+PGRpdj48YSBvcmlnaW5hbC10aXRsZT0iRXhwb3J0IHRoaXMgaXNz
+dWUgaW4gYW5vdGhlciBmb3JtYXQiIGhyZWY9IiMiIGlkPSJ2aWV3aXNzdWUtZXhwb3J0IiBkYXRh
+LWhpZGUtb24tc2Nyb2xsPSIuc3BsaXQtdmlldyAuaXNzdWUtY29udGFpbmVyIiBkYXRhLWNvbnRh
+aW4tdG8td2luZG93PSJ0cnVlIiBjbGFzcz0idG9vbGJhci10cmlnZ2VyICBqcy1kZWZhdWx0LWRy
+b3Bkb3duIj48c3BhbiBjbGFzcz0iaWNvbiBpY29uLWRlZmF1bHQgYXVpLWljb24gYXVpLWljb24t
+c21hbGwgYXVpLWljb25mb250LWV4cG9ydCI+PC9zcGFuPiA8c3BhbiBjbGFzcz0iZHJvcGRvd24t
+dGV4dCI+RXhwb3J0PC9zcGFuPjxzcGFuIGNsYXNzPSJpY29uIGRyb3AtbWVudSI+PC9zcGFuPjwv
+YT48ZGl2IGNsYXNzPSJhdWktbGlzdCBoaWRkZW4iPjx1bCBjbGFzcz0iYXVpLWxpc3Qtc2VjdGlv
+biBhdWktZmlyc3QgYXVpLWxhc3QiPjxsaSBjbGFzcz0iYXVpLWxpc3QtaXRlbSI+PGEgaHJlZj0i
+aHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvc2kvamlyYS5pc3N1ZXZpZXdzOmlzc3VlLXht
+bC9PUi0yMzQ5L09SLTIzNDkueG1sIiBjbGFzcz0iYXVpLWxpc3QtaXRlbS1saW5rIiBpZD0iamly
+YS5pc3N1ZXZpZXdzOmlzc3VlLXhtbCI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPlhNTDwv
+c3Bhbj48L2E+PC9saT48bGkgY2xhc3M9ImF1aS1saXN0LWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8v
+Y2kub3Blbi1wYWFzLm9yZy9qaXJhL3NpL2ppcmEuaXNzdWV2aWV3czppc3N1ZS13b3JkL09SLTIz
+NDkvT1ItMjM0OS5kb2MiIGNsYXNzPSJhdWktbGlzdC1pdGVtLWxpbmsiIGlkPSJqaXJhLmlzc3Vl
+dmlld3M6aXNzdWUtd29yZCI+PHNwYW4gY2xhc3M9InRyaWdnZXItbGFiZWwiPldvcmQ8L3NwYW4+
+PC9hPjwvbGk+PGxpIGNsYXNzPSJhdWktbGlzdC1pdGVtIj48YSBocmVmPSJodHRwczovL2NpLm9w
+ZW4tcGFhcy5vcmcvamlyYS9zaS9qaXJhLmlzc3Vldmlld3M6aXNzdWUtaHRtbC9PUi0yMzQ5L09S
+LTIzNDkuaHRtbCIgY2xhc3M9ImF1aS1saXN0LWl0ZW0tbGluayIgaWQ9ImppcmEuaXNzdWV2aWV3
+czppc3N1ZS1odG1sIj48c3BhbiBjbGFzcz0idHJpZ2dlci1sYWJlbCI+UHJpbnRhYmxlPC9zcGFu
+PjwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvZGl2Pjwv
+ZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPgogICAgICAgICAgICAgICAg
+ICAgIDxkaXYgY2xhc3M9Imlzc3VlLWJvZHktY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAg
+ICAgIDxkaXYgY2xhc3M9ImF1aS1ncm91cCBpc3N1ZS1ib2R5Ij48ZGl2IGNsYXNzPSJhdWktaXRl
+bSBpc3N1ZS1tYWluLWNvbHVtbiI+PGRpdiBpZD0iZGV0YWlscy1tb2R1bGUiIGNsYXNzPSJtb2R1
+bGUgdG9nZ2xlLXdyYXAiPjxkaXYgaWQ9ImRldGFpbHMtbW9kdWxlX2hlYWRpbmciIGNsYXNzPSJt
+b2QtaGVhZGVyIj48dWwgY2xhc3M9Im9wcyI+PC91bD48aDIgY2xhc3M9InRvZ2dsZS10aXRsZSI+
+RGV0YWlsczwvaDI+PC9kaXY+PGRpdiBjbGFzcz0ibW9kLWNvbnRlbnQiPgoKCgoKPHVsIGlkPSJp
+c3N1ZWRldGFpbHMiIGNsYXNzPSJwcm9wZXJ0eS1saXN0IHR3by1jb2xzIj4KICAgIDxsaSBjbGFz
+cz0iaXRlbSI+CiAgICAgICAgPGRpdiBjbGFzcz0id3JhcCI+CiAgICAgICAgICAgIDxzdHJvbmcg
+Y2xhc3M9Im5hbWUiPlR5cGU6PC9zdHJvbmc+CiAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJDbGlj
+ayB0byBlZGl0IiBpZD0idHlwZS12YWwiIGNsYXNzPSJ2YWx1ZSBlZGl0YWJsZS1maWVsZCBpbmFj
+dGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9IiIgc3JjPSJ0
+ZXN0X2ZpbGVzL2J1Zy5wbmciIHRpdGxlPSJCdWcgLSBBIHByb2JsZW0gd2hpY2ggaW1wYWlycyBv
+ciBwcmV2ZW50cyB0aGUgZnVuY3Rpb25zIG9mIHRoZSBwcm9kdWN0LiIgaGVpZ2h0PSIxNiIgd2lk
+dGg9IjE2Ij4gQnVnCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvdmVybGF5LWljb24gYXVpLWlj
+b24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWVkaXQiPjwvc3Bhbj48L3NwYW4+CiAgICAg
+ICAgPC9kaXY+CiAgICA8L2xpPgogICAgPGxpIGNsYXNzPSJpdGVtIGl0ZW0tcmlnaHQiPgogICAg
+ICAgIDxkaXYgY2xhc3M9IndyYXAiPgogICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJuYW1lIj5T
+dGF0dXM6PC9zdHJvbmc+CiAgICAgICAgICAgIDxzcGFuIGlkPSJzdGF0dXMtdmFsIiBjbGFzcz0i
+dmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIG9yaWdpbmFsLXRp
+dGxlPSIiIGNsYXNzPSIgamlyYS1pc3N1ZS1zdGF0dXMtbG96ZW5nZSBhdWktbG96ZW5nZSBqaXJh
+LWlzc3VlLXN0YXR1cy1sb3plbmdlLXllbGxvdyBqaXJhLWlzc3VlLXN0YXR1cy1sb3plbmdlLWlu
+ZGV0ZXJtaW5hdGUgamlyYS1pc3N1ZS1zdGF0dXMtbG96ZW5nZS1tYXgtd2lkdGgtbWVkaXVtIiBk
+YXRhLXRvb2x0aXA9IiZsdDtzcGFuIGNsYXNzPSZxdW90O2ppcmEtaXNzdWUtc3RhdHVzLXRvb2x0
+aXAtdGl0bGUmcXVvdDsmZ3Q7UHJvZ3Jlc3NpbmcmbHQ7L3NwYW4mZ3Q7Jmx0O2JyJmd0OyZsdDtz
+cGFuIGNsYXNzPSZxdW90O2ppcmEtaXNzdWUtc3RhdHVzLXRvb2x0aXAtZGVzYyZxdW90OyZndDtU
+aGlzIGlzc3VlIGlzIGJlaW5nIGFjdGl2ZWx5IHdvcmtlZCBvbiBhdCB0aGUgbW9tZW50IGJ5IHRo
+ZSBhc3NpZ25lZS4mbHQ7L3NwYW4mZ3Q7Ij5Qcm9ncmVzc2luZzwvc3Bhbj4gICAgICAgICAgICA8
+L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLXZp
+ZXciPig8YSBjbGFzcz0iaXNzdWVhY3Rpb24tdmlld3dvcmtmbG93IG5ldy13b3JrZmxvdy1kZXNp
+Z25lciIgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvYnJvd3NlL09SLTIzNDk/
+d29ya2Zsb3dOYW1lPWppcmEmYW1wO3N0ZXBJZD0zIj5WaWV3IFdvcmtmbG93PC9hPik8L3NwYW4+
+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xh
+c3M9Iml0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgICAgICAgICAgICAg
+IDxzdHJvbmcgY2xhc3M9Im5hbWUiPlByaW9yaXR5Ojwvc3Ryb25nPgogICAgICAgICAgICAgICAg
+PHNwYW4gdGl0bGU9IkNsaWNrIHRvIGVkaXQiIGlkPSJwcmlvcml0eS12YWwiIGNsYXNzPSJ2YWx1
+ZSBlZGl0YWJsZS1maWVsZCBpbmFjdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICA8aW1nIGFsdD0iIiBzcmM9InRlc3RfZmlsZXMvbWFqb3IucG5nIiB0aXRsZT0i
+TWFqb3IgLSBNYWpvciBsb3NzIG9mIGZ1bmN0aW9uLiIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2Ij4g
+TWFqb3IKICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvdmVybGF5LWljb24gYXVpLWljb24g
+YXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWVkaXQiPjwvc3Bhbj48L3NwYW4+CiAgICAgICAg
+ICAgIDwvZGl2PgogICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+PGxpIGNsYXNzPSJpdGVtIGl0ZW0tcmlnaHQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFw
+Ij4KICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9Im5hbWUiPlJlc29sdXRpb246PC9zdHJv
+bmc+CiAgICAgICAgICAgICAgICA8c3BhbiBpZD0icmVzb2x1dGlvbi12YWwiIGNsYXNzPSJ2YWx1
+ZSB1bnJlc29sdmVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5yZXNv
+bHZlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAg
+PC9kaXY+CiAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iaXRlbSI+CiAg
+ICAgICAgICAgIDxkaXYgY2xhc3M9IndyYXAiPgogICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFz
+cz0ibmFtZSI+QWZmZWN0cyBWZXJzaW9uL3M6PC9zdHJvbmc+CiAgICAgICAgICAgICAgICA8c3Bh
+biB0aXRsZT0iQ2xpY2sgdG8gZWRpdCIgaWQ9InZlcnNpb25zLXZhbCIgY2xhc3M9InZhbHVlIGVk
+aXRhYmxlLWZpZWxkIGluYWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
+IGNsYXNzPSJvdmVybGF5LWljb24gYXVpLWljb24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250
+LWVkaXQiPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvbGk+CiAg
+ICAgICAgICAgICAgICA8bGkgY2xhc3M9Iml0ZW0gaXRlbS1yaWdodCI+CiAgICAgICAgICAgIDxk
+aXYgY2xhc3M9IndyYXAiPgogICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz0ibmFtZSI+Rml4
+IFZlcnNpb24vczo8L3N0cm9uZz4KICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJDbGljayB0
+byBlZGl0IiBpZD0iZml4Zm9yLXZhbCIgY2xhc3M9InZhbHVlIGVkaXRhYmxlLWZpZWxkIGluYWN0
+aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lCiAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvdmVybGF5LWlj
+b24gYXVpLWljb24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWVkaXQiPjwvc3Bhbj48L3Nw
+YW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkg
+Y2xhc3M9Iml0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgICAgICAgICAg
+ICAgIDxzdHJvbmcgY2xhc3M9Im5hbWUiPkNvbXBvbmVudC9zOjwvc3Ryb25nPgogICAgICAgICAg
+ICAgICAgPHNwYW4gdGl0bGU9IkNsaWNrIHRvIGVkaXQiIGlkPSJjb21wb25lbnRzLXZhbCIgY2xh
+c3M9InZhbHVlIGVkaXRhYmxlLWZpZWxkIGluYWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgIDxzcGFuIGNsYXNzPSJvdmVybGF5LWljb24gYXVpLWljb24gYXVpLWljb24tc21hbGwg
+YXVpLWljb25mb250LWVkaXQiPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAg
+ICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJpdGVtIGZ1bGwtd2lkdGgi
+PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwIiBpZD0id3JhcC1sYWJlbHMiPgogICAgICAg
+ICAgICAgICAgPHN0cm9uZyBjbGFzcz0ibmFtZSI+TGFiZWxzOjwvc3Ryb25nPgogICAgICAgICAg
+ICAgICAgICAgIDxkaXYgdGl0bGU9IkNsaWNrIHRvIGVkaXQiIGNsYXNzPSJsYWJlbHMtd3JhcCB2
+YWx1ZSBlZGl0YWJsZS1maWVsZCBpbmFjdGl2ZSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJs
+YWJlbHMiIGlkPSJsYWJlbHMtMTY2MjYtdmFsdWUiPk5vbmU8L3NwYW4+CiAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IkZvbGxvdyBsaW5rIiBjbGFzcz0iYXVpLWljb24g
+YXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWVkaXQgZWRpdC1sYWJlbHMiIGlkPSJlZGl0LWxh
+YmVscy0xNjYyNi1sYWJlbHMiIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL3Nl
+Y3VyZS9FZGl0TGFiZWxzJTIxZGVmYXVsdC5qc3BhP2lkPTE2NjI2JmFtcDtub0xpbms9ZmFsc2Ui
+PjxzcGFuPkxhYmVsczwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ib3Zl
+cmxheS1pY29uIGF1aS1pY29uIGF1aS1pY29uLXNtYWxsIGF1aS1pY29uZm9udC1lZGl0Ij48L3Nw
+YW4+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4K
+CjxkaXYgaWQ9ImN1c3RvbWZpZWxkbW9kdWxlIj4KICAgIDxkaXYgcm9sZT0iYXBwbGljYXRpb24i
+IGNsYXNzPSJhdWktdGFicyBob3Jpem9udGFsLXRhYnMiIGlkPSJjdXN0b21maWVsZC10YWJzIj4K
+ICAgICAgICAgICAgICAgICAgICA8ZGl2IGFyaWEtaGlkZGVuPSJmYWxzZSIgcm9sZT0idGFicGFu
+ZWwiIGlkPSJjdXN0b21maWVsZC1wYW5lbC0xIiBjbGFzcz0idGFicy1wYW5lIGFjdGl2ZS1wYW5l
+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcm9wZXJ0eS1saXN0Ij4KICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJyb3dG
+b3JjdXN0b21maWVsZF8xMDAwNCIgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAg
+ICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcg
+dGl0bGU9IlJhbmsgKE9ic29sZXRlKSIgY2xhc3M9Im5hbWUiPlJhbmsgKE9ic29sZXRlKTo8L3N0
+cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN1c3RvbWZpZWxkXzEw
+MDA0LXZhbCIgY2xhc3M9InZhbHVlIHR5cGUtZ2gtZ2xvYmFsLXJhbmsiIGRhdGEtZmllbGR0eXBl
+PSJnaC1nbG9iYWwtcmFuayIgZGF0YS1maWVsZHR5cGVjb21wbGV0ZWtleT0iY29tLnB5eGlzLmdy
+ZWVuaG9wcGVyLmppcmE6Z2gtZ2xvYmFsLXJhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgIDkyMjMzNzIwMzY4NTQ3NzU4MDcKICAKICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg
+ICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJyb3dGb3JjdXN0b21maWVsZF8xMDIwMSIgY2xh
+c3M9Iml0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgdGl0bGU9IkFjY2VwdGFuY2UgQ3JpdGVy
+aWEiIGNsYXNzPSJuYW1lIj5BY2NlcHRhbmNlIENyaXRlcmlhOjwvc3Ryb25nPgogICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iQ2xpY2sgdG8gZWRpdCIgaWQ9ImN1c3RvbWZp
+ZWxkXzEwMjAxLXZhbCIgY2xhc3M9InZhbHVlIHR5cGUtY2hlY2tsaXN0IGVkaXRhYmxlLWZpZWxk
+IGluYWN0aXZlIiBkYXRhLWZpZWxkdHlwZT0iY2hlY2tsaXN0IiBkYXRhLWZpZWxkdHlwZWNvbXBs
+ZXRla2V5PSJjb20ub2thcHlhLmppcmEuY2hlY2tsaXN0OmNoZWNrbGlzdCI+CiAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im8tY2hlY2tsaXN0LXZpZXctMTAyMDEi
+IGNsYXNzPSJvLWNoZWNrbGlzdCI+CiAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOiA4MDBw
+eDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvLWNoZWNrbGlzdC1o
+ZWFkZXIiPjxkaXY+PHNwYW4gY2xhc3M9Im8taWNvbi1jaGVjayI+PC9zcGFuPjAvMTxkaXYgY2xh
+c3M9Im8tdmlldy1hY3Rpb25zIG8tcHVsbC1yaWdodCI+PGEgdGl0bGU9IkZvbGxvdyBsaW5rIiBj
+bGFzcz0iby1jaGVja2VkLWZpbHRlciIgaHJlZj0iIyI+PHNwYW4gY2xhc3M9Im8taGlkZSI+SGlk
+ZSBjaGVja2VkPC9zcGFuPjxzcGFuIGNsYXNzPSJvLXNob3ciPlNob3cgY2hlY2tlZDwvc3Bhbj48
+L2E+PC9kaXY+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICA8ZGl2IGNsYXNzPSJvLWNoZWNrbGlzdC1pdGVtcyBvLXJlYWQtb25seSI+PGRpdiBjbGFz
+cz0iby1jaGVja2xpc3QtaXRlbSI+PGRpdiBjbGFzcz0iby1jaGVja2JveCI+PHNwYW4gY2xhc3M9
+Im8taWNvbi1vay0xIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iby1jaGVja2xpc3QtaXRlbS1k
+ZXRhaWxzIj48cD5UZXN0ZWQ8L3A+PC9kaXY+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgICA8
+ZGl2IGNsYXNzPSJvLWNoZWNrbGlzdC1pdGVtcy1jb2xsYXBzaWJsZSBvLXJlYWQtb25seSI+PC9k
+aXY+CiAgICAgICAgICAgICAgICA8YSB0aXRsZT0iRm9sbG93IGxpbmsiIGNsYXNzPSJvLXNob3ct
+aXRlbXMgby1zaG93LWFsbCI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im8tbW9y
+ZSI+PHNwYW4gY2xhc3M9Im8taWNvbi1kb3duLW9wZW4iPjwvc3Bhbj5zaG93IG1vcmU8L3NwYW4+
+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im8tbGVzcyI+PHNwYW4gY2xhc3M9Im8t
+aWNvbi11cC1vcGVuIj48L3NwYW4+c2hvdyBsZXNzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9h
+PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8Zm9ybSBpZD0icGFy
+YW1ldGVyQ29udGFpbmVyIj4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9ImhpZGRlbiBwYXJhbWV0
+ZXJzIj4KICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJva2FweWEuY2xvc2UiIHZhbHVlPSJDbG9z
+ZSIgdHlwZT0iaGlkZGVuIj4KICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJva2FweWEuaW1wb3J0
+LmVycm9yIiB2YWx1ZT0iQ2hlY2tsaXN0IGJlbGlldmVzIHRoYXQgeW91IGFyZSB0cnlpbmcgdG8g
+aW1wb3J0IGRhdGEgdG8gcmVjcmVhdGUgaXRlbXMgZnJvbSBhIGRpZmZlcmVudCBsaXN0IGFuZCBm
+b3VuZCB0aGUgZm9sbG93aW5nIGVycm9yOiIgdHlwZT0iaGlkZGVuIj4KICAgICAgICA8L2ZpZWxk
+c2V0PgogICAgPC9mb3JtPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAg
+ICAgICAgICAgIGlmICghb2thcHlhLmNoZWNrbGlzdHMuaGFzT3duUHJvcGVydHkoIm8tY2hlY2ts
+aXN0LXZpZXctMTAyMDEiKSkgewogICAgICAgICAgICAgICAgb2thcHlhLmNoZWNrbGlzdHNbIm8t
+Y2hlY2tsaXN0LXZpZXctMTAyMDEiXSA9IG9rYXB5YS5jcmVhdGVDaGVja2xpc3RWaWV3KHsiaWQi
+IDogIjEwMjAxIiwgImN1c3RvbWZpZWxkSWQiOiAiY3VzdG9tZmllbGRfMTAyMDEiLCAicGFyYW1l
+dGVycyI6IHsic3RyaWtlVGhyb3VnaCI6dHJ1ZSwic2hvd01vcmVDb3VudCI6MiwiZGlzY3JldGlv
+bmFyeU9wdGlvbklkcyI6W10sImVtcGhhc2l6ZU1hbmRhdG9yeSI6ZmFsc2UsInZlcnNpb24iOjEs
+InJlcG9ydGVyQ2FuRWRpdCI6dHJ1ZSwic2hvd1N0YXR1c01lbnUiOmZhbHNlLCJlZGl0Um9sZUlk
+cyI6W119fSwgW3siY2hlY2tlZCI6ZmFsc2UsIm5hbWUiOiJUZXN0ZWQiLCJtYW5kYXRvcnkiOnRy
+dWUsInJhbmsiOjAsIm9wdGlvbklkIjoxMDEwMCwidmVyc2lvbiI6IjMuMCIsImlkIjoxMDEwMCwi
+c3RhdHVzSWQiOiJub25lIn1dKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
+IG9rYXB5YS5jaGVja2xpc3RzWyJvLWNoZWNrbGlzdC12aWV3LTEwMjAxIl0ucmVnaXN0ZXJEYXRh
+KFt7ImNoZWNrZWQiOmZhbHNlLCJuYW1lIjoiVGVzdGVkIiwibWFuZGF0b3J5Ijp0cnVlLCJyYW5r
+IjowLCJvcHRpb25JZCI6MTAxMDAsInZlcnNpb24iOiIzLjAiLCJpZCI6MTAxMDAsInN0YXR1c0lk
+Ijoibm9uZSJ9XSk7CiAgICAgICAgICAgIH0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8aW5w
+dXQgaWQ9Im8tY2hlY2tsaXN0LXZpZXctMTAyMDEtZGF0YSIgdmFsdWU9Ilt7JnF1b3Q7Y2hlY2tl
+ZCZxdW90OzpmYWxzZSwmcXVvdDtuYW1lJnF1b3Q7OiZxdW90O1Rlc3RlZCZxdW90OywmcXVvdDtt
+YW5kYXRvcnkmcXVvdDs6dHJ1ZSwmcXVvdDtyYW5rJnF1b3Q7OjAsJnF1b3Q7b3B0aW9uSWQmcXVv
+dDs6MTAxMDAsJnF1b3Q7dmVyc2lvbiZxdW90OzomcXVvdDszLjAmcXVvdDssJnF1b3Q7aWQmcXVv
+dDs6MTAxMDAsJnF1b3Q7c3RhdHVzSWQmcXVvdDs6JnF1b3Q7bm9uZSZxdW90O31dIiBoaWRkZW49
+IiI+CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvdmVybGF5
+LWljb24gYXVpLWljb24gYXVpLWljb24tc21hbGwgYXVpLWljb25mb250LWVkaXQiPjwvc3Bhbj48
+L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAg
+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAg
+ICAgPC9kaXY+CiAgICAgICAgPC9kaXY+PC9kaXY+CjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImRlc2Ny
+aXB0aW9ubW9kdWxlIiBjbGFzcz0ibW9kdWxlIHRvZ2dsZS13cmFwIj48ZGl2IGlkPSJkZXNjcmlw
+dGlvbm1vZHVsZV9oZWFkaW5nIiBjbGFzcz0ibW9kLWhlYWRlciI+PHVsIGNsYXNzPSJvcHMiPjwv
+dWw+PGgyIGNsYXNzPSJ0b2dnbGUtdGl0bGUiPkRlc2NyaXB0aW9uPC9oMj48L2Rpdj48ZGl2IGNs
+YXNzPSJtb2QtY29udGVudCI+PGRpdiB0aXRsZT0iQ2xpY2sgdG8gZWRpdCIgaWQ9ImRlc2NyaXB0
+aW9uLXZhbCIgY2xhc3M9ImZpZWxkLWlnbm9yZS1oaWdobGlnaHQgZWRpdGFibGUtZmllbGQgaW5h
+Y3RpdmUiPgogICAgPGRpdiBjbGFzcz0idXNlci1jb250ZW50LWJsb2NrIj4KICAgICAgICAgICAg
+ICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIHBhbmVsIiBzdHlsZT0iYm9yZGVyLXdpZHRoOiAxcHg7
+Ij48ZGl2IGNsYXNzPSJjb2RlQ29udGVudCBwYW5lbENvbnRlbnQiPgo8cHJlIGNsYXNzPSJjb2Rl
+LWphdmEiPiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0i
+Y29kZS1xdW90ZSI+Im5hbWUiPC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4idXBs
+b2FkVXJsIjwvc3Bhbj4sCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtcXVv
+dGUiPiJ2YWx1ZSI8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiJodHRwOjxzcGFu
+IGNsYXNzPSJjb2RlLWNvbW1lbnQiPi8vMTAuNjkuMC4xNjM6MTA4MC9qbWFwL3VwbG9hZCI8L3Nw
+YW4+LAo8L3NwYW4+ICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+
+Il9pZCI8L3NwYW4+IDogT2JqZWN0SWQoPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiI1Nzg1Zjg1
+Y2Q3ZjQwMzNjMDBmYzYwNmQiPC9zcGFuPikKICAgICAgICAgICAgICAgIH0sIAogICAgICAgICAg
+ICAgICAgewogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4ibmFt
+ZSI8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiJkb3dubG9hZFVybCI8L3NwYW4+
+LAogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4idmFsdWUiPC9z
+cGFuPiA6IDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4iaHR0cDo8c3BhbiBjbGFzcz0iY29kZS1j
+b21tZW50Ij4vLzEwLjY5LjAuMTYzOjEwODAvam1hcC9kb3dubG9hZCI8L3NwYW4+LAo8L3NwYW4+
+ICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+Il9pZCI8L3NwYW4+
+IDogT2JqZWN0SWQoPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiI1Nzg1Zjg1Y2Q3ZjQwMzNjMDBm
+YzYwNmMiPC9zcGFuPikKICAgICAgICAgICAgICAgIH0sIAo8L3ByZT4KPC9kaXY+PC9kaXY+Cgo8
+cD5zaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA8L3A+CjxkaXYgY2xhc3M9ImNvZGUgcGFuZWwiIHN0
+eWxlPSJib3JkZXItd2lkdGg6IDFweDsiPjxkaXYgY2xhc3M9ImNvZGVDb250ZW50IHBhbmVsQ29u
+dGVudCI+CjxwcmUgY2xhc3M9ImNvZGUtamF2YSI+ICAgICAgICAgICAgICB7CiAgICAgICAgICAg
+ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiJuYW1lIjwvc3Bhbj4gOiA8c3BhbiBj
+bGFzcz0iY29kZS1xdW90ZSI+InVwbG9hZFVybCI8L3NwYW4+LAogICAgICAgICAgICAgICAgICAg
+IDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4idmFsdWUiPC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJj
+b2RlLXF1b3RlIj4iaHR0cDo8c3BhbiBjbGFzcz0iY29kZS1jb21tZW50Ij4vLzEwLjY5LjAuMTYz
+OjEwODAvdXBsb2FkIjwvc3Bhbj4sCjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNs
+YXNzPSJjb2RlLXF1b3RlIj4iX2lkIjwvc3Bhbj4gOiBPYmplY3RJZCg8c3BhbiBjbGFzcz0iY29k
+ZS1xdW90ZSI+IjU3ODVmODVjZDdmNDAzM2MwMGZjNjA2ZCI8L3NwYW4+KQogICAgICAgICAgICAg
+ICAgfSwgCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
+ImNvZGUtcXVvdGUiPiJuYW1lIjwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+ImRv
+d25sb2FkVXJsIjwvc3Bhbj4sCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvZGUt
+cXVvdGUiPiJ2YWx1ZSI8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiJodHRwOjxz
+cGFuIGNsYXNzPSJjb2RlLWNvbW1lbnQiPi8vMTAuNjkuMC4xNjM6MTA4MC9kb3dubG9hZCI8L3Nw
+YW4+LAo8L3NwYW4+ICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+
+Il9pZCI8L3NwYW4+IDogT2JqZWN0SWQoPHNwYW4gY2xhc3M9ImNvZGUtcXVvdGUiPiI1Nzg1Zjg1
+Y2Q3ZjQwMzNjMDBmYzYwNmMiPC9zcGFuPikKICAgICAgICAgICAgICAgIH0sIAogICAgICAgICAg
+ICAgICB7CiAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+Im5hbWUi
+PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjb2RlLXF1b3RlIj4iY29tcG9zZXIuYXR0YWNobWVudHMi
+PC9zcGFuPiwKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29kZS1xdW90ZSI+InZh
+bHVlIjwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY29kZS1rZXl3b3JkIj50cnVlPC9zcGFuPgogICAg
+ICAgICAgICAgICB9Cgo8L3ByZT4KPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2Pgo8c3Bh
+biBjbGFzcz0ib3ZlcmxheS1pY29uIGF1aS1pY29uIGF1aS1pY29uLXNtYWxsIGF1aS1pY29uZm9u
+dC1lZGl0Ij48L3NwYW4+PC9kaXY+CjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImFjdGl2aXR5bW9kdWxl
+IiBjbGFzcz0ibW9kdWxlIHRvZ2dsZS13cmFwIj48ZGl2IGlkPSJhY3Rpdml0eW1vZHVsZV9oZWFk
+aW5nIiBjbGFzcz0ibW9kLWhlYWRlciI+PHVsIGNsYXNzPSJvcHMiPjwvdWw+PGgyIGNsYXNzPSJ0
+b2dnbGUtdGl0bGUiPkFjdGl2aXR5PC9oMj48L2Rpdj48ZGl2IGNsYXNzPSJtb2QtY29udGVudCI+
+CgoKCgoKCgoKCgogICAgPGRpdiBjbGFzcz0idGFid3JhcCB0YWJzMiI+CgogICAgICAgIDx1bCBp
+ZD0iaXNzdWUtdGFicyIgY2xhc3M9InRhYnMgaG9yaXpvbnRhbCI+CiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDxsaSBkYXRhLWlkPSJhbGwtdGFicGFuZWwiIGRh
+dGEta2V5PSJjb20uYXRsYXNzaWFuLmppcmEucGx1Z2luLnN5c3RlbS5pc3N1ZXRhYnBhbmVsczph
+bGwtdGFicGFuZWwiIGRhdGEtbGFiZWw9IkFsbCIgZGF0YS1ocmVmPSIvamlyYS9icm93c2UvT1It
+MjM0OT9wYWdlPWNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW4uc3lzdGVtLmlzc3VldGFicGFuZWxz
+OmFsbC10YWJwYW5lbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWph
+eC1hY3Rpdml0eS1jb250ZW50IiBpZD0iYWxsLXRhYnBhbmVsIiBocmVmPSJodHRwczovL2NpLm9w
+ZW4tcGFhcy5vcmcvamlyYS9icm93c2UvT1ItMjM0OT9wYWdlPWNvbS5hdGxhc3NpYW4uamlyYS5w
+bHVnaW4uc3lzdGVtLmlzc3VldGFicGFuZWxzOmFsbC10YWJwYW5lbCI+PHN0cm9uZz5BbGw8L3N0
+cm9uZz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIiBpZD0iY29tbWVu
+dC10YWJwYW5lbCIgZGF0YS1pZD0iY29tbWVudC10YWJwYW5lbCIgZGF0YS1rZXk9ImNvbS5hdGxh
+c3NpYW4uamlyYS5wbHVnaW4uc3lzdGVtLmlzc3VldGFicGFuZWxzOmNvbW1lbnQtdGFicGFuZWwi
+IGRhdGEtbGFiZWw9IkNvbW1lbnRzIiBkYXRhLWhyZWY9Ii9qaXJhL2Jyb3dzZS9PUi0yMzQ5P3Bh
+Z2U9Y29tLmF0bGFzc2lhbi5qaXJhLnBsdWdpbi5zeXN0ZW0uaXNzdWV0YWJwYW5lbHM6Y29tbWVu
+dC10YWJwYW5lbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIHRhYmluZGV4
+PSIwIj5Db21tZW50czwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8bGkgZGF0YS1pZD0id29y
+a2xvZy10YWJwYW5lbCIgZGF0YS1rZXk9ImNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW4uc3lzdGVt
+Lmlzc3VldGFicGFuZWxzOndvcmtsb2ctdGFicGFuZWwiIGRhdGEtbGFiZWw9IldvcmsgTG9nIiBk
+YXRhLWhyZWY9Ii9qaXJhL2Jyb3dzZS9PUi0yMzQ5P3BhZ2U9Y29tLmF0bGFzc2lhbi5qaXJhLnBs
+dWdpbi5zeXN0ZW0uaXNzdWV0YWJwYW5lbHM6d29ya2xvZy10YWJwYW5lbCI+CiAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWpheC1hY3Rpdml0eS1jb250ZW50IiBpZD0id29y
+a2xvZy10YWJwYW5lbCIgaHJlZj0iaHR0cHM6Ly9jaS5vcGVuLXBhYXMub3JnL2ppcmEvYnJvd3Nl
+L09SLTIzNDk/cGFnZT1jb20uYXRsYXNzaWFuLmppcmEucGx1Z2luLnN5c3RlbS5pc3N1ZXRhYnBh
+bmVsczp3b3JrbG9nLXRhYnBhbmVsIj48c3Ryb25nPldvcmsgTG9nPC9zdHJvbmc+PC9hPgogICAg
+ICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+IAogICAgICAgICAgICA8bGkgZGF0YS1pZD0iY2hhbmdlaGlzdG9yeS10YWJwYW5lbCIgZGF0YS1r
+ZXk9ImNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW4uc3lzdGVtLmlzc3VldGFicGFuZWxzOmNoYW5n
+ZWhpc3RvcnktdGFicGFuZWwiIGRhdGEtbGFiZWw9Ikhpc3RvcnkiIGRhdGEtaHJlZj0iL2ppcmEv
+YnJvd3NlL09SLTIzNDk/cGFnZT1jb20uYXRsYXNzaWFuLmppcmEucGx1Z2luLnN5c3RlbS5pc3N1
+ZXRhYnBhbmVsczpjaGFuZ2VoaXN0b3J5LXRhYnBhbmVsIj4KICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgIDxhIGNsYXNzPSJhamF4LWFjdGl2aXR5LWNvbnRlbnQiIGlkPSJjaGFuZ2VoaXN0b3J5
+LXRhYnBhbmVsIiBocmVmPSJodHRwczovL2NpLm9wZW4tcGFhcy5vcmcvamlyYS9icm93c2UvT1It
+MjM0OT9wYWdlPWNvbS5hdGxhc3NpYW4uamlyYS5wbHVnaW4uc3lzdGVtLmlzc3VldGFicGFuZWxz
+OmNoYW5nZWhpc3RvcnktdGFicGFuZWwiPjxzdHJvbmc+SGlzdG9yeTwvc3Ryb25nPjwvYT4KICAg
+ICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAKICAgICAgICAgICAgPGxpIGRhdGEtaWQ9ImFjdGl2aXR5LXN0cmVhbS1pc3N1ZS10YWIiIGRh
+dGEta2V5PSJjb20uYXRsYXNzaWFuLnN0cmVhbXMuc3RyZWFtcy1qaXJhLXBsdWdpbjphY3Rpdml0
+eS1zdHJlYW0taXNzdWUtdGFiIiBkYXRhLWxhYmVsPSJBY3Rpdml0eSIgZGF0YS1ocmVmPSIvamly
+YS9icm93c2UvT1ItMjM0OT9wYWdlPWNvbS5hdGxhc3NpYW4uc3RyZWFtcy5zdHJlYW1zLWppcmEt
+cGx1Z2luOmFjdGl2aXR5LXN0cmVhbS1pc3N1ZS10YWIiPgogICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgPGEgY2xhc3M9ImFqYXgtYWN0aXZpdHktY29udGVudCIgaWQ9ImFjdGl2aXR5LXN0cmVh
+bS1pc3N1ZS10YWIiIGhyZWY9Imh0dHBzOi8vY2kub3Blbi1wYWFzLm9yZy9qaXJhL2Jyb3dzZS9P
+Ui0yMzQ5P3BhZ2U9Y29tLmF0bGFzc2lhbi5zdHJlYW1zLnN0cmVhbXMtamlyYS1wbHVnaW46YWN0
+aXZpdHktc3RyZWFtLWlzc3VlLXRhYiI+PHN0cm9uZz5BY3Rpdml0eTwvc3Ryb25nPjwvYT4KICAg
+ICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAg
+ICAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Imlzc3VlUGFuZWxXcmFwcGVyIj4KICAgICAgICA8
+ZGl2IGNsYXNzPSJpc3N1ZVBhbmVsUHJvZ3Jlc3MiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9
+Imlzc3VlUGFuZWxDb250YWluZXIiIGlkPSJpc3N1ZV9hY3Rpb25zX2NvbnRhaW5lciI+CiAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UtY29udGFp
+bmVyIj4KICAgIFRoZXJlIGFyZSBubyBjb21tZW50cyB5ZXQgb24gdGhpcyBpc3N1ZS4KPC9kaXY+
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj48L2Rp
+dj48ZGl2IGlkPSJhZGRjb21tZW50IiBjbGFzcz0ibW9kdWxlIj4KICAgIDxkaXYgaWQ9ImFkZGNv
+bW1lbnQiIGNsYXNzPSJtb2R1bGUiPgogICAgPGRpdiBjbGFzcz0ibW9kLWNvbnRlbnQiPgogICAg
+ICAgIDxmb3JtIGFjdGlvbj0iL2ppcmEvc2VjdXJlL0FkZENvbW1lbnQuanNwYT9hdGxfdG9rZW49
+QkUyRi03OVBMLUg4UVMtMlNUQiU3Qzk5YmY4NWIzNWZkYTRjYjE4ZWU2OTMxNGVlZjVhMTM5MmJl
+MGEzZDMlN0NsaW4iIGNsYXNzPSJhdWkgdG9wLWxhYmVsIGFqcy1kaXJ0eS13YXJuaW5nLWV4ZW1w
+dCIgaWQ9Imlzc3VlLWNvbW1lbnQtYWRkIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8ZGl2
+IGNsYXNzPSJmb3JtLWJvZHkiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuIj4K
+ICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iYXRsX3Rva2VuIiB2YWx1ZT0iQkUyRi03
+OVBMLUg4UVMtMlNUQnw5OWJmODViMzVmZGE0Y2IxOGVlNjkzMTRlZWY1YTEzOTJiZTBhM2QzfGxp
+biIgdHlwZT0iaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iaWQiIHZh
+bHVlPSIxNjYyNiIgdHlwZT0iaGlkZGVuIj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAg
+ICAgICAgICAgIAoKCiAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgIAogICAg
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1ncm91cCBhdWkt
+ZmllbGQtd2lraWVkaXQgY29tbWVudC1pbnB1dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9
+ImNvbW1lbnQiPkNvbW1lbnQ8L2xhYmVsPgogICAgICAgICAgICAgICAgCjxkaXYgY2xhc3M9Indp
+a2ktZWRpdCI+CiAgICA8ZGl2IGlkPSJ3aWtpLWVkaXQtZHJvcGRvd24yLXRleHQtc3R5bGUtd2lr
+aUVkaXQwIiBjbGFzcz0iYXVpLWRyb3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCB3aWtpLWVkaXQt
+ZHJvcGRvd24iPjxkaXYgY2xhc3M9ImF1aS1kcm9wZG93bjItc2VjdGlvbiI+PHVsIGNsYXNzPSJh
+dWktbGlzdC10cnVuY2F0ZSI+PGxpPjxhIG9yaWdpbmFsLXRpdGxlPSJQYXJhZ3JhcGgiIGhyZWY9
+IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0icGFyYWdyYXBo
+Ij5QYXJhZ3JhcGg8L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IkhlYWRpbmcgMSIgaHJl
+Zj0iIyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24gd2lraS1lZGl0LW9wZXJhdGlvbi1oMSIg
+ZGF0YS1vcGVyYXRpb249ImgxIj5IZWFkaW5nIDE8L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0
+bGU9IkhlYWRpbmcgMiIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24gd2lraS1l
+ZGl0LW9wZXJhdGlvbi1oMiIgZGF0YS1vcGVyYXRpb249ImgyIj5IZWFkaW5nIDI8L2E+PC9saT48
+bGk+PGEgb3JpZ2luYWwtdGl0bGU9IkhlYWRpbmcgMyIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRp
+dC1vcGVyYXRpb24gd2lraS1lZGl0LW9wZXJhdGlvbi1oMyIgZGF0YS1vcGVyYXRpb249ImgzIj5I
+ZWFkaW5nIDM8L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IkhlYWRpbmcgNCIgaHJlZj0i
+IyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24gd2lraS1lZGl0LW9wZXJhdGlvbi1oNCIgZGF0
+YS1vcGVyYXRpb249Img0Ij5IZWFkaW5nIDQ8L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0bGU9
+IkhlYWRpbmcgNSIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24gd2lraS1lZGl0
+LW9wZXJhdGlvbi1oNSIgZGF0YS1vcGVyYXRpb249Img1Ij5IZWFkaW5nIDU8L2E+PC9saT48bGk+
+PGEgb3JpZ2luYWwtdGl0bGU9IkhlYWRpbmcgNiIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRpdC1v
+cGVyYXRpb24gd2lraS1lZGl0LW9wZXJhdGlvbi1oNiIgZGF0YS1vcGVyYXRpb249Img2Ij5IZWFk
+aW5nIDY8L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IlByZWZvcm1hdHRlZCIgaHJlZj0i
+IyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24gd2lraS1lZGl0LW9wZXJhdGlvbi1tb25vc3Bh
+Y2UiIGRhdGEtb3BlcmF0aW9uPSJtb25vc3BhY2UiPlByZWZvcm1hdHRlZDwvYT48L2xpPjxsaT48
+YSBvcmlnaW5hbC10aXRsZT0iUGFyYWdyYXBoIHF1b3RlIiBocmVmPSIjIiBjbGFzcz0id2lraS1l
+ZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249InBhcmFncmFwaC1xdW90ZSI+UGFyYWdyYXBo
+IHF1b3RlPC9hPjwvbGk+PGxpPjxhIG9yaWdpbmFsLXRpdGxlPSJCbG9jayBxdW90ZSIgaHJlZj0i
+IyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24iIGRhdGEtb3BlcmF0aW9uPSJibG9jay1xdW90
+ZSI+QmxvY2sgcXVvdGU8L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Indpa2ktZWRp
+dC1kcm9wZG93bjItbW9yZS13aWtpRWRpdDAiIGNsYXNzPSJhdWktZHJvcGRvd24yIGF1aS1zdHls
+ZS1kZWZhdWx0IHdpa2ktZWRpdC1kcm9wZG93biI+PGRpdiBjbGFzcz0iYXVpLWRyb3Bkb3duMi1z
+ZWN0aW9uIj48dWwgY2xhc3M9ImF1aS1saXN0LXRydW5jYXRlIj48bGk+PGEgb3JpZ2luYWwtdGl0
+bGU9IlN0cmlrZXRocm91Z2ggKEN0cmwrU2hpZnQrUykiIGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVk
+aXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0iZGVsZXRlIiBkYXRhLXNob3J0Y3V0PSJjdHJs
+K3NoaWZ0K3MsIGNvbW1hbmQrc2hpZnQrcyI+U3RyaWtldGhyb3VnaDwvYT48L2xpPjxsaT48YSBo
+cmVmPSIjIiBjbGFzcz0id2lraS1lZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249InN1cGVy
+c2NyaXB0Ij5TdXBlcnNjcmlwdDwvYT48L2xpPjxsaT48YSBocmVmPSIjIiBjbGFzcz0id2lraS1l
+ZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249InN1YnNjcmlwdCI+U3Vic2NyaXB0PC9hPjwv
+bGk+PGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJh
+dGlvbj0iY2l0ZSI+Q2l0YXRpb248L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Indp
+a2ktZWRpdC1kcm9wZG93bjItbGluay13aWtpRWRpdDAiIGNsYXNzPSJhdWktZHJvcGRvd24yIGF1
+aS1zdHlsZS1kZWZhdWx0IHdpa2ktZWRpdC1kcm9wZG93biB3aWtpLWVkaXQtZHJvcGRvd24tbGlu
+ayI+PGRpdiBjbGFzcz0iYXVpLWRyb3Bkb3duMi1zZWN0aW9uIj48dWwgY2xhc3M9ImF1aS1saXN0
+LXRydW5jYXRlIj48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IkV4dGVybmFsIGxpbmsgKEN0cmwrSyki
+IGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0ibGlu
+ayIgZGF0YS1zaG9ydGN1dD0iY3RybCtrLCBjb21tYW5kK2siPkV4dGVybmFsIGxpbms8L2E+PC9s
+aT48bGk+PGEgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24iIGRhdGEtb3BlcmF0
+aW9uPSJsaW5rLW1haWwiPk1haWwgbGluazwvYT48L2xpPjxsaT48YSBocmVmPSIjIiBjbGFzcz0i
+d2lraS1lZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249ImxpbmstYW5jaG9yIj5BbmNob3Ig
+bGluazwvYT48L2xpPjxsaT48YSBocmVmPSIjIiBjbGFzcz0id2lraS1lZGl0LW9wZXJhdGlvbiIg
+ZGF0YS1vcGVyYXRpb249ImxpbmstYXR0YWNobWVudCI+QXR0YWNobWVudCBsaW5rPC9hPjwvbGk+
+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJhdWktZHJvcGRvd24yLXNlY3Rpb24gd2lraS1lZGl0LWlu
+c2VydC1saW5rIj48c3Ryb25nPkF0dGFjaG1lbnQgbGluazwvc3Ryb25nPjx1bCBjbGFzcz0iYXVp
+LWxpc3QtdHJ1bmNhdGUiPjxsaT48YSBocmVmPSIjIj48L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2
+PjxkaXYgaWQ9Indpa2ktZWRpdC1kcm9wZG93bjItaW1hZ2Utd2lraUVkaXQwIiBjbGFzcz0iYXVp
+LWRyb3Bkb3duMiBhdWktc3R5bGUtZGVmYXVsdCB3aWtpLWVkaXQtZHJvcGRvd24gd2lraS1lZGl0
+LWRyb3Bkb3duLWltYWdlIj48ZGl2IGNsYXNzPSJhdWktZHJvcGRvd24yLXNlY3Rpb24iPjx1bCBj
+bGFzcz0iYXVpLWxpc3QtdHJ1bmNhdGUiPjxsaT48YSBvcmlnaW5hbC10aXRsZT0iRXh0ZXJuYWwg
+aW1hZ2UiIGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlv
+bj0iaW1hZ2UiPkV4dGVybmFsIGltYWdlPC9hPjwvbGk+PGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJ3
+aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0iaW1hZ2UtYXR0YWNobWVudCI+QXR0
+YWNoZWQgaW1hZ2U8L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImF1aS1kcm9wZG93bjIt
+c2VjdGlvbiB3aWtpLWVkaXQtaW5zZXJ0LWltYWdlIj48c3Ryb25nPkF0dGFjaGVkIGltYWdlPC9z
+dHJvbmc+PHVsIGNsYXNzPSJhdWktbGlzdC10cnVuY2F0ZSI+PGxpPjxhIGhyZWY9IiMiPjwvYT48
+L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBpZD0id2lraS1lZGl0LWNvbG9yLXBpY2tlci13aWtp
+RWRpdDAiIGNsYXNzPSJhdWktZHJvcGRvd24yIGF1aS1zdHlsZS1kZWZhdWx0IHdpa2ktZWRpdC1w
+aWNrZXIgd2lraS1lZGl0LWNvbG9yLXBpY2tlciIgZGF0YS1jb250YWluZXI9Indpa2ktZWRpdC1j
+b2xvci1waWNrZXItYnV0dG9ucy13aWtpRWRpdDAiPjxkaXYgY2xhc3M9ImF1aS1kcm9wZG93bjIt
+c2VjdGlvbiI+PHVsPjxsaT48YSBocmVmPSIjIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzMz
+MzMzMyIgZGF0YS1vcGVyYXRpb249ImNvbG9yIiBkYXRhLWNvbG9yPSIjMzMzMzMzIj4mbmJzcDs8
+L2E+PC9saT48bGk+PGEgaHJlZj0iIyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICM3MDcwNzAi
+IGRhdGEtb3BlcmF0aW9uPSJjb2xvciIgZGF0YS1jb2xvcj0iIzcwNzA3MCI+Jm5ic3A7PC9hPjwv
+bGk+PGxpPjxhIGhyZWY9IiMiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjY2NjIiBkYXRh
+LW9wZXJhdGlvbj0iY29sb3IiIGRhdGEtY29sb3I9IiNjY2NjY2MiPiZuYnNwOzwvYT48L2xpPjxs
+aT48YSBocmVmPSIjIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzIwNTA4MSIgZGF0YS1vcGVy
+YXRpb249ImNvbG9yIiBkYXRhLWNvbG9yPSIjMjA1MDgxIj4mbmJzcDs8L2E+PC9saT48bGk+PGEg
+aHJlZj0iIyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICM1OWFmZTEiIGRhdGEtb3BlcmF0aW9u
+PSJjb2xvciIgZGF0YS1jb2xvcj0iIzU5YWZlMSI+Jm5ic3A7PC9hPjwvbGk+PGxpPjxhIGhyZWY9
+IiMiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMTQ4OTJjIiBkYXRhLW9wZXJhdGlvbj0iY29s
+b3IiIGRhdGEtY29sb3I9IiMxNDg5MmMiPiZuYnNwOzwvYT48L2xpPjxsaT48YSBocmVmPSIjIiBz
+dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzhlYjAyMSIgZGF0YS1vcGVyYXRpb249ImNvbG9yIiBk
+YXRhLWNvbG9yPSIjOGViMDIxIj4mbmJzcDs8L2E+PC9saT48bGk+PGEgaHJlZj0iIyIgc3R5bGU9
+ImJhY2tncm91bmQtY29sb3I6ICNkMDQ0MzciIGRhdGEtb3BlcmF0aW9uPSJjb2xvciIgZGF0YS1j
+b2xvcj0iI2QwNDQzNyI+Jm5ic3A7PC9hPjwvbGk+PGxpPjxhIGhyZWY9IiMiIHN0eWxlPSJiYWNr
+Z3JvdW5kLWNvbG9yOiAjZjc5MjMyIiBkYXRhLW9wZXJhdGlvbj0iY29sb3IiIGRhdGEtY29sb3I9
+IiNmNzkyMzIiPiZuYnNwOzwvYT48L2xpPjxsaT48YSBocmVmPSIjIiBzdHlsZT0iYmFja2dyb3Vu
+ZC1jb2xvcjogI2Y2YzM0MiIgZGF0YS1vcGVyYXRpb249ImNvbG9yIiBkYXRhLWNvbG9yPSIjZjZj
+MzQyIj4mbmJzcDs8L2E+PC9saT48bGk+PGEgaHJlZj0iIyIgc3R5bGU9ImJhY2tncm91bmQtY29s
+b3I6ICM2NTQ5ODIiIGRhdGEtb3BlcmF0aW9uPSJjb2xvciIgZGF0YS1jb2xvcj0iIzY1NDk4MiI+
+Jm5ic3A7PC9hPjwvbGk+PGxpPjxhIGhyZWY9IiMiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAj
+ZjY5MWIyIiBkYXRhLW9wZXJhdGlvbj0iY29sb3IiIGRhdGEtY29sb3I9IiNmNjkxYjIiPiZuYnNw
+OzwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBpZD0id2lraS1lZGl0LWRyb3Bkb3duMi1p
+Y29uLXBpY2tlci13aWtpRWRpdDAiIGNsYXNzPSJhdWktZHJvcGRvd24yIGF1aS1zdHlsZS1kZWZh
+dWx0IHdpa2ktZWRpdC1waWNrZXIgd2lraS1lZGl0LWljb24tcGlja2VyIiBkYXRhLWNvbnRhaW5l
+cj0id2lraS1lZGl0LWljb24tcGlja2VyLWJ1dHRvbnMtd2lraUVkaXQwIj48ZGl2IGNsYXNzPSJh
+dWktZHJvcGRvd24yLXNlY3Rpb24iPjx1bD48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IjopIiBocmVm
+PSIjIiBjbGFzcz0id2lraS1lZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249IjopIj48aW1n
+IHNyYz0idGVzdF9maWxlcy9zbWlsZS5naWYiIGFsdD0ic21pbGUiPjwvYT48L2xpPjxsaT48YSBv
+cmlnaW5hbC10aXRsZT0iOigiIGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBk
+YXRhLW9wZXJhdGlvbj0iOigiPjxpbWcgc3JjPSJ0ZXN0X2ZpbGVzL3NhZC5naWYiIGFsdD0ic2Fk
+Ij48L2E+PC9saT48bGk+PGEgb3JpZ2luYWwtdGl0bGU9IjpQIiBocmVmPSIjIiBjbGFzcz0id2lr
+aS1lZGl0LW9wZXJhdGlvbiIgZGF0YS1vcGVyYXRpb249IjpQIj48aW1nIHNyYz0idGVzdF9maWxl
+cy90b25ndWUuZ2lmIiBhbHQ9InRvbmd1ZSI+PC9hPjwvbGk+PGxpPjxhIG9yaWdpbmFsLXRpdGxl
+PSI6RCIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRpdC1vcGVyYXRpb24iIGRhdGEtb3BlcmF0aW9u
+PSI6RCI+PGltZyBzcmM9InRlc3RfZmlsZXMvYmlnZ3Jpbi5naWYiIGFsdD0iYmlnZ3JpbiI+PC9h
+PjwvbGk+PGxpPjxhIG9yaWdpbmFsLXRpdGxlPSI7KSIgaHJlZj0iIyIgY2xhc3M9Indpa2ktZWRp
+dC1vcGVyYXRpb24iIGRhdGEtb3BlcmF0aW9uPSI7KSI+PGltZyBzcmM9InRlc3RfZmlsZXMvd2lu
+ay5naWYiIGFsdD0id2luayI+PC9hPjwvbGk+PGxpPjxhIG9yaWdpbmFsLXRpdGxlPSIoeSkiIGhy
+ZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQtb3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0iKHkpIj48
+aW1nIHNyYz0idGVzdF9maWxlcy90aHVtYnNfdXAuZ2lmIiBhbHQ9InRodW1icyB1cCI+PC9hPjwv
+bGk+PGxpPjxhIG9yaWdpbmFsLXRpdGxlPSIobikiIGhyZWY9IiMiIGNsYXNzPSJ3aWtpLWVkaXQt
+b3BlcmF0aW9uIiBkYXRhLW9wZXJhdGlvbj0iKG4pIj48aW1nIHNyYz0idGVzdF9maWxlcy90aHVt
+YnNfZG93bi5naWYiIGFsdD0idGh1bWJzIGRvd24iPjwvYT48L2xpPjxsaT48YSBvcmlnaW5hbC10
+aXRsZT0iKGkpIiBocmVmPSIj

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[03/10] james-project git commit: MAILBOX-278 Make sure indexing index at least email body when attachment conversion fails

Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/d87642ab/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index d143f2b..82b052a 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -30,6 +30,7 @@ import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.endsWith;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasEntry;
+import static org.hamcrest.Matchers.hasItem;
 import static org.hamcrest.Matchers.hasKey;
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.isEmptyOrNullString;
@@ -2975,4 +2976,178 @@ public abstract class SetMessagesMethodTest {
             .collect(Collectors.toList()));
     }
 
+    @Test
+    public void setMessagesShouldCreateMessageWhenSendingMessageWithNonIndexableAttachment() throws Exception {
+        jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "sent");
+
+        Attachment nonIndexableAttachment = Attachment.builder()
+                .bytes(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("attachment/nonIndexableAttachment.html")))
+                .type("text/html")
+                .build();
+        uploadTextAttachment(nonIndexableAttachment);
+
+        String messageCreationId = "creationId";
+        String fromAddress = USERNAME;
+        String outboxId = getOutboxId(accessToken);
+        String requestBody = "[" +
+                "  [" +
+                "    \"setMessages\","+
+                "    {" +
+                "      \"create\": { \"" + messageCreationId  + "\" : {" +
+                "        \"from\": { \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}," +
+                "        \"to\": [{ \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}]," +
+                "        \"subject\": \"Message with non indexable attachment\"," +
+                "        \"textBody\": \"Test body\"," +
+                "        \"mailboxIds\": [\"" + outboxId + "\"], " +
+                "        \"attachments\": [" +
+                "               {\"blobId\" : \"" + nonIndexableAttachment.getAttachmentId().getId() + "\", " +
+                "               \"type\" : \"" + nonIndexableAttachment.getType() + "\", " +
+                "               \"name\" : \"nonIndexableAttachment.html\", " +
+                "               \"size\" : " + nonIndexableAttachment.getSize() + "}" +
+                "           ]" +
+                "      }}" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        String createdPath = ARGUMENTS + ".created[\""+messageCreationId+"\"]";
+        String singleAttachment = createdPath + ".attachments[0]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("messagesSet"))
+            .body(ARGUMENTS + ".notCreated", aMapWithSize(0))
+            .body(ARGUMENTS + ".created", aMapWithSize(1))
+            .body(createdPath + ".attachments", hasSize(1))
+            .body(singleAttachment + ".blobId", equalTo(nonIndexableAttachment.getAttachmentId().getId()))
+            .body(singleAttachment + ".type", equalTo("text/html; charset=UTF-8"))
+            .body(singleAttachment + ".size", equalTo((int) nonIndexableAttachment.getSize()));
+    }
+
+    @Test
+    public void messageWithNonIndexableAttachmentShouldBeRetrievedWhenChainingSetMessagesAndGetMessages() throws Exception {
+        jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "sent");
+
+        Attachment nonIndexableAttachment = Attachment.builder()
+                .bytes(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("attachment/nonIndexableAttachment.html")))
+                .type("text/html")
+                .build();
+        uploadTextAttachment(nonIndexableAttachment);
+
+        String messageCreationId = "creationId";
+        String fromAddress = USERNAME;
+        String outboxId = getOutboxId(accessToken);
+        String requestBody = "[" +
+                "  [" +
+                "    \"setMessages\","+
+                "    {" +
+                "      \"create\": { \"" + messageCreationId  + "\" : {" +
+                "        \"from\": { \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}," +
+                "        \"to\": [{ \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}]," +
+                "        \"subject\": \"Message with non indexable attachment\"," +
+                "        \"textBody\": \"Test body\"," +
+                "        \"mailboxIds\": [\"" + outboxId + "\"], " +
+                "        \"attachments\": [" +
+                "               {\"blobId\" : \"" + nonIndexableAttachment.getAttachmentId().getId() + "\", " +
+                "               \"type\" : \"" + nonIndexableAttachment.getType() + "\", " +
+                "               \"name\" : \"nonIndexableAttachment.html\", " +
+                "               \"size\" : " + nonIndexableAttachment.getSize() + "}" +
+                "           ]" +
+                "      }}" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        String messageId = with()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+        // When
+        .post("/jmap")
+        .then()
+            .extract()
+            .body()
+            .<String>path(ARGUMENTS + ".created."+ messageCreationId +".id");
+
+        calmlyAwait.atMost(30, TimeUnit.SECONDS).until( () -> isAnyMessageFoundInInbox(accessToken));
+
+        String message = ARGUMENTS + ".list[0]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .log().ifValidationFails()
+            .body(NAME, equalTo("messages"))
+            .body(ARGUMENTS + ".list", hasSize(1))
+            .body(message + ".attachments", hasSize(1));
+    }
+
+    @Test
+    public void messageWithNonIndexableAttachmentShouldHaveItsEmailBodyIndexed() throws Exception {
+        jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "sent");
+
+        Attachment nonIndexableAttachment = Attachment.builder()
+                .bytes(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("attachment/nonIndexableAttachment.html")))
+                .type("text/html")
+                .build();
+        uploadTextAttachment(nonIndexableAttachment);
+
+        String messageCreationId = "creationId";
+        String fromAddress = USERNAME;
+        String outboxId = getOutboxId(accessToken);
+        String requestBody = "[" +
+                "  [" +
+                "    \"setMessages\","+
+                "    {" +
+                "      \"create\": { \"" + messageCreationId  + "\" : {" +
+                "        \"from\": { \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}," +
+                "        \"to\": [{ \"name\": \"Me\", \"email\": \"" + fromAddress + "\"}]," +
+                "        \"subject\": \"Message with non indexable attachment\"," +
+                "        \"textBody\": \"Test body\"," +
+                "        \"mailboxIds\": [\"" + outboxId + "\"], " +
+                "        \"attachments\": [" +
+                "               {\"blobId\" : \"" + nonIndexableAttachment.getAttachmentId().getId() + "\", " +
+                "               \"type\" : \"" + nonIndexableAttachment.getType() + "\", " +
+                "               \"name\" : \"nonIndexableAttachment.html\", " +
+                "               \"size\" : " + nonIndexableAttachment.getSize() + "}" +
+                "           ]" +
+                "      }}" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        String messageId = with()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+        // When
+        .post("/jmap")
+        .then()
+            .extract()
+            .body()
+            .<String>path(ARGUMENTS + ".created."+ messageCreationId +".id");
+
+        calmlyAwait.atMost(30, TimeUnit.SECONDS).until( () -> isAnyMessageFoundInInbox(accessToken));
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body("[[\"getMessageList\", {\"filter\":{\"body\": \"Test\"}}, \"#0\"]]")
+            .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .log().ifValidationFails()
+            .body(NAME, equalTo("messageList"))
+            .body(ARGUMENTS + ".messageIds", hasItem(messageId));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[10/10] james-project git commit: Merge remote-tracking branch 'quynhn/MAILBOX-278'

Posted by ad...@apache.org.
Merge remote-tracking branch 'quynhn/MAILBOX-278'


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/df6ad23d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/df6ad23d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/df6ad23d

Branch: refs/heads/master
Commit: df6ad23db066bf0c2cd5a9afb8b098afedd872e1
Parents: 7abdb53 6c0947f
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Feb 7 12:58:05 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Feb 7 12:58:05 2017 +0100

----------------------------------------------------------------------
 .../james/backends/es/ElasticSearchIndexer.java |   25 +
 ...lasticSearchListeningMessageSearchIndex.java |   16 +-
 .../json/MessageToElasticSearchJson.java        |   12 +
 .../mailbox/elasticsearch/json/MimePart.java    |    2 +-
 ...hListeningMailboxMessageSearchIndexTest.java |  281 ---
 ...icSearchListeningMessageSearchIndexTest.java |  306 ++++
 .../json/IndexableMessageTest.java              |   57 +
 .../MailboxMessageToElasticSearchJsonTest.java  |  357 ----
 .../json/MessageToElasticSearchJsonTest.java    |  385 ++++
 .../test/resources/eml/bodyMakeTikaToFail.eml   | 1272 ++++++++++++++
 .../resources/eml/emailWith3Attachments.eml     |   50 +
 .../eml/emailWithNonIndexableAttachment.eml     | 1655 ++++++++++++++++++
 ...NonIndexableAttachmentWithoutAttachment.json |   96 +
 .../integration/SetMessagesMethodTest.java      |  175 ++
 .../attachment/nonIndexableAttachment.html      |  827 +++++++++
 15 files changed, 4875 insertions(+), 641 deletions(-)
----------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org