diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/new_notebook_line.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/new_notebook_line.xml
new file mode 100644
index 0000000000000000000000000000000000000000..630ac8e4e72f3dbc8df60c72959099c98dae5260
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/new_notebook_line.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_action</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_action</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>new_notebook_line</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>Add portal content</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>New Notebook Line</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DataNotebookModule_viewAddNotebookLineDialog</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/view.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46800e9fea23a82171093271def45f250cea60b8
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Line/view.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DataNotebookLine_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Module/view.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Module/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e5e6f8c75184af3715499437e449bf58cb4c7ed
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook%20Module/view.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_list</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_list</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DataNotebookModule_viewDataNotebookList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/new_notebook.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/new_notebook.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec83980661d366cf6c59a52ff779585c625721f7
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/new_notebook.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_action</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_action</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>new_notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>New Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DataNotebookModule_viewAddNotebookDialog</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/view.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..766c8adfc4251f5aec076aa812e320565c5760ba
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Data%20Notebook/view.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DataNotebook_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.py b/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.py
new file mode 100644
index 0000000000000000000000000000000000000000..4f224b1b30f5e664ebf36bc7081b63dda2a8d399
--- /dev/null
+++ b/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.py
@@ -0,0 +1,323 @@
+# -*- coding: utf-8 -*-
+
+from cStringIO import StringIO
+from Products.ERP5Type.Globals import  PersistentMapping
+from OFS.Image import Image as OFSImage
+
+import sys
+import ast
+import types
+
+mime_type = 'text/plain'
+# IPython expects 2 status message - 'ok', 'error'
+status = u'ok'
+ename, evalue, tb_list = None, None, None
+
+def Base_compileJupyterCode(self, jupyter_code, old_local_variable_dict):
+  """
+    Function to execute jupyter code and update the local_varibale dictionary.
+    Code execution depends on 'interactivity', a.k.a , if the ast.node object has
+    ast.Expr instance(valid for expressions) or not.
+    
+    old_local_variable_dict should contain both variables dict and modules imports.
+    Here, imports dict is key, value pair of modules and their name in sys.path,
+    executed separately everytime before execution of jupyter_code to populate
+    sys modules beforehand.
+
+    For example :
+    old_local_variable_dict = {
+                                'imports': {'numpy': 'np', 'sys': 'sys'},
+                                'variables': {'np.split': <function split at 0x7f4e6eb48b90>}
+                                }
+
+    The behaviour would be similar to that of jupyter notebook:-
+    ( https://github.com/ipython/ipython/blob/master/IPython/core/interactiveshell.py#L2954 )
+    Example:
+
+      code1 = '''
+      23
+      print 23 #Last node not an expression, interactivity = 'last'
+      '''
+      out1 = '23'
+
+      code2 = '''
+      123
+      12 #Last node an expression, interactivity = 'none'
+      '''
+      out2 = '12'
+
+  """
+  # Updating global variable mime_type to its original value
+  # Required when call to Base_displayImage is made which is changing
+  # the value of gloabl mime_type
+  # Same for status, ename, evalue, tb_list
+  global mime_type, status, ename, evalue, tb_list
+  mime_type = 'text/plain'
+  status = u'ok'
+  ename, evalue, tb_list = None, None, None
+
+  # Other way would be to use all the globals variables instead of just an empty
+  # dictionary, but that might hamper the speed of exec or eval.
+  # Something like -- g = globals(); g['context'] = self;
+  g = {}
+
+  # Saving the initial globals dict so as to compare it after code execution
+  globals_dict = globals()
+  g['context'] = self
+  result_string = ''
+  # Update globals dict and use it while running exec command
+  g.update(old_local_variable_dict['variables'])
+
+  # XXX: The focus is on 'ok' status only, we're letting errors to be raised on
+  # erp5 for now, so as not to hinder the transactions while catching them.
+  # TODO: This can be refactored by using client side error handling instead of
+  # catching errors on server/erp5.
+  local_variable_dict = old_local_variable_dict
+
+  # Execute only if jupyter_code is not empty
+  if jupyter_code:
+  
+    # Create ast parse tree
+    ast_node = ast.parse(jupyter_code)
+    # Get the node list from the parsed tree
+    nodelist = ast_node.body
+
+    # Handle case for empty nodelist(in case of comments as jupyter_code)
+    if nodelist:
+      # Import all the modules from local_variable_dict['imports']
+      # While any execution, in locals() dict, a module is saved as:
+      # code : 'from os import path'
+      # {'path': <module 'posixpath'>}
+      # So, here we would try to get the name 'posixpath' and import it as 'path'
+      for k, v in old_local_variable_dict['imports'].iteritems():
+        import_statement_code = 'import %s as %s'%(v, k)
+        exec(import_statement_code, g, g)
+      
+      # If the last node is instance of ast.Expr, set its interactivity as 'last'
+      # This would be the case if the last node is expression
+      if isinstance(nodelist[-1], ast.Expr):
+        interactivity = "last"
+      else:
+        interactivity = "none"
+
+      # Here, we define which nodes to execute with 'single' and which to execute
+      # with 'exec' mode.
+      if interactivity == 'none':
+        to_run_exec, to_run_interactive = nodelist, []
+      elif interactivity == 'last':
+        to_run_exec, to_run_interactive = nodelist[:-1], nodelist[-1:]
+
+      old_stdout = sys.stdout
+      result = StringIO()
+      sys.stdout = result
+
+      # Execute the nodes with 'exec' mode
+      for node in to_run_exec:
+        mod = ast.Module([node])
+        code = compile(mod, '<string>', "exec")
+        exec(code, g, g)
+
+      # Execute the interactive nodes with 'single' mode
+      for node in to_run_interactive:
+        mod = ast.Interactive([node])
+        code = compile(mod, '<string>', "single")
+        exec(code, g, g)
+
+      # Letting the code fail in case of error while executing the python script/code
+      # XXX: Need to be refactored so to acclimitize transactions failure as well as
+      # normal python code failure and show it to user on jupyter frontend.
+      # Decided to let this fail silently in backend without letting the frontend
+      # user know the error so as to let tranasction or its error be handled by ZODB
+      # in uniform way instead of just using half transactions.
+
+      sys.stdout = old_stdout
+      result_string = result.getvalue()
+
+    # Difference between the globals variable before and after exec/eval so that
+    # we don't have to save unnecessary variables in database which might or might
+    # not be picklabale
+    local_variable_dict_new = {key: val for key, val in g.items() if key not in globals_dict.keys()}
+    local_variable_dict['variables'].update(local_variable_dict_new)
+
+    # Differentiate 'module' objects from local_variable_dict and save them as
+    # string in the dict as {'imports': {'numpy': 'np', 'matplotlib': 'mp']}
+    if 'variables' and 'imports' in local_variable_dict:
+      for key, val in local_variable_dict['variables'].items():
+        # Check if the val in the dict is ModuleType and remove it in case it is
+        if isinstance(val, types.ModuleType):
+          # Update local_variable_dict['imports'] dictionary with key, value pairs
+          # with key corresponding to module name as its imported and value as the
+          # module name being stored in sys.path
+          # For example : 'np': <numpy module at ...> -- {'np': numpy}
+          local_variable_dict['imports'][key] = val.__name__
+
+          # XXX: The next line is mutating the dict, beware in case any reference
+          # is made later on to local_variable_dict['variables'] dictionary
+          local_variable_dict['variables'].pop(key)
+
+  result = {
+    'result_string': result_string,
+    'local_variable_dict': local_variable_dict,
+    'status': status,
+    'mime_type': mime_type,
+    'evalue': evalue,
+    'ename': ename,
+    'traceback': tb_list,
+  }
+
+  return result
+
+def AddNewLocalVariableDict(self):
+  """
+  Function to add a new Local Variable for a Data Notebook
+  """
+  new_dict = PersistentMapping()
+  variable_dict = PersistentMapping()
+  module_dict = PersistentMapping()
+  new_dict['variables'] = variable_dict
+  new_dict['imports'] = module_dict
+  return new_dict
+
+def UpdateLocalVariableDict(self, existing_dict):
+  """
+  Function to update local_varibale_dict for a Data Notebook
+  """
+  new_dict = self.Base_addLocalVariableDict()
+  for key, val in existing_dict['variables'].iteritems():
+    new_dict['variables'][key] = val
+  for key, val in existing_dict['imports'].iteritems():
+    new_dict['imports'][key] = val
+  return new_dict
+
+def Base_displayImage(self, image_object=None):
+  """
+  External function to display Image objects to jupyter frontend.
+
+  XXX:  This function is intented to be called from Base_executeJupyter 
+        or Jupyter frontend.That's why printing string and returning None.
+        Also, it clears the plot for Matplotlib object after every call, so
+        in case of saving the plot, its essential to call Base_saveImage before
+        calling Base_displayImage.
+
+  Parameters
+  ----------
+  
+  image_object :Any image object from ERP5 
+                Any matplotlib object from which we can create a plot.
+                Can be <matplotlib.lines.Line2D>, <matplotlib.text.Text>, etc.
+  
+  Output
+  -----
+  
+  Prints base64 encoded string of the plot on which it has been called.
+
+  """
+  if image_object:
+
+    import base64
+    # Chanage global variable 'mime_type' to 'image/png'
+    global mime_type
+
+    # Image object in ERP5 is instance of OFS.Image object
+    if isinstance(image_object, OFSImage):
+      figdata = base64.b64encode(image_object.getData())
+      mime_type = image_object.getContentType()
+    else:
+      # For matplotlib objects
+      # XXX: Needs refactoring to handle cases
+
+      # Create a ByteFile on the server which would be used to save the plot
+      figfile = StringIO()
+      # Save plot as 'png' format in the ByteFile
+      image_object.savefig(figfile, format='png')
+      figfile.seek(0)
+      # Encode the value in figfile to base64 string so as to serve it jupyter frontend
+      figdata = base64.b64encode(figfile.getvalue())
+      mime_type = 'image/png'
+      # Clear the plot figures after every execution
+      image_object.close()
+
+    # XXX: We are not returning anything because we want this function to be called
+    # by Base_executeJupyter , inside exec(), and its better to get the printed string
+    # instead of returned string from this function as after exec, we are getting
+    # value from stdout and using return we would get that value as string inside
+    # an string which is unfavourable.
+    print figdata
+    return None
+
+def Base_saveImage(self, plot=None, reference=None, **kw):
+  """
+  Saves generated plots from matplotlib in ERP5 Image module
+
+  XXX:  Use only if bt5 'erp5_wendelin' installed
+        This function is intented to be called from Base_executeJupyter 
+        or Jupyter frontend.
+
+  Parameters
+  ----------
+  plot : Matplotlib plot object
+  
+  reference: Reference of Image object which would be generated
+             Id and reference should be always unique
+  
+  Output
+  ------
+  Returns None, but saves the plot object as ERP5 image in Image Module with
+  reference same as that of data_array_object.
+  
+  """
+
+  # As already specified in docstring, this function should be called from
+  # Base_executeJupyter or Jupyter Frontend which means that it would pass
+  # through exec and hence the printed result would be caught in a string and
+  # that's why we are using print and returning None.
+  if not reference:
+    print 'No reference specified for Image object'
+    return None
+  if not plot:
+    print 'No matplotlib plot object specified'
+    return None
+
+  filename = '%s.png'%reference
+  # Save plot data in buffer
+  buff = StringIO()
+  plot.savefig(buff, format='png')
+  buff.seek(0)
+  data = buff.getvalue()
+
+  import time
+  image_id = reference+str(time.time())
+  # Add new Image object in erp5 with id and reference
+  image_module = self.getDefaultModule(portal_type='Image')
+  image_module.newContent(
+    portal_type='Image',
+    id=image_id,
+    reference=reference,
+    data=data,
+    filename=filename)
+
+  return None
+
+def getError(self, previous=1):
+  """
+  Show error to the frontend and change status of code as 'error' from 'ok'
+  
+  Parameters
+  ----------
+  previous: Type - int. The number of the error you want to see.
+  Ex: 1 for last error
+      2 for 2nd last error and so on..
+
+  """
+  error_log_list = self.error_log._getLog()
+  if error_log_list:
+    if isinstance(previous, int):
+      # We need to get the object for last index of list
+      error = error_log_list[-previous]
+  global status, ename, evalue, tb_list
+  status = u'error'
+  ename = unicode(error['type'])
+  evalue = unicode(error['value'])
+  tb_list = [l+'\n' for l in error['tb_text'].split('\n')]
+
+  return None
diff --git a/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.xml b/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ed907282af3de0d08898ac8acd95b0dc3268dc4f
--- /dev/null
+++ b/bt5/erp5_data_notebook/ExtensionTemplateItem/portal_components/extension.erp5.JupyterCompile.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Extension Component" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>extension.erp5.JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Extension Component</string> </value>
+        </item>
+        <item>
+            <key> <string>sid</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple>
+                <string>W: 54,  2: Using the global statement (global-statement)</string>
+                <string>W: 94,  8: Use of exec (exec-used)</string>
+                <string>W:118,  8: Use of exec (exec-used)</string>
+                <string>W:124,  8: Use of exec (exec-used)</string>
+                <string>W:219,  4: Using the global statement (global-statement)</string>
+                <string>W:317,  2: Using the global statement (global-statement)</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>erp5</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>component_validation_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <none/>
+        <list>
+          <dictionary>
+            <item>
+                <key> <string>action</string> </key>
+                <value> <string>validate</string> </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>validated</string> </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ModuleTemplateItem/data_notebook_module.xml b/bt5/erp5_data_notebook/ModuleTemplateItem/data_notebook_module.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00d08060fa29b6e62e4c964b542ef00e94a44aed
--- /dev/null
+++ b/bt5/erp5_data_notebook/ModuleTemplateItem/data_notebook_module.xml
@@ -0,0 +1,96 @@
+<module>
+ <id>data_notebook_module</id>
+ <permission_list>
+  <permission type='tuple'>
+   <name>Access Transient Objects</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Access contents information</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Access session data</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Add portal content</name>
+   <role>Assignor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Add portal folders</name>
+   <role>Assignor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Change local roles</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Copy or Move</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Delete objects</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>List folder contents</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Modify portal content</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>View</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>View History</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+ </permission_list>
+ <portal_type>Data Notebook Module</portal_type>
+ <title>Data Notebooks</title>
+</module>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ac48ae10738fe87c3d5aa17be707a93df3288ad
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
@@ -0,0 +1,8 @@
+<allowed_content_type_list>
+ <portal_type id="Data Notebook">
+  <item>Data Notebook Line</item>
+ </portal_type>
+ <portal_type id="Data Notebook Module">
+  <item>Data Notebook</item>
+ </portal_type>
+</allowed_content_type_list>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml b/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ea12c849add897ba4a6ae6cea098876e2961b733
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
@@ -0,0 +1,8 @@
+<base_category_list>
+ <portal_type id="Data Notebook">
+  <item>source</item>
+ </portal_type>
+ <portal_type id="Data Notebook Module">
+  <item>business_application</item>
+ </portal_type>
+</base_category_list>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PortalTypePropertySheetTemplateItem/property_sheet_list.xml b/bt5/erp5_data_notebook/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b2f8ab5dfbc3dddf3585f669731e9eb639ded29e
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
@@ -0,0 +1,9 @@
+<property_sheet_list>
+ <portal_type id="Data Notebook">
+  <item>JupyterNotebook</item>
+  <item>Reference</item>
+ </portal_type>
+ <portal_type id="Data Notebook Line">
+  <item>JupyterNotebookLine</item>
+ </portal_type>
+</property_sheet_list>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Line.xml b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Line.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b11ed45536098f5fd16e7703168ff87a6a1cb086
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Line.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Contains code and the value returned by single line from Jupyter Notebook.</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Data Notebook Line</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Base Type</string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>XMLObject</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Module.xml b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Module.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e2a45b475a2172fdb991486cbd745553b59af4d
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook%20Module.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>folder_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addFolder</string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>module</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Data Notebook Module</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Base Type</string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>Folder</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_ui</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_ui</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook.xml b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d8c9858bd7c7503ceadde39c10bbeff4ab6050c
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Data%20Notebook.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addXMLObject</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Data Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Base Type</string> </value>
+        </item>
+        <item>
+            <key> <string>searchable_text_property_id</string> </key>
+            <value>
+              <tuple>
+                <string>title</string>
+                <string>description</string>
+                <string>reference</string>
+                <string>short_title</string>
+                <string>local_variable</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>XMLObject</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b98ee492d96e46c4431a56e88b924e48d4705423
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -0,0 +1,6 @@
+<workflow_chain>
+ <chain>
+  <type>Data Notebook</type>
+  <workflow>edit_workflow</workflow>
+ </chain>
+</workflow_chain>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c9b577a684fd84739234e6b0e7967c40ea8c69b
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Property Sheet" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>JupyterNotebook</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Sheet</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/local_varibale_property.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/local_varibale_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c09352fd3590ace16221067d183e4a770aafba38
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/local_varibale_property.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Standard Property" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>elementary_type/string</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>local_varibale_property</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Standard Property</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/process_property.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/process_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a8f3170931a8c74000fcd65e6e223851e7fd6cec
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebook/process_property.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Standard Property" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>elementary_type/string</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>process_property</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Standard Property</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6050b2d9b4e7bd5219f51095dc3e2ee1fa90cd5a
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Property Sheet" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>JupyterNotebookLine</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Sheet</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/mime_type_property.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/mime_type_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6322ef43ba344ebee8a8d27f3be5baa3903cfcf8
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/mime_type_property.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Standard Property" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>elementary_type/string</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>mime_type_property</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Standard Property</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_property.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0689212036fe8def5634167f86f4f178cdcbeccc
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_property.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Standard Property" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>elementary_type/string</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>notebook_code_property</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Standard Property</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_result_property.xml b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_result_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..33dcc901fc5d165b11c944a91f6d0aab9f93af84
--- /dev/null
+++ b/bt5/erp5_data_notebook/PropertySheetTemplateItem/portal_property_sheets/JupyterNotebookLine/notebook_code_result_property.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Standard Property" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>elementary_type/string</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>notebook_code_result_property</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Standard Property</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14e14e2ecdf67893d11051c4ffecc1f46ff90240
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>erp5_data_notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Data Notebook</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_addLocalVariableDict.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_addLocalVariableDict.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0a00f5399e464441c425dbb4f424be664900a319
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_addLocalVariableDict.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>AddNewLocalVariableDict</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_addLocalVariableDict</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_displayImage.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_displayImage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..da4c92920a3a8842f1f3969eb78ff1cd0559f6f4
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_displayImage.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>Base_displayImage</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_displayImage</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f32e70ae5844c8a8b2b1118949fa7eb0e416111
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Authenticated</string>
+                <string>Author</string>
+                <string>Manager</string>
+                <string>Owner</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+Python script to create Data Notebook or update existing Data Notebooks\n
+identifying notebook by reference from user.\n
+\n
+Expected behaviour from this script:-\n
+1. Return unauthorized message for non-developer user.\n
+2. Create new \'Data Notebook\' for new reference.\n
+3. Add new \'Data Notebook Line\'to the existing Data Notebook on basis of reference.\n
+4. Return python dictionary containing list of all notebooks for \'request_reference=True\'\n
+"""\n
+\n
+portal = context.getPortalObject()\n
+# Check permissions for current user and display message to non-authorized user \n
+if not portal.Base_checkPermission(\'portal_components\', \'Manage Portal\'):\n
+  return "You are not authorized to access the script"\n
+\n
+import json\n
+\n
+# Convert the request_reference argument string to their respeced boolean values\n
+request_reference = {\'True\': True, \'False\': False}.get(request_reference, False)\n
+\n
+# Return python dictionary with title and reference of all notebooks\n
+# for request_reference=True\n
+if request_reference:\n
+  data_notebook_list = portal.portal_catalog(portal_type=\'Data Notebook\')\n
+  notebook_detail_list = [{\'reference\': obj.getReference(), \'title\': obj.getTitle()} for obj in data_notebook_list]\n
+  return notebook_detail_list\n
+\n
+if not reference:\n
+  message = "Please set or use reference for the notebook you want to use"\n
+  return message\n
+\n
+# Take python_expression as \'\' for empty code from jupyter frontend\n
+if not python_expression:\n
+  python_expression = \'\'\n
+\n
+# Get Data Notebook with the specific reference\n
+data_notebook = portal.portal_catalog.getResultValue(portal_type=\'Data Notebook\',\n
+                      reference=reference)\n
+\n
+# Create new Data Notebook if reference doesn\'t match with any from existing ones\n
+if not data_notebook:\n
+  notebook_module = portal.getDefaultModule(portal_type=\'Data Notebook\')\n
+  data_notebook = notebook_module.DataNotebookModule_addDataNotebook(\n
+    title=title,\n
+    reference=reference,\n
+    batch_mode=True\n
+  )\n
+\n
+# Add new Data Notebook Line to the Data Notebook\n
+data_notebook_line = data_notebook.DataNotebook_addDataNotebookLine(\n
+  notebook_code=python_expression,\n
+  batch_mode=True\n
+)\n
+\n
+# Get active_process associated with data_notebook object\n
+process_id = data_notebook.getProcess()\n
+active_process = portal.portal_activities[process_id]\n
+# Add a result object to Active Process object\n
+result_list = active_process.getResultList()\n
+\n
+# Get local variables saves in Active Result, local varibales are saved as\n
+# persistent mapping object\n
+old_local_variable_dict = result_list[0].summary\n
+if not old_local_variable_dict:\n
+  old_local_variable_dict = context.Base_addLocalVariableDict()\n
+\n
+# Pass all to code Base_runJupyter external function which would execute the code\n
+# and returns a dict of result\n
+final_result = context.Base_runJupyter(python_expression, old_local_variable_dict)\n
+code_result = final_result[\'result_string\']\n
+new_local_variable_dict = final_result[\'local_variable_dict\']\n
+ename = final_result[\'ename\']\n
+evalue = final_result[\'evalue\']\n
+traceback = final_result[\'traceback\']\n
+status = final_result[\'status\']\n
+mime_type = final_result[\'mime_type\']\n
+\n
+# Call to function to update persistent mapping object with new local variables\n
+# and save the variables in the Active Result pertaining to the current Data Notebook\n
+new_dict = context.Base_updateLocalVariableDict(new_local_variable_dict)\n
+result_list[0].edit(summary=new_dict)\n
+\n
+result = {\n
+  u\'code_result\': code_result,\n
+  u\'ename\': ename,\n
+  u\'evalue\': evalue,\n
+  u\'traceback\': traceback,\n
+  u\'status\': status,\n
+  u\'mime_type\': mime_type\n
+}\n
+\n
+# Catch exception while seriaizing the result to be passed to jupyter frontend\n
+# and in case of error put code_result as None and status as \'error\' which would\n
+# be shown by Jupyter frontend\n
+try:\n
+  serialized_result = json.dumps(result)\n
+except UnicodeDecodeError:\n
+  result = {\n
+    u\'code_result\': None,\n
+    u\'ename\': u\'UnicodeDecodeError\',\n
+    u\'evalue\': None,\n
+    u\'traceback\': None,\n
+    u\'status\': u\'error\',\n
+    u\'mime_type\': mime_type\n
+  }\n
+  serialized_result = json.dumps(result)\n
+\n
+data_notebook_line.edit(notebook_code_result=code_result, mime_type=mime_type)\n
+\n
+return serialized_result\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>python_expression=None, reference=None, title=None, request_reference=False, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_executeJupyter</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_runJupyter.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_runJupyter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5eac91c6b62e34bee9b842afcdc19a2e07e17242
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_runJupyter.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>Base_compileJupyterCode</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_runJupyter</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_saveImage.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_saveImage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ce69e3e13c2ad3045026c03486d7f8dad84f553
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_saveImage.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>Base_saveImage</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_saveImage</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Base_saveImage</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_updateLocalVariableDict.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_updateLocalVariableDict.xml
new file mode 100644
index 0000000000000000000000000000000000000000..243f7f93af09c7519816ca27cf99be410c1f1be6
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_updateLocalVariableDict.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>UpdateLocalVariableDict</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_updateLocalVariableDict</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..28a9f8c5d3f9eca333b568f0e07ca0f5b32160d6
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Base_edit</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>my_notebook_code</string>
+                        <string>my_notebook_code_result</string>
+                        <string>my_mime_type</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebookLine_view</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>DataNotebookLine_view</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_view</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Data Notebook Line</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_mime_type.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_mime_type.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7d342e44332da683135bbc959887a878739ca1e
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_mime_type.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>editable</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_mime_type</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Mime Type</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e62a022adf0f8ddcb3b363b38c8c96b5c7b4fdac
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>editable</string>
+                <string>title</string>
+                <string>width</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_notebook_code</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_text_area_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Input</string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <int>40</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code_result.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code_result.xml
new file mode 100644
index 0000000000000000000000000000000000000000..75957e3f5f5d559ee38670513ceba2d6310a65b9
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookLine_view/my_notebook_code_result.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>editable</string>
+                <string>title</string>
+                <string>width</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_notebook_code_result</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_text_area_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Output</string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <int>40</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_addDataNotebook.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_addDataNotebook.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f1f56af17a5600824f38dc404317b74d59d2c813
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_addDataNotebook.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+Python script to add a new notebook to Data Notebook module.\n
+This script also concerns for assigning an Active Process for each data notebook\n
+created.\n
+"""\n
+from Products.CMFActivity.ActiveResult import ActiveResult\n
+\n
+# Comment out person in case addition of person required to Data Notebook object\n
+#person = context.ERP5Site_getAuthenticatedMemberPersonValue()\n
+\n
+# Create new ActiveProcess object and getting its id\n
+active_process = context.portal_activities.newActiveProcess()\n
+active_process_id = active_process.getId()\n
+\n
+# Creating new dictionary via external method to save results in ZODB\n
+new_dict = context.Base_addLocalVariableDict()\n
+# Add new ActiveResult object and add it to the activeprocess concerned with ...\n
+# Data Notebook in concern\n
+result = ActiveResult(summary=new_dict)\n
+active_process.activateResult(result)\n
+\n
+# Create new notebook\n
+notebook = context.newContent(\n
+    title=title,\n
+    reference=reference,\n
+    process=active_process_id,\n
+    portal_type=\'Data Notebook\'\n
+  )\n
+\n
+# Return notebook for batch_mode, used in tests\n
+if batch_mode:\n
+  return notebook\n
+\n
+# Add status message to be displayed after new notebook creation\n
+translateString = context.Base_translateString\n
+portal_status_message = translateString(\n
+  "New Notebook created"\n
+)\n
+\n
+# Redirect the notebook view with the status message being displayed\n
+return notebook.Base_redirect(\'view\',\n
+  keep_items=dict(portal_status_message=portal_status_message), **kw)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>title, reference, batch_mode=False, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebookModule_addDataNotebook</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b9eec7f9ddff58490aae7d1759078a80d7c74265
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>DataNotebookModule_addNotebook</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>your_title</string>
+                        <string>your_reference</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebookModule_viewAddNotebookDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>DataNotebookModule_viewaddNotebookDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_dialog</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>New Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_reference.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_reference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..039a88da2de4a33694ce77bca8621e386e9dc43e
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_reference.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_reference</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Reference</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_title.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_title.xml
new file mode 100644
index 0000000000000000000000000000000000000000..376a8ede57b5c5291fd41c3dcac4e49cf3ce30b7
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewAddNotebookDialog/your_title.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_title</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Title</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9866c1bad6e63e42bcb10d12b478e80f6a4af3a2
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Base_doSelect</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list>
+                        <string>listbox</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebookModule_viewDataNotebookList</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>DataNotebookModule_viewDataNotebookList</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_list</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Data Notebooks</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList/listbox.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList/listbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a7fbd417c9e7ae89f0be536784f2b61d03167fe8
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebookModule_viewDataNotebookList/listbox.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>columns</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>listbox</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>title</string>
+                          <string>Title</string>
+                        </tuple>
+                        <tuple>
+                          <string>reference</string>
+                          <string>Reference</string>
+                        </tuple>
+                        <tuple>
+                          <string>modification_date</string>
+                          <string>Modification Date</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_list_mode_listbox</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>Data Notebook</string>
+                          <string>Data Notebook</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Data Notebooks</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_addDataNotebookLine.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_addDataNotebookLine.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2e64fc33c277e82ef643f3ca19e7f0c9efa0d059
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_addDataNotebookLine.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+This python script concerns with creation of new notebook line which would\n
+have notebook_code from jupyter frontend as well as its executed result\n
+"""\n
+# Create new Data Notebook Line object\n
+notebook_line = context.newContent(\n
+    notebook_code=notebook_code,\n
+    notebook_code_result=notebook_code_result,\n
+    mime_type=mime_type,\n
+    portal_type="Data Notebook Line"\n
+  )\n
+\n
+# Return notebook_line object for batch mode, used in tests\n
+if batch_mode:\n
+  return notebook_line\n
+\n
+# Add status message to be displayed after new notebook line creation\n
+translateString = context.Base_translateString\n
+portal_status_message = translateString(\n
+  "New Notebook line created"\n
+)\n
+\n
+# Redirect the notebook_line view with the status message being displayed\n
+return notebook_line.Base_redirect(\'view\',\n
+  keep_items=dict(portal_status_message=portal_status_message), **kw)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>notebook_code, notebook_code_result=None, mime_type=\'text/plain\', batch_mode=False, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebook_addDataNotebookLine</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6c89e9922748331fc1448624ebf27a1ab569530
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Base_edit</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list>
+                        <string>listbox</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list>
+                        <string>listbox_notebook_code</string>
+                        <string>listbox_notebook_code_result</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>my_title</string>
+                        <string>my_reference</string>
+                        <string>my_source_title</string>
+                        <string>my_process</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>DataNotebook_view</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>DataNotebook_view</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_view</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Data Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35739c80230b3dd6ec873784cbe931495d3031b5
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>columns</string>
+                <string>sort</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>listbox</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>notebook_code</string>
+                          <string>Input</string>
+                        </tuple>
+                        <tuple>
+                          <string>notebook_code_result</string>
+                          <string>Output</string>
+                        </tuple>
+                        <tuple>
+                          <string>modification_date</string>
+                          <string>Modification Date</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_list_mode_listbox</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>sort</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>modification_date</string>
+                          <string>ASC</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Notebook Line</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4fb4847436447be548e247c18e8afa233d52f159
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>default</string>
+                <string>editable</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>listbox_notebook_code</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_editor_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+python: cell.getNotebookCode().replace(\'\\n\', \'<br/>\')
+
+]]></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code_result.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code_result.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6972c5c96ecc7548478fb32dfba689ac66e0774
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/listbox_notebook_code_result.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>default</string>
+                <string>editable</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>listbox_notebook_code_result</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_editor_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+python: cell.getNotebookCodeResult().replace(\'\\n\', \'<br/>\')
+
+]]></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_process.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_process.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35b0f25bb958fcbe3b471805fac370f89205d538
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_process.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>enabled</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_process</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Process</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_reference.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_reference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef7c61be55720d51b95534147358436bcf4e64f7
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_reference.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_reference</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Reference</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_source_title.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_source_title.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8f92d41f33bd12e83f469912128dd21055d1eed5
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_source_title.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>base_category</string>
+                <string>catalog_index</string>
+                <string>enabled</string>
+                <string>portal_type</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_source_title</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>base_category</string> </key>
+                    <value> <string>source</string> </value>
+                </item>
+                <item>
+                    <key> <string>catalog_index</string> </key>
+                    <value> <string>title</string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_relation_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>Person</string>
+                          <string>Person</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Client</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_title.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_title.xml
new file mode 100644
index 0000000000000000000000000000000000000000..465214f278343d3096182ef6cc7fc96ab8de0b4c
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/DataNotebook_view/my_title.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_title</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_string_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Title</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Proof_of_concept%20Notebook.ipynb.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Proof_of_concept%20Notebook.ipynb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0b533d699d3ee1832c2909b2b056b813fc1e7bd
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Proof_of_concept%20Notebook.ipynb.xml
@@ -0,0 +1,739 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_EtagSupport__etag</string> </key>
+            <value> <string>ts48518614.99</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>Proof_of_concept Notebook.ipynb</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/octet-stream</string> </value>
+        </item>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>size</string> </key>
+            <value> <int>121695</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Proof of concept Notebook</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Pdata" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+{\n
+ "cells": [\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 1,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "name": "stdout",\n
+     "output_type": "stream",\n
+     "text": [\n
+      "Your erp5_url is http://10.0.87.104:2150/erp5/Base_executeJupyter. \\n",\n
+      "Please enter reference in next cell. "\n
+     ]\n
+    }\n
+   ],\n
+   "source": [\n
+    "%erp5_url http://10.0.87.104:2150/erp5/Base_executeJupyter"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 2,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "name": "stdout",\n
+     "output_type": "stream",\n
+     "text": [\n
+      "Your notebook_set_reference is wendelin_test_ayush_001. \\n",\n
+      "Please enter user in next cell. "\n
+     ]\n
+    }\n
+   ],\n
+   "source": [\n
+    "%notebook_set_reference wendelin_test_ayush_001"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 3,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "name": "stdout",\n
+     "output_type": "stream",\n
+     "text": [\n
+      "Your erp5_user is zope. \\n",\n
+      "Please enter password in next cell. "\n
+     ]\n
+    }\n
+   ],\n
+   "source": [\n
+    "%erp5_user zope"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 4,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "name": "stdout",\n
+     "output_type": "stream",\n
+     "text": [\n
+      "Your erp5_password is insecure. \\n",\n
+      "Please proceed"\n
+     ]\n
+    }\n
+   ],\n
+   "source": [\n
+    "%erp5_password insecure"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 5,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "import numpy as np\\n",\n
+    "from matplotlib import pyplot as plt"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 6,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "(<module \'matplotlib.pyplot\' from \'/opt/slapgrid/7fa667833bc0716c6bb7dd8876c55d52/develop-eggs/matplotlib-1.4.3-py2.7-linux-x86_64.egg/matplotlib/pyplot.pyc\'>, <module \'numpy\' from \'/opt/slapgrid/7fa667833bc0716c6bb7dd8876c55d52/develop-eggs/numpy-1.9.2-py2.7-linux-x86_64.egg/numpy/__init__.pyc\'>)\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "plt, np"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 7,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ,  1.2,  1.4,  1.6,  1.8,  2. ,\\n",\n
+       "        2.2,  2.4,  2.6,  2.8,  3. ,  3.2,  3.4,  3.6,  3.8,  4. ,  4.2,\\n",\n
+       "        4.4,  4.6,  4.8])\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "t = np.arange(0., 5., 0.2)\\n",\n
+    "t"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 9,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "plt.clf()"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 10,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X2YlXWd+PHPGQaGRwERYlBJQfEBjQcFIaxkCyQtf64CSgmxP1y82vUhfAC1TAhpf5AFi9n6UBKgsqxIrpFpPuDDsgoKmF2WKCxIwpiIiEAwwMz5/eEyl9MwCDPM98yB1+u65urie5/78DneAfOe+77PyWSz2WwAAAAkUJDrAQAAgMOHAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgGQECAAAkI0AAAIBkBAgAAJCMAAEAAJIRIAAAQDICZB+2bdsWt956awwaNCiOPPLIKCgoiJkzZ+73/h9++GGMHj062rZtG82bN4+/+7u/i+XLl9fhxAAAUL8JkH3YsGFDTJw4MVasWBHdu3ePiIhMJrNf+5aXl8f5558fc+bMiauvvjqmTJkS7733XpxzzjmxcuXKuhwbAADqrcJcD1CfdejQId59991o165dLF26NHr16rXf+86bNy9efPHFmDdvXlx00UURETF06NDo0qVL3HrrrfHAAw/U1dgAAFBvOQOyD40aNYp27dpFREQ2mz2gfefNmxft27eviI+IiKOOOiqGDh0a//mf/xm7du06qLMCAEA+ECB1ZPny5dGzZ88q67169Yq//vWv8eabb+ZgKgAAyC0BUkdKSkqiuLi4yvqetfXr16ceCQAAck6A1JEdO3ZEUVFRlfXGjRtHRMT27dtTjwQAADnnJvQ60qRJkygtLa2yvmPHjortf+v999+PJ554Io477ri9bgcAILe2b98ea9asiXPPPTeOOuqoXI+TlwRIHSkuLt7rZVYlJSUR8fE7bP2tJ554Ii677LI6nw0AgNq5//7745vf/Gaux8hLAqSOdO/ePV544YXIZrOVPjtk8eLF0axZs+jSpUuVfY477riI+Pj/0KecckqqUcmhMWPGxNSpU3M9Bok43ocXx/vw4ngfPv70pz/FZZddVvF9GwdOgBwE7777bnz44YdxwgknRGHhx/9JBw8eHPPmzYv58+fHxRdfHBEfX2L10EMPxde//vVo2LBhlefZc9nVKaecstd30OLQ07JlS8f6MOJ4H14c78OL4334cbl8zQmQT/HTn/40Pvzww4rLqR599NFYu3ZtRERcffXVccQRR8SNN94Ys2bNijVr1kTHjh0j4uMA6dOnT/zDP/xD/PGPf4w2bdrEz372s8hmszFhwoScvR4AAMglAfIpfvzjH8fbb78dERGZTCZ+9atfxfz58yOTycSIESPiiCOOiEwmU+kyq4iIgoKCeOyxx+KGG26I6dOnx/bt26N3794xa9asOPHEE3PxUgAAIOcEyKdYvXr1pz5mxowZMWPGjCrrrVq1invvvTfuvffeuhgNAADyjs8BgRwaNmxYrkcgIcf78OJ4H14cb9h/AgRyyD9YhxfH+/DieB9eHG/YfwIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAAkhEgAABAMgIEAABIRoAAAADJCBAAACAZAQIAACQjQAAAgGQECAAAkIwAAQAA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MmRI/N//+39j586d8frrr8f69etrNAsAABwK8j5ABgwYEMuWLYsnn3wyWrduHZdccklkMpmIiNi0aVN84QtfiP/zf/7PAT/vkiVLYu7cuXH77bfHtddeGxERw4cPj9NOOy3Gjh0bixYtqnbfl156KSZOnBg/+clP4pprrqnZCwMAgENQXgfIjh074u67744ePXrEd77znSrbW7duHdOmTavRc8+bNy8KCwtj9OjRFWtFRUUxatSouPnmm2PdunVx9NFH73XfadOmRXFxcVxzzTWRzWZj27Zt0bx58xrNAQAAh5K8vgekqKgobrzxxlixYsVBf+7ly5dHly5dqoTDnsu5Xn311Wr3ffrpp+PMM8+MadOmRdu2beOII46IDh06xJ133nnQ5wQAgHyS12dAMplMdO3aNdasWXPQn7ukpCSKi4urrO9Zq+5ejk2bNsXGjRtj0aJF8cwzz8T48eOjY8eOcd9998VVV10VDRs2rHRWBQAADid5fQYkImLSpElx1113xZNPPnlQn3f79u1RVFRUZb1x48YV2/dm69atERGxcePG+MUvfhHXXnttDB48OH7zm9/EqaeeGrfddttBnRMAAPJJXp8BiYj46U9/Gm3atIlzzz03OnXqFMcff3w0adKkyuMeffTRA3reJk2aVHy+yCft2LGjYnt1+0VENGrUKAYPHlyxnslkYujQoTF+/Ph455134phjjjmgeQAA4FCQ9wHyhz/8ITKZTHTs2DF2794db731VpXH7HlXrANRXFy818usSkpKIiKiQ4cOe93vyCOPjKKiojjyyCOr/L7t2rWLiI8v09pXgIwZMyZatmxZaW3YsGExbNiwA3oNAADU3Jw5c2LOnDmV1jZv3pyjaQ4deR8gdXH/R0REjx494tlnn40tW7ZEixYtKtYXL14cERHdu3ff634FBQXRvXv3WLp0aezatSsaNmxYsW1P0LRt23afv/fUqVOjZ8+etX0JAADUwt5+ALxs2bI444wzcjTRoSHv7wGpK4MHD46ysrK45557KtZKS0tjxowZ0adPn4q34F27dm288cYblfa99NJLY/fu3TFz5syKtR07dsQDDzwQXbt2jfbt26d5EQAAUM/k/RmQiIjdu3fHQw89FAsXLowNGzbED37wgzj99NNj8+bN8fTTT0e/fv3iM5/5zAE9Z+/evWPIkCFx0003xXvvvRedO3eOmTNnxtq1a2PGjBkVjxsxYkQ8//zzUV5eXrF2xRVXxM9//vP453/+53jzzTfj2GOPjdmzZ8ef//zn+PWvf33QXjcAAOSbvA+QDz/8MM4999x4+eWXo1mzZrFt27a46qqrIiKiWbNmcfXVV8fw4cPjX/7lXw74uWfNmhW33HJLzJ49OzZt2hTdunWLBQsWxNlnn13xmEwmU+Vej8aNG8czzzwTY8eOjfvuuy+2bdsWPXr0iN/85jcxYMCA2r1gAADIY3kfIDfeeGP88Y9/jMcffzx69uxZcaN3RERhYWEMHjw4fvvb39YoQIqKimLKlCkxZcqUah+zcOHCva63bdu20pkSAADgELgH5JFHHokrr7wyBg4cuNftJ554YqxevTrxVAAAwN7kfYBs3rw5OnXqVO32Xbt2xe7duxNOBAAAVCfvA6RTp06xdOnSarc/+eSTceqppyacCAAAqE7eB8g//uM/xn333Rdz586ttL5jx4747ne/G7/97W/jiiuuyNF0AADAJ+X9TehXX311vP766zFs2LCKTw//xje+ERs3boyysrK44oor4vLLL8/xlAAAQMQhECAFBQVx7733xre+9a146KGH4q233ory8vLo3LlzXHLJJfHFL34x1yMCAAD/K+8DZI+zzz670udzAAAA9c8hEyAbN26Mp59+OtasWRMREccdd1x8+ctfjjZt2uR2MAAAoMIhESC33nprTJ48OXbu3FlpvVGjRnHDDTfExIkTczQZAADwSXn/LlgTJ06MiRMnxoABA+K3v/1trFy5MlauXBmPPfZYfOUrX4lJkybFD37wg1yPCQAAxCFwBuSuu+6Kr33ta/Hoo49WWu/UqVOce+65ccEFF8Rdd90V3//+93M0IQAAsEfenwHZvHlzfPWrX93rtkwmE1/96lfjo48+SjwVAACwN3kfIP369YvFixdXu33JkiXeHQsAAOqJvA+Qu+66K1588cX4zne+EytXrozy8vIoLy+Pt956K6655pp46aWX4q677sr1mAAAQOThPSAtWrSITCYT2Wy2Yq2srCymT58e06dPj4KCj5uqvLw8IiIaN24cn/vc51yGBQAA9UDeBcjFF198wPtkMpk6mAQAADhQeRcgv/zlL3M9AgAAUEN5fw8IAACQP/LuDMjeZLPZeP7552P16tWxadOmSveH7HHttdfmYDIAAOCT8j5AXn311Rg6dGisXLlyn48TIAAAkHt5HyCXX355bNiwIe6+++7o3bt3tGzZMtcjAQAA1cj7AHn99ddjwoQJ8Y//+I+5HgUAAPgUeX8T+gknnOBtdgEAIE/kfYBMmDAh7rzzznjnnXdyPQoAAPAp8v4SrIsuuii2b98eJ510Unz5y1+OY489Nho0aFDlcdOnT8/BdAAAwCflfYA899xz8e1vfzu2b98eCxYsqPZxAgQAAHIv7y/Buuqqq6Jly5bxxBNPxKZNm6K8vHyvXwAAQO7l/RmQlStXxr/8y7/EgAEDcj0KAADwKfL+DMipp54aH330Ua7HAAAA9kPeB8jtt98ed911VyxevDjXowAAAJ8i7y/B+vGPfxxHHHFEfP7zn49TTz01OnbsuNd3wXr00UdzMB0AAPBJeR8gf/jDHyKTycSxxx4bW7Zsiddff73KY3xQIQAA1A95HyBr1qzJ9QgAAMB+yvt7QAAAgPyR92dA1q5du1+P69ixYx1PAgAAfJq8D5Djjjuu2m2ZTCay2WxkMpkoKytLNxQAALBXeR8g9913X5W1srKyePvtt2PmzJnRrl27uPLKK3MwGQAA8LfyPkBGjhxZ7bZx48bFWWedFR9++GG6gQAAgGod0jehN2vWLP7hH/4hpk2blutRAACAOMQDJCKivLw8SkpKcj0GAAAQh8AlWNX56KOP4rnnnosf/ehH0aNHj1yPAwAAxCEQIAUFBRXvdrU3HTt2jJ/97GeJpwIAAPYm7wPk+9//fpW1TCYTrVu3jhNOOCEGDhwYhYV5/zIBAOCQkPffmY8fPz7XIwAAAPvpkL8JHQAAqD/y/gxIRMQf//jHmDFjRqxevTo2bdpU6X6QPZ+E/swzz+RwQgAAIOIQCJDZs2fHyJEjo1GjRnHSSSdFq1atcj0SAABQjbwPkPHjx0ePHj3i8ccfj6OOOirX4wAAAPuQ9/eArF+/PkaNGiU+AAAgD+R9gJx++umxfv36XI8BAADsh7wPkJ/85Cfx85//PBYtWpTrUQAAgE+R9/eATJ48OVq1ahVf+MIXomvXrtGxY8do0KBBlcc9+uijOZgOAAD4pLwPkD/84Q+RyWSiY8eOsWXLlnj99derPCaTyeRgMgAA4G/lfYCsWbMm1yMAAAD7Ke/vAQEAAPKHAAEAAJIRIAAAQDICBAAASEaAAAAAyQgQAAAgmbx/G9493nnnnXj++edjw4YNcdFFF8Wxxx4bZWVlsXnz5jjiiCOisPCQeakAAJC38v4MSDabjTFjxsTxxx8fl112WVx77bXx1ltvRUTEli1b4rOf/WzccccdOZ4SAACIOAQC5Ec/+lFMnz49brjhhnjyyScjm81WbGvVqlVcfPHFMX/+/BxOCAAA7JH3AXLvvffG8OHD44c//GF069atyvbTTz89VqxYkYPJAACAv5X3AfLnP/85+vXrV+32Zs2axUcffZRwIgAAoDp5HyBt27aNtWvXVrt92bJl0bFjx4QTAQAA1cn7ALn44ovj7rvvjlWrVkUmk6m07Xe/+1388pe/jCFDhuRoOgAA4JPyPkDGjx8fxcXF0b179xgxYkREREyZMiX69esXgwYNis997nNx880353hKAAAg4hAIkFatWsWLL74Y48aNi3feeScaN24czz33XGzevDnGjx8fL7zwQjRr1izXYwIAAHGIfBBh06ZN43vf+15873vfy/UoAADAPuT9GRAAACB/HBJnQNasWRMzZ86M1atXx6ZNmyp9GOEejz76aA4mAwAAPinvA2TOnDkxYsSIKCsri1atWsURRxxR5TF/++5YAABAbuR9gNx0001x8sknx8MPPxxdunTJ9TgAAMA+5P09IO+//358+9vfFh8AAJAH8j5Aevfuvc9PQgcAAOqPvA+Qf/3Xf437778/HnrooVyPAgAAfIq8vwfk9NNPj9tuuy0uvfTSuPzyy+OYY46JBg0aVGzPZrORyWTitddey+GUAABAxCEQID/72c/iyiuvjCZNmkSnTp2iZcuWVR7jXbAAAKB+yPsA+eEPfxif//zn4ze/+c1e4wMAAKg/8v4ekM2bN8dll10mPgAAIA/kfYB86Utfij/84Q+5HgMAANgPeR8g//Zv/xbPPfdcTJ48OTZu3HhQn7u0tDTGjRsXHTp0iKZNm0afPn3iqaeeOuDnGTBgQBQUFMRVV111UOcDAIB8k/cBcuqpp8b//M//xE033RRt27aNZs2aRYsWLaJFixZxxBFHVPxvTYwcOTKmTp0aw4cPj+nTp0eDBg3ivPPOi0WLFu33c8yfPz9eeumliHAzPAAA5P1N6BdffPGnPqYm3/gvWbIk5s6dG7fffntce+21ERExfPjwOO2002Ls2LH7FSE7duyI6667Lm688ca45ZZb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JCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBsg+lpaUxbty46NChQzRt2jT69OkTTz311H7tu27duhg6dGi0bt06WrZsGRdeeGGsXr26jicGAID6TYDsw8iRI2Pq1KkxfPjwmD59ejRo0CDOO++8WLRo0T7327p1a/Tv3z9eeOGF+O53vxsTJkyI5cuXx5e+9KX44IMPEk0PAAD1jwCpxpIlS2Lu3Lnx//7f/4vJkyfH5ZdfHs8880x89rOfjbFjx+5z35/97GexcuXKWLBgQVx//fXxne98J373u99FSUlJ/PjHP070CsgHc+bMyfUIJOR4H14c78OL4w37T4BUY968eVFYWBijR4+uWCsqKopRo0bFiy++GOvWrdvnvr17944zzjijYu2kk06KL3/5y/Ef//EfdTo3+cU/WIcXx/vw4ngfXhxv2H8CpBrLly+PLl26RPPmzSut9+rVKyIiXn311b3uV15eHq+99lqceeaZVbb16tUrVq1aFdu2bTv4AwMAQB4QINUoKSmJ4uLiKut71tavX7/X/T744IPYuXNnjfYFAIBDnQCpxvbt26OoqKjKeuPGjSu2V7dfRNRoXwAAONQV5nqA+qpJkyZRWlpaZX3Hjh0V26vbLyJqtO+eMPnTn/504AOTlzZv3hzLli3L9Rgk4ngfXhzvw4vjffjY832aHyjXnACpRnFx8V4vlSopKYmIiA4dOux1vyOPPDKKiooqHncg+65ZsyYiIi677LKajEye+uSbFXDoc7wPL4734cXxPrysWbMm+vXrl+sx8pIAqUaPHj3i2WefjS1btkSLFi0q1hcvXhwREd27d9/rfgUFBXH66afHyy+/XGXb4sWLo3PnztGsWbO97nvuuefG/fffH8cdd1y1Z0kAAMid7du3x5o1a+Lcc8/N9Sh5K5PNZrO5HqI+WrJkSfTp0yd+9KMfxXXXXRcRH19Wddppp0Xbtm3jv//7vyMiYu3atfHXv/41Tj755Ip9p0yZEjfeeGO8/PLLFT8NWbFiRZx22mlxww03xA9/+MP0LwgAAOoBAbIPl1xySfzqV7+KMWPGROfOnWPmzJnxyiuvxNNPPx1nn312REScc8458fzzz0d5eXnFflu3bo0ePXrEli1b4vrrr4/CwsL4yU9+EtlsNl599dVo06ZNrl4SAADklEuw9mHWrFlxyy23xOzZs2PTpk3RrVu3WLBgQUV8RERkMpnIZDKV9mvevHk8++yzMWbMmLjtttuivLw8+vfvH1OnThUfAAAc1pwBAQAAkvE5IAAAQDICJIHS0tIYN25cdOjQIZo2bRp9+vSJp556ar/2XbduXQwdOjRat24dLVu2jAsvvDBWr15dxxNTGzU93vPnz49LLrkkOnXqFM2aNYuTTz45rr/++ti8eXOCqamp2vz5/qQBAwZEQUFBXHXVVXUwJQdLbY/33Llzo2/fvtG8efNo3bp19OvXLxYuXFiHE1MbtTneTz31VPTv3z/atm0brVu3jrPOOivuv//+Op6Ymtq2bVvceuutMWjQoDjyyCOjoKAgZs6cud/7f/jhhzF69Oho27ZtNG/ePP7u7/4uli9fXocT5zcBksDIkSNj6tSpMXz48Jg+fXo0aNAgzjvvvFi0aNE+99u6dWv0798/Xnjhhfjud78bEyZMiOXLl8eXvvSl+OCDDxJNz4Gq6fG+4oorYsWKFTFixIi44447YtCgQfHTn/40+vbtW/EhltQ/NT3enzR//vx46aWXIiKq3FNG/VKb4z1+/Pj4xje+EZ/97Gdj6tSpcdttt0W3bt32+plT1A81Pd6PPvpoDBw4MHbv3h0TJkyISZMmRZMmTWLEiBExbdq0RNNzIDZs2BATJ06MFStWVHzUwv7+fVxeXh7nn39+zJkzJ66++uqYMmVKvPfee3HOOefEypUr63Ls/JWlTi1evDibyWSyP/7xjyvWduzYkT3hhBOyn//85/e57+TJk7OZTCb7yiuvVKy98cYb2cLCwuzNN99cZzNTc7U53s8991yVtVmzZmUzmUz25z//+UGfldqrzfHeY/v27dnjjjsue9ttt2UzmUz2qquuqqtxqaXaHO8XX3wxW1BQkJ02bVpdj8lBUpvjPWDAgOwxxxyT3blzZ8Xa7t27syeccEK2W7dudTYzNVdaWpr9y1/+ks1ms9lXXnklm8lksjNnztyvfefOnZvNZDLZhx9+uGJtw4YN2datW2e/8Y1v1Mm8+c4ZkDo2b968KCwsjNGjR1esFRUVxahRo+LFF1+MdevW7XPf3r17V/pk1ZNOOim+/OUvx3/8x3/U6dzUTG2O9xe/+MUqaxdeeGFERLzxxhsHf1hqrTbHe48pU6ZERFR83hD1V22O97Rp06K4uDiuueaayGazsXXr1hQjUwu1Od4fffRRtGrVKho2bFix1qBBg2jTpk00bdq0TuemZho1ahTt2rWLiIjsAb4/07x586J9+/Zx0UUXVawdddRRMXTo0PjP//zP2LVr10Gd9VAgQOrY8uXLo0uXLtG8efNK67169YqIiFdffXWv+5WXl8drr70WZ555ZpVtvXr1ilWrVsW2bdsO/sDUSk2Pd3XefffdiPj4LzLqn9oe77Vr18bkyZNj8uTJ0bhx4zqbk4OjNsf76aefjjPPPDOmTZsWbdu2jSOOOCI6dOgQd955Z53OTM3V5nj3798/Xn/99fj+978fK1eujFWrVsXEiRNj2bJlMXbs2Dqdm/SWL18ePXv2rLLeq1ev+Otf/xpvvvlmDqaq33wOSB0rKSmJ4uLiKut71qq79veDDz6InTt3fuq+J5544kGcltqq6fGuzuTJk6OwsDAGDx58UObj4Krt8b7uuuuiZ8+eMXTo0DqZj4Orpsd706ZNsXHjxli0aFE888wzMX78+OjYsWPcd999cdVVV0XDhg0r/ZSd+qE2f75vueWWWL16dUyaNCluu+22iIho2rRpPPzww/H1r3+9bgYmZ0pKSuKcc86psv7J/6907do18VT1mwCpY9u3b4+ioqIq63t+2rl9+/Zq94uIGu1L7tT0eO/Ngw8+GPfdd1+MGzcuOnfufNBm5OCpzfFeuHBhzJ8/P5YsWVJn83Fw1fR477ncauPGjTF37twYMmRIRERcfPHFcfrpp8dtt90mQOqh2vz5btSoUZx44okxZMiQuOiii2L37t1xzz33xDe/+c148skn46yzzqqzuUlvx44dvl87QAKkjjVp0iRKS0urrO95V6MmTZpUu19E1Ghfcqemx/tvvfDCCzFq1KgYNGhQTJo06aDOyMFT0+O9e/fuuPrqq2PEiBGV7vGifqvt3+eNGjWqdDYzk8nE0KFDY/z48fHOO+/EMcccUwdTU1O1+fv8yiuvjMWLF1d6G9ahQ4dG165d45prrql41zsODQfr3/7DiXtA6lhxcfFeT9OWlJRERESHDh32ut+RRx4ZRUVFFY87kH3JnZoe70/6/e9/HxdccEF87nOfi3nz5kVBgT+m9VVNj/esWbPizTffjNGjR8eaNWsqviI+vnn17bff9hOzeqi2f5+3adOmytt67rnpddOmTQd5Wmqrpsd7586d8Ytf/CK+9rWvVVovLCyMQYMGxSuvvBK7d+8++AOTMwfj3/7Dje9s6liPHj3izTffjC1btlRaX7x4cURExXtN/62CgoI4/fTT4+WXX66ybfHixdG5c+do1qzZwR+YWqnp8d5j1apVMWjQoGjfvn089thj3i2lnqvp8f7zn/8cu3btin79+kWnTp0qviI+jpPjjz8+nnzyybodngNWm7/Pu3fvHhs2bKjybjh7vmlp27ZtHUxMbdT0eG/cuDHKysqirKysyrZdu3ZFeXn5XreRv7p37x7Lli2r8u5ZixcvjmbNmkWXLl1yNFn9JUDq2ODBg6OsrCzuueeeirXS0tKYMWNG9OnTJ44++uiI+PjdcP72rVYHDx4cL7/8cixdurRibcWKFbFw4cKKa4ipX2pzvN99990YOHBgFBYWxhNPPBFt2rRJOjsHrqbH+9JLL41HHnmk0tevfvWriIg4//zz45FHHonevXunfTF8qtr8+b700ktj9+7dlT5ZeceOHfHAAw9E165do3379mleBPutpse7Xbt20apVq5g/f36l4Ny6dWv8+te/jlNOOWWv9wuQH95999144403Kp3FGjx4cPzlL3+J+fPnV6y9//778dBDD8XXv/71Sm/HzP/K8eeQHBaGDh2abdiwYXbs2LHZu+++O/v5z38+26hRo+wLL7xQ8ZgvfelL2UwmU2m/LVu2ZE844YTsZz7zmeyPfvSj7NSpU7PHHnts9phjjsm+//77qV8G+6mmx7tbt27ZTCaTHTduXHb27NmVvp588snUL4P9VNPjvTc+iLD+q+nx3r59e/a0007LNmrUKHvDDTdkp0+fnu3Vq1e2YcOG2ccffzz1y2A/1fR4T5o0KZvJZLI9e/bMTps2LXv77bdnTznllGxBQUH2wQcfTP0y2E933HFHduLEidlvf/vb2Uwmk7344ouzEydOzE6cODG7efPmbDabzX7rW9/KZjKZ7Ntvv12xX1lZWbZv377ZFi1aZH/wgx9k77zzzmzXrl2zLVu2zL755pu5ejn1mgBJYMeOHdkbbrghW1xcnG3cuHH2rLPOyv7ud7+r9JhzzjknW1BQUGXfd955JztkyJBsy5Ytsy1atMhecMEF2VWrVqUanRqo6fHOZDLZgoKCbCaTqfLVv3//lC+BA1CbP99/S4DUf7U53u+991525MiR2TZt2mQbN26c7du3b5V9qV9qc7wffPDB7FlnnZVt3bp1tmnTptm+fftm58+fn2p0auC4446r+He3oKCg4t/kgoKCiuAYOXJkpV/vsWnTpuzll1+ePeqoo7LNmjXL9u/fP7t06dJcvIy8kMlmD/DjHgEAAGrIPSAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQjAABAACSESAAAEAyAgQAAEhGgAAAAMkIEAAAIBkBAgAAJCNAAACAZAQIAACQzP8HG4NS81JGj9QAAAAASUVORK5CYII=\\n"\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "plt.ylabel(\'some numbers\')\\n",\n
+    "context.Base_displayImage(image_object=plt)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 11,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt0ltWBL/5vIhSiKEUuymVGqRVvFQGJVag61jqiIp5TpQi1Vpejp1qtgtNadVrXOnZUBMqM43HQORy1XrCK6+Dld6xTbekUSoHFxeUoFmy1FoiW1IpRwz2/PxjeEhMiKHlCks9nrSzIfvazn715A7zfd+/9PGV1dXV1AQAAKEB5S3cAAABoPwQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQmDYdQF566aWMHj06hxxySPbZZ5/07NkzJ598cp5++ukGdZctW5YRI0Zk3333Tffu3XPhhRemurq6Qb26urrcfvvt6d+/fyoqKnLMMcfkkUceafT6O9smAAC0Fx1augPN6Y033sh7772Xiy66KH369MkHH3yQmTNnZtSoUbn77rtz6aWXJklWrlyZk046Kd26dcutt96ampqaTJ48OS+++GIWLFiQjh07ltq84YYbMnHixFx22WWprKzMrFmzMm7cuJSVlWXMmDGlervSJgAAtBdldXV1dS3diSJt2bIlxx57bNatW5dly5YlSa644or86Ec/yiuvvJJ+/folSZ5//vmcdtpp9YLKqlWr0r9//3zjG9/IHXfcUWrz5JNPzmuvvZbXX3895eXlu9QmAAC0J216CVZjysvL069fv6xdu7ZU9vjjj2fkyJGloJAkp556agYMGJBHH320VPbEE09k06ZNueKKK+q1efnll2flypWZN2/eLrcJAADtSbsIIB988EGqq6vz29/+NlOnTs1PfvKTnHrqqUm2zmqsWbMmQ4cObXBeZWVllixZUvp+yZIl6dKlSw4//PAG9ZJk6dKlu9wmAAC0J216D8g2EyZMyD333JNk6wzIueeemzvvvDNJUlVVlSTp3bt3g/N69+6dt99+Oxs3bkzHjh1TVVWVAw44oNF6SbJ69epdbhMAANqTdhFAxo8fn6985StZtWpVHn300WzatCnr169PktTW1iZJOnXq1OC8zp07l+p07NgxtbW1H1lvV9sEAID2pF0EkMMOOyyHHXZYkuRrX/taTj/99Jx99tmZP39+KioqkqQUSLa3bt26JCnVqaioKJV9VL2dbXN71dXVefbZZ3PwwQc3ehwAgJZVW1ub119/Paeffnp69OjR0t1pldpFAPmwc889N9/4xjeyYsWK0jKpbcumtldVVZXu3buXZip69+6d2bNnN1ovSfr06VOqt7Ntbu/ZZ5/NBRdc8PEGBQBAYR588MF89atfbelutErtMoBsWyK1du3aHHrooenZs2cWLlzYoN6CBQsyaNCg0veDBw/O9OnTs2zZshxxxBGl8vnz5ydJqW7fvn13us3tHXzwwUm2/kBv3z5t1/jx4zN16tSW7gYF8Xq3L17v9sXr3X4sW7YsF1xwQel9G7uuTQeQNWvWpGfPnvXKNm7cmB/96EfZe++9c+SRRybZOiNy//33Z+XKlfWe2bFixYpce+21pXPPOeecjB8/PnfddVf+5V/+JcnWJ6NPmzYt/fr1y7Bhw0p1d7bN7W1bdnXEEUdkyJAhu+lPgT1Z165dvdbtiNe7ffF6ty9e7/bHcvmPr00HkMsuuyw1NTU56aST0qdPn7z55pt56KGHsnz58kyZMiV77713kq1PN3/sscdyyimn5Oqrr05NTU0mTZqUgQMH5uKLLy6117dv31xzzTWZNGlSNm7cmKFDh2bWrFmZM2dOHn744ZSVlZXq7mybAADQnrTpAHL++edn+vTp+dd//df86U9/yr777puhQ4dm0qRJGTlyZKlev3798otf/CITJkzId7/73XTq1CkjR47MlClTGuzVuO2229KtW7fcfffdue+++zJgwIA89NBDOf/88+vV25U2AQCgvWjTAWTMmDEZM2bMTtU98sgj85Of/OQj65WVleW73/1uvvvd7+62NgEAoL1oF09Chz3V2LFjW7oLFMjr3b54vdsXrzfsPAEEWpD/sNoXr3f74vVuX7zesPMEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAUpkNLdwAAAD6u4cNHpbp6x8d79Ejmzn2yuA7xkQQQAABarerqZPnypgLGqML6ws6xBAsAACiMAAIAABSmTQeQhQsX5sorr8xRRx2VLl265KCDDsqYMWOyYsWKevUuuuiilJeXN/g64ogjGrRZV1eX22+/Pf37909FRUWOOeaYPPLII41ef9myZRkxYkT23XffdO/ePRdeeGGqm1qkCAAAbVyb3gMyceLEzJs3L6NHj87AgQNTVVWVO++8M0OGDMmvf/3rHHXUUaW6nTp1yvTp0+ud37Vr1wZt3nDDDZk4cWIuu+yyVFZWZtasWRk3blzKysoyZsyYUr2VK1fmpJNOSrdu3XLrrbempqYmkydPzosvvpgFCxakY8eOzTdwAADYQ7XpAHLttdemsrIyHTr8ZZhjxozJ0Ucfndtuuy0PPPBAqbxjx44ZN25ck+2tWrUqU6ZMyZVXXpk77rgjSXLJJZfk5JNPzre//e2MHj065eVbJ5VuueWW1NbWZsmSJenXr1+S5Ljjjstpp52W++67L5deeunuHi4AAOzx2vQSrBNOOKFe+EiSz372sznyyCPzyiuv1Cuvq6vLli1b8u677+6wvSeeeCKbNm3KFVdcUa/88ssvz8qVKzNv3rxS2eOPP56RI0eWwkeSnHrqqRkwYEAeffTRTzIsAABotdr0DEhj6urq8tZbb+Xoo4+uV/7BBx9kv/32ywcffJBu3bpl7NixmThxYvbZZ59SnSVLlqRLly45/PDD651bWVmZJFm6dGmGDx+eVatWZc2aNRk6dGiD61dWVuaZZ55phpEBALQ/PXokTd1qd+tx9iTtLoA89NBDWb16dX7wgx+Uyvr06ZPrrrsuQ4YMyZYtW/LMM8/krrvuygsvvJDZs2dnr732SpJUVVXlgAMOaNBm7969kySrV68u1du+/MN133777WzcuNE+EACAT8hDBlufdhVAXnnllXzzm9/MsGHD8vWvf71Ufsstt9Sr95WvfCUDBgzIjTfemJkzZ5Y2l9fW1qZTp04N2u3cuXPp+Pa/flRdAQQAgPamTe8B2d6bb76Zs846K926dcvMmTNTVlbWZP3x48envLw8zz//fKmsoqIi69ata1B3W1lFRUW9X9evX/+RdQEAoD1pFzMga9euzRlnnJF33303v/zlL3PggQd+5DmdO3fO/vvvn7fffrtU1rt378yePbtB3W1Lrvr06VOqt335h+t27969ydmP8ePHN7gF8NixYzN27NiP7DcAALvHjBkzMmPGjHpla9eubaHetB1tPoCsW7cuZ599dl599dU899xzDTaQ70hNTU2qq6vTs2fPUtngwYMzffr0LFu2rN5DCufPn58kGTRoUJKkb9++6dmzZxYuXNig3QULFpTq7cjUqVMzZMiQneonAADNo7EPgBcvXpxjjz22hXrUNrTpJVibN2/OmDFjMn/+/Dz22GP5/Oc/36DO+vXrU1NT06D85ptvTpKMGDGiVHbOOeekY8eOueuuu0pldXV1mTZtWvr165dhw4aVys8999w8/fTTWblyZans+eefz4oVKzJ69OjdMj4AAGht2vQMyLXXXpunnnoqZ599dqqrq/Pggw/WO37BBRekqqoqgwcPzrhx43LYYYclSZ599tk888wzOeOMM3LOOeeU6vft2zfXXHNNJk2alI0bN2bo0KGZNWtW5syZk4cffrjevpIbbrghjz32WE455ZRcffXVqampyaRJkzJw4MBcfPHFxfwBAADAHqZNB5AXXnghZWVleeqpp/LUU0/VO1ZWVpYLLrgg3bp1y9lnn52f/vSnuf/++7N58+YceuihufXWW/P3f//3Ddq87bbb0q1bt9x999257777MmDAgDz00EM5//zz69Xr169ffvGLX2TChAn57ne/m06dOmXkyJGZMmWKu18BANBuldXV1dW1dCfYatuawkWLFtkDAgCwB/J+7ZNr03tAAACAPYsAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACF6dDSHQAAoG0aPnxUqqt3fLxHj2Tu3CeL6xB7BAEEAIBmUV2dLF/eVMAYVVhf2HNYggUAABRGAAEAAAojgAAAAIURQAAAgMK06QCycOHCXHnllTnqqKPSpUuXHHTQQRkzZkxWrFjRoO6yZcsyYsSI7LvvvunevXsuvPDCVDdy24a6urrcfvvt6d+/fyoqKnLMMcfkkUceafT6O9smAAC0F236LlgTJ07MvHnzMnr06AwcODBVVVW58847M2TIkPz617/OUUcdlSRZuXJlTjrppHTr1i233nprampqMnny5Lz44otZsGBBOnbsWGrzhhtuyMSJE3PZZZelsrIys2bNyrhx41JWVpYxY8aU6u1KmwAA0F606QBy7bXXprKyMh06/GWYY8aMydFHH53bbrstDzzwQJLklltuSW1tbZYsWZJ+/folSY477ricdtppue+++3LppZcmSVatWpUpU6bkyiuvzB133JEkueSSS3LyySfn29/+dkaPHp3y8vJdahMAoK3q0SNp6la7W4/T3rTpAHLCCSc0KPvsZz+bI488Mq+88kqp7PHHH8/IkSNLQSFJTj311AwYMCCPPvpoKSw88cQT2bRpU6644op6bV5++eUZN25c5s2bl+HDh+9SmwAAbZWHDNKYNr0HpDF1dXV566230uO/IveqVauyZs2aDB06tEHdysrKLFmypPT9kiVL0qVLlxx++OEN6iXJ0qVLd7lNAABoT9pdAHnooYeyevXq0n6NqqqqJEnv3r0b1O3du3fefvvtbNy4sVT3gAMOaLRekqxevXqX2wQAgPakXQWQV155Jd/85jczbNiwfP3rX0+S1NbWJkk6derUoH7nzp3r1amtrd3pejvbJgAAtCftJoC8+eabOeuss9KtW7fMnDkzZWVlSZKKiookyfr16xucs27dunp1KioqSmUfVW9n2wQAgPakTW9C32bt2rU544wz8u677+aXv/xlDjzwwNKxbcukti2b2l5VVVW6d+9eumVu7969M3v27EbrJUmfPn12uc3GjB8/Pl27dq1XNnbs2IwdO7apYQIAsBvNmDEjM2bMqFe2du3aFupN29HmA8i6dety9tln59VXX81zzz3XYAN5375907NnzyxcuLDBuQsWLMigQYNK3w8ePDjTp0/PsmXLcsQRR5TK58+fnySlurvSZmOmTp2aIUOG7PwgAQDY7Rr7AHjx4sU59thjW6hHbUObXoK1efPmjBkzJvPnz89jjz2Wz3/+843WO/fcc/P0009n5cqVpbLnn38+K1asyOjRo0tl55xzTjp27Ji77rqrVFZXV5dp06alX79+GTZs2C63CQAA7UmbngG59tpr89RTT+Xss89OdXV1HnzwwXrHL7jggiRbn27+2GOP5ZRTTsnVV1+dmpqaTJo0KQMHDszFF19cqt+3b99cc801mTRpUjZu3JihQ4dm1qxZmTNnTh5++OHSvpJdaRMAANqTsrq6urqW7kRzOeWUU/If//EfaWyIZWVl2bx5c+n7l19+ORMmTMicOXPSqVOnnHXWWZkyZUp69uxZ77y6urpMnDgxd999d6qqqjJgwIBcf/31je7P2Nk2t9k2pbdo0SJLsAAA9kDer31ybTqAtDZ+oAEA9mzer31ybXoPCAAAsGcRQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAAChMh5buAAAALWP48FGprt7x8R49krlznyyuQ7QLAggAQDtVXZ0sX95UwBhVWF9oPyzBAgAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGLfhBQBop3r0SJq61e7W47B7CSAAAO2UhwzSEizBAgAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFadMB5P33389NN92UESNGZP/99095eXnuv//+BvUuuuiilJeXN/g64ogjGtStq6vL7bffnv79+6eioiLHHHNMHnnkkUavv2zZsowYMSL77rtvunfvngsvvDDV1dW7fZwAANBadGjpDjSnNWvW5Oabb85BBx2UQYMGZfbs2SkrK2u0bqdOnTJ9+vR6ZV27dm1Q74YbbsjEiRNz2WWXpbKyMrNmzcq4ceNSVlaWMWPGlOqtXLkyJ510Urp165Zbb701NTU1mTx5cl588cUsWLAgHTt23L2DBQCAVqBNB5A+ffrkzTffTK9evbJo0aJUVlbusG7Hjh0zbty4JttbtWpVpkyZkiuvvDJ33HFHkuSSSy7JySefnG9/+9sZPXp0ysu3Tirdcsstqa2tzZIlS9KvX78kyXHHHZfTTjst9913Xy699NLdNEoAAGg92vQSrE996lPp1atXkq1Lp5pSV1eXLVu25N13391hnSeeeCKbNm3KFVdcUa/88ssvz8qVKzNv3rxS2eOPP56RI0eWwkeSnHrqqRkwYEAeffTRjzMcAABo9dp0ANkVH3zwQfbbb798+tOfTvfu3XPllVfm/fffr1dnyZIl6dKlSw4//PB65dtmVpYuXZpk60zJmjVrMnTo0AbXqayszJIlS5ppFAAAsGdr00uwdlafPn1y3XXXZciQIdmyZUueeeaZ3HXXXXnhhRcye/bs7LXXXkmSqqqqHHDAAQ3O7927d5Jk9erVpXrbl3+47ttvv52NGzfaBwIAQLsjgGTrfo3tfeUrX8mAAQNy4403ZubMmaXN5bW1tenUqVOD8zt37lw6vv2vH1VXAAEAoL2xBGsHxo8fn/Ly8jz//POlsoqKiqxbt65B3W1lFRUV9X5dv379R9YFAID2xAzIDnTu3Dn7779/3n777VJZ7969M3v27AZ1ty256tOnT6ne9uUfrtu9e/cmZz/Gjx/f4BbAY8eOzdixY3d5HAAAfDwzZszIjBkz6pWtXbu2hXrTdgggO1BTU5Pq6ur07NmzVDZ48OBMnz49y5Ytq/eQwvnz5ydJBg0alCTp27dvevbsmYULFzZod8GCBaV6OzJ16tQMGTJkdwwDAICPqbEPgBcvXpxjjz22hXrUNrT7JVjr169PTU1Ng/Kbb745STJixIhS2TnnnJOOHTvmrrvuKpXV1dVl2rRp6devX4YNG1YqP/fcc/P0009n5cqVpbLnn38+K1asyOjRo5tjKAAAsMdr8zMgd955Z955553SHaqefPLJvPHGG0mSb33rW3n77bczePDgjBs3LocddliS5Nlnn80zzzyTM844I+ecc06prb59++aaa67JpEmTsnHjxgwdOjSzZs3KnDlz8vDDD9d7yvoNN9yQxx57LKecckquvvrq1NTUZNKkSRk4cGAuvvjiAv8EAABgz1FW91FP6Gvl+vfvn9///vdJUgoIdXV1KSsry2uvvZauXbvmqquuyq9//eusXr06mzdvzqGHHpqvfvWr+fu///vSLXi3qaury8SJE3P33XenqqoqAwYMyPXXX9/o/oyXX345EyZMyJw5c9KpU6ecddZZmTJlSr1lXdvbNqW3aNEiS7AAAPZA3q99cm0+gLQmfqABAPZs3q99cu1+DwgAAFAcAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACF6dDSHQAAoKHhw0elunrHx3v0SObOfbK4DsFuIoAAAOyBqquT5cubChijCusL7E6WYAEAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIzb8AIA7IF69EiautXu1uPQ+gggAAB7IA8ZpK2yBAsAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACtOmA8j777+fm266KSNGjMj++++f8vLy3H///Y3WXbZsWUaMGJF999033bt3z4UXXpjq6uoG9erq6nL77benf//+qaioyDHHHJNHHnnkE7UJALQuw4ePymGH7fhr+PBRLd1F2GN1aOkONKc1a9bk5ptvzkEHHZRBgwZl9uzZKSsra1Bv5cqVOemkk9KtW7fceuutqampyeTJk/Piiy9mwYIF6dixY6nuDTfckIkTJ+ayyy5LZWVlZs2alXHjxqWsrCxjxoz5WG0CAK1LdXWyfPmTTdQQQGBH2nQA6dOnT95888306tUrixYtSmVlZaP1brnlltTW1mbJkiXp169fkuS4447Laaedlvvuuy+XXnppkmTVqlWZMmVKrrzyytxxxx1JkksuuSQnn3xyvv3tb2f06NEpLy/fpTYBAKA9adNLsD71qU+lV69eSbYundqRxx9/PCNHjiwFhSQ59dRTM2DAgDz66KOlsieeeCKbNm3KFVdcUe/8yy+/PCtXrsy8efN2uU0AAGhP2nQA2RmrVq3KmjVrMnTo0AbHKisrs2TJktL3S5YsSZcuXXL44Yc3qJckS5cu3eU2AQCgPWn3AaSqqipJ0rt37wbHevfunbfffjsbN24s1T3ggAMarZckq1ev3uU2AQCgPWn3AaS2tjZJ0qlTpwbHOnfuXK9ObW3tTtfb2TYBAKA9afcBpKKiIkmyfv36BsfWrVtXr05FRUWp7KPq7WybAADQnrTpu2DtjG3LpLYtm9peVVVVunfvXrplbu/evTN79uxG6yVb77q1q202Zvz48enatWu9srFjx2bs2LE7MSIAoLn16JE0davdrcdp7WbMmJEZM2bUK1u7dm0L9abtaPcBpG/fvunZs2cWLlzY4NiCBQsyaNCg0veDBw/O9OnTs2zZshxxxBGl8vnz5ydJqe6utNmYqVOnZsiQIR9rPABA85s7t6lngNBWNPYB8OLFi3Pssce2UI/ahna/BCtJzj333Dz99NNZuXJlqez555/PihUrMnr06FLZOeeck44dO+auu+4qldXV1WXatGnp169fhg0btsttAgBAe9LmZ0DuvPPOvPPOO6U7VD355JN54403kiTf+ta3st9+++WGG27IY489llNOOSVXX311ampqMmnSpAwcODAXX3xxqa2+ffvmmmuuyaRJk7Jx48YMHTo0s2bNypw5c/Lwww/Xe8r6zrYJAADtSVldU0/oawP69++f3//+90lSCgh1dXUpKyvLa6/fwkI/AAAbv0lEQVS9lr/+679Okrz88suZMGFC5syZk06dOuWss87KlClT0rNnz3rt1dXVZeLEibn77rtTVVWVAQMG5Prrr290f8bOtrnNtim9RYsWWYIFALAH8n7tk2vzAaQ18QMNALBn837tk7MHBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDAdWroDAAC70/Dho1JdvePjPXokc+c+WVyHgHoEEACgTamuTpYvbypgjCqsL0BDlmABAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiM2/ACAG1Kjx5JU7fa3XocaCkCCADQpnjIIOzZLMECAAAKI4AAAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYTq0dAcAgPZj+PBRqa7e8fEePZK5c58srkNA4QQQAKAw1dXJ8uVNBYxRhfUFaBmWYAEAAIURQAAAgMIIIAAAQGEEEAAAoDACCAAAUBgBBAAAKIzb8AIAhenRI2nqVrtbjwNtmQACABTGQwYBS7AAAIDCCCAAAEBhBBAAAKAwAkiS2bNnp7y8vNGvBQsW1Kv7q1/9Kl/4wheyzz77pHfv3rn66qvz/vvvN2hz/fr1ue6669KnT5/svffeOf744/Pcc88VNSQAANgj2YS+nauvvjqVlZX1yg455JDS75cuXZpTTz01Rx11VKZOnZo//OEPmTx5clasWJH/9//+X73zLrroojz++OMZP358Dj300Nx7770588wz8/Of/zzDhw8vZDwAALCnEUC2c+KJJ+bLX/7yDo/fcMMN6d69e2bPnp0uXbokSQ4++OBceuml+elPf5rTTjstSbJgwYL8+Mc/zuTJkzNhwoQkyde+9rV87nOfy3e+853MnTu3+QcDAAB7IEuwtlNXV5eampps2rSpwbF33303zz33XC644IJS+EiSCy+8MF26dMmjjz5aKps5c2Y6dOiQyy67rFTWqVOnXHLJJZk3b15WrVrVvAMBAIA9lACynYsvvjhdu3ZNRUVFvvjFL2bRokWlYy+++GI2bdqUoUOH1junY8eOGTRoUJYsWVIqW7JkSQYMGFAvqCQpLe9aunRpM44CAAD2XJZgZevsxHnnnZczzzwzPXr0yEsvvZTJkyfnxBNPzK9+9asMGjQoVVVVSZLevXs3OP/AAw/MnDlzSt9XVVU1Wm9b2erVq5tpJAAAsGcTQJKccMIJOeGEE0rfjxw5Muedd14GDhyY66+/Ps8880xqa2uTbA0rH9a5c+fS8SSpra3dYb1txwEAoD2yBGsHDjnkkIwaNSo///nPU1dXl4qKiiRbb6/7YevWrcvee+9d+r6iomKH9bYdBwCA9sgMSBP+6q/+Khs2bMj7779fWj61bSnW9qqqqtKnT5/S97179250mdW2c7ev25jx48ena9eu9crGjh2bsWPH7vIYAAD4eGbMmJEZM2bUK1u7dm0L9abtEECa8Lvf/S4VFRXp0qVLPve5z6VDhw5ZuHBhzjvvvFKdDRs2ZOnSpTn//PNLZYMHD87s2bNTU1OTfffdt1Q+f/78JMmgQYOavO7UqVMzZMiQ3TwaAAB2RWMfAC9evDjHHntsC/WobbAEK8maNWsalL3wwgt58skn87d/+7dJkq5du+ZLX/pSHnzwwbz33nuleg888EDef//9jB49ulR23nnnZfPmzbnnnntKZevXr8+9996b448/Pn379m3G0QAAwJ7LDEiSMWPGZO+9984JJ5yQXr165eWXX84999yTLl265LbbbivV+8d//McMGzYsJ598ci699NKsXLkyP/zhD3P66aeXgkqSHHfccRk9enSuv/76/PGPf8whhxyS+++/P2+88UbuvffelhgiAOyU4cNHpbp6x8d79Ejmzn2yuA4BbY4AkuS///f/noceeihTp07Nu+++m169euW8887LTTfdlM985jOleoMHD85zzz2X6667LhMmTMh+++2Xv/u7v8utt97aoM0f/ehH+d73vpcHHnggf/7zn3PMMcfk6aefzhe+8IUihwYAu6S6Olm+vKmAMaqwvgBtkwCS5KqrrspVV121U3WHDx9e75kfO9KpU6fcfvvtuf322z9p9wAAoM2wBwQAACiMAAIAABRGAAEAAAojgAAAAIURQAAAgMK4CxYAUNKjR9LUrXa3Hgf4+AQQAKDEQwaB5mYJFgAAUBgBBAAAKIwAAgAAFEYAAQAACiOAAAAAhRFAAACAwgggAABAYQQQAACgMAIIAABQGE9CB4BWYvjwUamu3vHxHj08yRzY8wkgANBKVFcny5c3FTBGFdYXgI/LEiwAAKAwAggAAFAYAQQAACiMAAIAABRGAAEAAAojgAAAAIVxG14AaCV69EiautXu1uMAezYBBABaCQ8ZBNoCS7AAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiMu2ABwG4wfPioVFfv+HiPHu5iBZAIIACwW1RXJ8uXNxUwdvz8DoD2xBIsAACgMAIIAABQGAEEAAAojAACAAAURgABAAAKI4AAAACFcRteANgNevRImrrV7tbjAAggALAbeMggwM6xBAsAACiMGRAA2rzhw0elunrHx3v0MIMBUBQBBIA2r7o6Wb68qYCx470bAOxelmABAACFEUAAAIDCCCAAAEBhBBAAAKAwAggAAFAYAQQAACiM2/AC0Ob16JE0davdrccBKIIAAkCLKuIhgR4yCO3HBx98kL333rulu0ETBBAAWpSHBAK7y4YNG/KlEV/KL57/RTp27NjS3WEH7AEBAKAQH3zwQbO2P236tCyuWpxp06c163X4ZAQQAACa3bbZiY0bNzZb+1P/bWrWf2V9fnjPD5vtOnxyAggAAEmad4aiuWcnpk2flrf6v5V8Knmr/1tmQfZgAggAAM06Q9HcsxPb2q89qjZJUntkrVmQPZhN6AA0qYi7VAEfrbnv7rT9DMVV37hqt7f94dmJ3XmNUvt7/VdBh+a5DruHGRAAmrTtLlU7+moqnAC7R2veP9HcsxMfbn8bsyB7LgEEgBbVo0cyYMCoHX55SCCtQWu/u1Nz7p9oanaiWdrfZjdfh92nrK6urq6lO8FWixcvzrHHHptFixZlyJAhLd0dgCTJYYeNavI5HQMGjMpvfmMJFnuu5l66tGHDhvzNl/6m2Z49sWHDhhx2/GF5/YzXc/AzB2f5/OW79Tql9ke+vvVN/Kbk4P9v91ynQdvb7KZrbNmyJSeeemL+WPvHlO/V8HP1LZu3pFdFr8z52ZyUlZV97Otsz/u1T84MCADQZjX30qWkdc9O1Gu/GWYomnt2ory8PHN/Pjcrfr0iv5n7mwZfK369InN/Pne3hQ92D5vQAVoxG8Rp7Vrzxuqk4d6Jb1zyjd0+OzH136amdmT9/RO76zofbn+b3XGdLVu25MeP/jh9a/um/M3GZyce+fEjufJ/XCkgtDMCCEArtm2D+I6NKqwvtE3NGRC2zU4059Kl5gwHSeu/u9POzFB83Otsm52AD7MECwBaqebe+Nzcy5da+9Kl1n53p9IMxaq+GfDvAxp89V3VN4/8+JHYLszuZgYEoJm0leVRW+9CteOZlNZ4l6rmXvZTxDWae/Ygad7lS6196VLSumcnEjMUtBwBpBmtX78+3//+9/PAAw/knXfeycCBA/ODH/wgX/rSl1q6a0AB2sryqKJDUlt4497aw0HS/AGhtS9das69E4n9E7RtlmA1o4suuihTp07N1772tdxxxx3Za6+9cuaZZ2buXJ82QEsbPnxUDjtsx1/Dh7eOcNBQ8y7JSZp32U9buGNREddozofGbdOcy5da+9KlxN2d4JMQQJrJggUL8uMf/zi33XZbJk6cmL/7u7/Lz372sxx00EH5zne+09LdYw8xY8aMlu7CHunD4eDQQ8/c7eGg4dO9Hyng6d73NUej29mQdPhSkuZ7897a9wQU8ca9dI2jWmc4SJo/ILT2B9M1tnfiwIcOtHcCdpIA0kxmzpyZDh065LLLLiuVderUKZdccknmzZuXVatWtVjfmnvTYhHXaAtjSJIHH3yw2a/RHONo7oBQPxzMzKuvv5Plyx9vxnDQ/G/ckw1J2YTmvUaHacmBi7f+2kyaMyC09k/1G1xjWesMB0nzBoS2sLG6sdmJysMrzU7ATrIHpJksWbIkAwYMSJcuXeqVV1ZWJkmWLl2avn37Nnruf/tvV6eioluS3bNJdfuNsHV1W/KHql/lr3oPS1lZeau5RlsYQ2PX+O3vfpoBA0a2unHU39uwIenwN8mmXyTZtt55Ny5f2vam+s1pyabdv8690Gt0WJts2r3X2LZBvK5uS15752fZdOH6dPi369L/08+mrKx8t24Qb+17AorYlFzvGv/ZOjc+N/feBhurATMgzaSqqiq9e/duUL6tbPXq1Ts89w+rT9itn/Ru/2nyitf+Nus+/UFWvHZ6q7pGWxhDY9fY0nFzqxxHPc36qfuGpMvU5ML1SZcfpnlmDwq8xl9t2e3XmDv3yfzmN0/myvF/m44nJvlU0vHE5KoJp+c3v3lyt24gb817ApLmX/ZTxDVa+94Gt30FEjMgzaa2tjadOnVqUN65c+fS8R2qeDB57x/zl0+Td5ft3mjd9cPknW+0wmu0hTFsd42eW5I1bWAczXWNDtOSE7a+4c0JbyU/bYYZik9yjW1vkj78Zqn8Q5/tbLvGbz90jbq6ZMOGhm106JDs9eF3f9vZtClZv7503oYNGzL17h+mdtQufLL//vvJtjerjY3jU59KtpvBbXT24F8n5RtnfzkdO2z3X8n2bXz608l//ZvXqNra5O23kyTT7v/feav/m/XfuB/85kd/Gv7HP24dy47Gsc8+yYEHNv2p/v+amG+c+MUdj6NPn2S//Xbch7Vrkz/8IRs2bszU/zUxtV/+GDMHr72WvPPOjsfRrVvymc80HQ4Oqsq07303V/230Y2PY8CApHv3HY+jujpbXn45P57+b+m7cf+U/66ROy916tT0nZf+8z+3viY7GEd5r14fPTvx7LPJv/97/b5v//tBg5JGPuArWb06WbSoftmH+3LOOU33Yf78ZNtS6cZej379kuOPb7qNRx5peN72v//CF5K//usdn//668kvf7njf2eS5Otfb7oPP/vZ1p+t7c/fvp3+/ZOPujPntGkNz9v+93/7t8lnP7vj81esSJ55puG527dxzTVN9+Gpp5Lly3d8/mGHJaNa641D2icBpJlUVFRk/bY3CNtZt25d6fiHlULJZ6qTl25MNp+fdW+syOIvfOEvlS66KBkyZMcXXrw4+T//Z+vv/+sv57o3/pxkcbLXjOTIqqQ6W3+d/1/XWPdOFi9e/Jc27r57azvbtVHvL/rQocn/+B8fGtc7TV/j9Vey+Jhj/nLC5Zcnxx2343EsWJDceedf2n9t/a6NIUn++Z+3/ieyo3Ecf3y9f/Q+cgy/ezmLP/OZ+m1ce20ybNiOxzF3bjJ5cuna66o+Vf8aK3diHLfdlsyZ07D/23zhC8n11+/8OF79zyzu2bN+GzfemJx00o7H8YtfJP/zf/7lGms/3fQ1GhvHTTcls2fXL9t+PH/zN6VrbB3D/KTzbUnf2mR1kj61Sedbk/c+n3XLX8zibW9st2/jBz9ITj11x+N47rmtY62ry7rN/Zq+RmNjSJLvfCd5/vkdX+PUU5Pbb0+SdO78Tv7qr07M6pqF2dx3ffLS1mvs1Xl8+rw3KZ1XvJvFjXxQkdtuS047bcfX+Pd/r/eaz9grqfp8krf+UqXq01W58aYbc/555zfexi6MI0lmPDYjVZ+uqn+NLn/IjQf1y/mbd9DGTo5jY5LbuiS152fr6/Bfavdfl1v/6dZ8fsjn06HDDv672slxNNb/0jj2W5Ubj/ncJx5Hg9dh3V/Gsztejy233Zbp06en+/ruKX+1kXDw+hv530//MMMm/jCN7jzYyXH8y45rlN7YL1mypPHju/hz1agRI5o+vot/Pxr14YDyYTfeuMvjWLt2bf1/M8aObfoau2McRx/d9PFbbml6HF/6UrL//k238c1vJtvCZmOh85Zbmv539/nnk+99b8fnJ03//5NsfV/yi180LN/W3t/8zdZQWJBly5Yl+YgPk2lSWZ15zmZx2mmnZfXq1XnppZfqlT///PM57bTT8tRTT+Wss86qd+yhhx7KBRdcUGQ3AQD4GB588MF89atfbelutEpmQJrJ4MGDM3v27NTU1GTfffctlc//r0/kBw0a1OCc008/PQ8++GAOPvjgRmdIAABoWbW1tXn99ddz+umnt3RXWi0zIM1kwYIFOf744zNp0qRce+21SbY+Gf1zn/tcevbsmV/96lct3EMAACieGZBmctxxx2X06NG5/vrr88c//jGHHHJI7r///rzxxhu59957W7p7AADQIsyANKP169fne9/7Xh588MH8+c9/zjHHHJObb745pzW16QwAANowAQQAACiMBxECAACFEUD2AOvXr891112XPn36ZO+9987xxx+f5557rqW7RTN4//33c9NNN2XEiBHZf//9U15envvvv7+lu0UzWbhwYa688socddRR6dKlSw466KCMGTMmK1asaOmu0QxeeumljB49Ooccckj22Wef9OzZMyeffHKefvrplu4aBfnHf/zHlJeX5+iPej4Hrc7s2bNTXl7e6NeCBQtaunutjk3oe4CLLroojz/+eMaPH59DDz009957b84888z8/Oc/z/Dhw1u6e+xGa9asyc0335yDDjoogwYNyuzZsxt/mjBtwsSJEzNv3ryMHj06AwcOTFVVVe68884MGTIkv/71r3PUUUe1dBfZjd5444289957ueiii9KnT5988MEHmTlzZkaNGpW77747l156aUt3kWa0cuXK3HLLLdlnn338u96GXX311amsrKxXdsghh7RQb1ove0Ba2Lbb9U6ePDkTJkxI8pfb9fbq1Stz585t4R6yO23YsCHvvPNOevXqlUWLFqWysjL33XdfLrzwwpbuGs1g3rx5qaysrPcU71dffTVHH310zjvvvDzwwAMt2DuKsGXLlhx77LFZt25d6enJtE3nn39+/vSnP2XTpk2prq7Oiy++2NJdYjeaPXt2vvjFL2bmzJn58pe/3NLdafUswWphM2fOTIcOHXLZZZeVyjp16pRLLrkk8+bNy6pVq1qwd+xun/rUp9KrV68kiezf9p1wwgn1wkeSfPazn82RRx6ZV155pYV6RZHKy8vTr1+/rF27tqW7QjP6j//4jzz++OP5p3/6p9TV1ZkBacPq6upSU1OTTZs2tXRXWjUBpIUtWbIkAwYMSJcuXeqVb5veW7p0aUt0C2gmdXV1eeutt9KjR4+W7grN5IMPPkh1dXV++9vfZurUqfnJT36SU089taW7RTPZvHlzrrrqqlx66aWWVbYDF198cbp27ZqKiop88YtfzKJFi1q6S62SPSAtrKqqKr17925Qvq1s9erVRXcJaEYPPfRQVq9enR/84Act3RWayYQJE3LPPfck2ToDcu655+bOO+9s4V7RXKZNm5Y33ngjP/vZz1q6KzSjTp065bzzzsuZZ56ZHj165KWXXsrkyZNz4okn5le/+lUGDRrU0l1sVQSQFlZbW5tOnTo1KO/cuXPpONA2vPLKK/nmN7+ZYcOG5etf/3pLd4dmMn78+HzlK1/JqlWr8uijj2bTpk1Zv359S3eLZvCnP/0p3//+9/P9738/3bt3b+nu0IxOOOGEnHDCCaXvR44cmfPOOy8DBw7M9ddfn2eeeaYFe9f6WILVwioqKhr9j2ndunWl40Dr9+abb+ass85Kt27dMnPmTGvE27DDDjssX/ziF/O1r30tTz31VN57772cffbZLd0tmsE//MM/pEePHrnqqqtauiu0gEMOOSTnnHNOfv7zn9vXuYsEkBbWu3fvRpdZVVVVJUn69OlTdJeA3Wzt2rU544wz8u677+YnP/lJDjzwwJbuEgU699xzs3DhQs9/aWNWrFiRf/u3f8tVV12VlStX5vXXX8/rr7+edevWZcOGDfn973+fP//5zy3dTZpZv379smHDhrz//vst3ZVWRQBpYYMHD87y5ctTU1NTr3z+/PlJYk0htHLr1q3L2WefnVdffTVPP/10Dj/88JbuEgXbtpTWnbDallWrVmXLli351re+lc985jOlrwULFmT58uXp379/br755pbuJs3sd7/7XSoqKhrcTIim2QPSws4777xMnjw599xzT6699tokW58Dcu+99+b4449P3759W7iHwMe1efPmjBkzJvPnz88TTzyRz3/+8y3dJZrRmjVr0rNnz3plGzduzI9+9KPsvffeOfLII1uoZzSHo48+Ov/3//7fessp6+rq8g//8A9577338s///M8eUNeGNPb3+4UXXsiTTz6Zs846q4V61XoJIC3suOOOy+jRo3P99dfnj3/8Yw455JDcf//9eeONN3Lvvf9/e3fLElkYh3H4tg5qESYYBP0CFotFGMTmS7SYbVrMYrBYxKBJkC0zwarfwI+gYBBBNBkcFE0GYdMKy26c+Z9duK54Trnr73Aenh9Nz2MITk5O8vb29v3r3cXFRZ6enpIk29vbGR8fb3IeA7Szs5PLy8usrKzk5eUl3W73t/cbGxsNLWMYNjc38/HxkYWFhUxOTub5+Tm9Xi93d3c5PDxMq9VqeiIDNDExkbW1tT+eHx0dJUlWV1erJzFE6+vrabVamZ+fT7vdzu3tbU5PTzM6OpqDg4Om5/133IT+D/j8/Mzu7m663W5eX18zOzub/f39LC0tNT2NIZiens7j42OSfH85+3Vx1cPDQ6amppqcxwB1Op1cXV399XDiyMhIvr6+GljFsJyfn+fs7Cw3Nzfp9/sZGxvL3Nxctra2sry83PQ8inQ6nfT7/VxfXzc9hQE6Pj5Or9fL/f193t/f0263s7i4mL29vczMzDQ9778jQAAAgDIOoQMAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZQQIAABQRoAAAABlBAgAAFBGgAAAAGUECAAAUEaAAAAAZX4CA137PyiaK2sAAAAASUVORK5CYII=\\n"\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "plt.plot(t, t, \'r--\', t, t**5, \'bs\', t, t**3, \'g^\')\\n",\n
+    "context.Base_saveImage(plot=plt, reference=\'testplot1\')\\n",\n
+    "context.Base_displayImage(image_object=plt)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 12,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "fig = plt.figure()\\n",\n
+    "ax = fig.add_subplot(1, 1, 1)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 13,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "N = 100\\n",\n
+    "data = np.random.random((N, 7))\\n",\n
+    "x = data[:,0]\\n",\n
+    "y = data[:,1]\\n",\n
+    "points = data[:,2:4]\\n",\n
+    "# color is the length of each vector in `points`\\n",\n
+    "color = np.sqrt((points**2).sum(axis = 1))/np.sqrt(2.0)\\n",\n
+    "rgb = plt.get_cmap(\'jet\')(color)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 14,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "<matplotlib.collections.PathCollection object at 0x7f67446da710>\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "ax.scatter(x, y, color = rgb)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 15,\n
+   "metadata": {\n
+    "collapsed": false,\n
+    "scrolled": true\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "image/png": "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pml3EVKsZE7hli1bdA2IiIiISBjS8Vrt6RoQERERERGxjAKIiIiIiIhYRgFEREREREQsowAiIiIiIiKWUQARERERERHLKICIiIiIiIhlFEBERERERMQyCiAiIiIiImIZBRAREREREbGMAoiIiIiIiFhGAURERERERCyjACIiIiIiIpZRABEREREREcsogIiIiIiIiGUUQERERERExDIKICIiIiIiYhkFEBERERERsYwCiIiIiIiIWEYBRERERERELKMAIiIiIiIillEAERERERERyyiAiIiIiIiIZRRARERERETEMgogIiIiIiJiGQUQERERERGxjAKIiIiIiIhYRgFEREREREQsowAiIiIiIiKWUQARERERERHLKICIiIiIiIhlFEBERERERMQyCiAiIiIiImIZBRAREREREbGMAoiIiIiIiFhGAURERERERCyjACIiIiIiIpZRABEREREREcsogIiIiIiIiGUUQERERERExDIKICIiIiIiYhkFEBERERERsYwCiIiIiIiIWEYBRERERERELKMAIiIiIiIillEAERERERERyyiAiIiIiIiIZRRARERERETEMgogIiIiIiJiGQUQERERERGxjAKIiIiIiIhYRgFEREREREQsowAiIiIiIiKWUQARERERERHLKICIiIiIiIhlFEBERERERMQyCiCVOHXqFFOnTqVZs2bExcUxbNgwtm3bVmk/0zR59dVXGTlyJG3atCEuLo6ePXvy5JNPUlBQYEHlIiIiIiLhRwGkAj6fjxEjRrB06VLuu+8+5s6dy7FjxxgyZAh79+6tsG9OTg533HEHWVlZ3HXXXfz5z3+mf//+zJo1ixtuuMGiZyAiIiIiEl4UQCqwYsUKNm3axOLFi5k5cyZ3330369atw+l0MmvWrAr7ut1uPv74YzZu3MgjjzzC5MmTWbhwIbNmzWLdunWsWbPGomchF1u6dKndJdRrGt/Q0xiHlsY39DTGoaXxlXCnAFKBFStWkJyczK233lra1rRpU8aOHcs777xDUVFRwL4REREMGDCgXPuoUaMA2LVrV/ALlirRC3NoaXxDT2McWhrf0NMYh5bGV8KdAkgFtm3bRt++fcu1p6WlkZuby549e6q9z6NHjwLFQUZEREREpKFRAKlAZmYmKSkp5dpL2jIyMqq9z7lz55KYmKjrQERERESkQXLZXYBV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P/ywmZKSYkZFRZmXXXaZ+cEHH5T5niFDhpgOh6Nc38OHD5tjxowxExMTzfj4eHPkyJHmvn37rCq9Tqjp+Fb0Mzp06FArn0LYq83P8MV0J/TyajO+x44dMydNmmQ2adLEjIqKMi+//PJyfaV2Y/zGG2+Yl112mdm4cWMzJibGvPzyy82VK1daVXqd0a5du9LXUIfDUfr66nA4zG+//dY0TdOcNGlSmX+XqOrxRkNW0/Ft165dwPe6C4/d5DydAREREREREcvoGhAREREREbGMAoiIiIiIiFhGAURERERERCyjACIiIiIiIpZRABEREREREcsogIiIiIiIiGUUQERERERExDIKICIiIiIiYhkFEBERERERsYwCiIiIiIiIWEYBRERERERELKMAIiIiIiIillEAERERERERyyiAiIiIiIiIZRRARERERETEMgogIiIiIiJiGQUQERERERGxjAKIiIiIiIhYRgFEREREREQsowAiIiIiIiKWUQARERERERHLKICIiIiIiIhlFEBERERERMQyCiAiIiIiImIZBRAREREREbGMAoiIiIiIiFhGAURERERERCyjACIiIiIiIpZRABEREREREcsogIiIiIiIiGUUQERERERExDIKICIiIiIiYhkFEBERERERsYwCiIiIiIiIWEYBRERERERELKMAIiIiIiIillEAERERERERyyiAiIiIiIiIZRRARERERETEMv8fZrQX0lXDgrUAAAAASUVORK5CYII=\\n"\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "context.Base_displayImage(image_object=plt)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "markdown",\n
+   "metadata": {\n
+    "collapsed": true\n
+   },\n
+   "source": [\n
+    "# Now, we\'ll play with erp5 context objects"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 16,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "portal = context.getPortalObject()"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 17,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "<ERP5Site at /erp5>\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "portal"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 18,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "image_list = portal.portal_catalog(portal_type=\'Image\', reference=\'louvre\')\\n",\n
+    "image = image_list[0]"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 19,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "[\'__allow_access_to_unprotected_subobjects__\', \'__doc__\', \'__getitem__\', \'__init__\', \'__items__\', \'__len__\', \'__module__\', \'_class\', \'_data\', \'_data_dictionary\', \'_index\', \'_names\', \'_nv\', \'_parent\', \'_row\', \'_schema\', \'_searchable_result_columns\', \'asRDB\', \'data_dictionary\', \'dictionaries\', \'names\', \'tuples\']\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "print dir(image_list)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 14,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "name": "stdout",\n
+     "output_type": "stream",\n
+     "text": [\n
+      "[{\'reference\': \'erp5_objects_zbigarray\', \'title\': \'erp5_objects_zbigarray\'}, {\'reference\': \'erp5_objects_zbigarray2\', \'title\': \'erp5_objects_zbigarray2\'}, {\'reference\': \'foo\', \'title\': \'foo\'}, {\'reference\': \'wendelin_test_ayush\', \'title\': \'wendelin_test_ayush\'}]"\n
+     ]\n
+    }\n
+   ],\n
+   "source": [\n
+    "%my_notebooks"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 20,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "[(\'/erp5/image_module/1\', 1131528L)]\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "image_list.tuples()"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 21,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "[\'PATH\', \'UID\', \'__ac_permissions__\', \'__add__\', \'__allow_access_to_unprotected_subobjects__\', \'__class__\', \'__cmp__\', \'__delattr__\', \'__delitem__\', \'__delslice__\', \'__dict__\', \'__doc__\', \'__format__\', \'__getattribute__\', \'__getitem__\', \'__getslice__\', \'__getstate__\', \'__hash__\', \'__implemented__\', \'__init__\', \'__len__\', \'__module__\', \'__mul__\', \'__new__\', \'__of__\', \'__providedBy__\', \'__provides__\', \'__record_schema__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__rmul__\', \'__roles__\', \'__setattr__\', \'__setitem__\', \'__setslice__\', \'__setstate__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'__weakref__\', \'_aq_dynamic\', \'absolute_url\', \'activate\', \'getObject\', \'getPath\', \'getProperty\', \'getRID\', \'getURL\', \'getUid\', \'getUrl\', \'resolve_url\', \'security\']\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "dir(image)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 22,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "/erp5/image_module/1\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "print image.getURL()"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "markdown",\n
+   "metadata": {},\n
+   "source": [\n
+    "# Now play with pandas and ZBigArray objects from Wendelin"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 23,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "data_array = portal.data_array_module.newContent(portal_type = \'Data Array\')\\n",\n
+    "data_array.initArray((3, 3), np.uint8)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 24,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "persistent_data_array = data_array.getArray()"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 25,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "[\'__array__\', \'__class__\', \'__delattr__\', \'__dict__\', \'__doc__\', \'__format__\', \'__getattribute__\', \'__getitem__\', \'__getstate__\', \'__hash__\', \'__init__\', \'__len__\', \'__module__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__setattr__\', \'__setitem__\', \'__setstate__\', \'__sizeof__\', \'__slotnames__\', \'__slots__\', \'__str__\', \'__subclasshook__\', \'__weakref__\', \'_dtype\', \'_fileh\', \'_init0\', \'_p_activate\', \'_p_changed\', \'_p_deactivate\', \'_p_delattr\', \'_p_estimated_size\', \'_p_getattr\', \'_p_invalidate\', \'_p_jar\', \'_p_mtime\', \'_p_oid\', \'_p_serial\', \'_p_setattr\', \'_p_state\', \'_shape\', \'_stridev\', \'_v_fileh\', \'append\', \'data\', \'dtype\', \'itemsize\', \'nbytes\', \'ndim\', \'resize\', \'shape\', \'size\', \'strides\', \'view\', \'zfile\']\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "dir(persistent_data_array)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 26,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "import pandas as pd"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 27,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": []\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "df = pd.DataFrame(persistent_data_array[:])"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 38,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "   0  1  2\\n",\n
+       "0  0  0  0\\n",\n
+       "1  0  0  0\\n",\n
+       "2  0  0  0\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "df"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 39,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "<matplotlib.axes._subplots.AxesSubplot object at 0x7f6742117250>\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "df.plot(title=\'New Array\')"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 30,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "text/plain": [\n
+       "<matplotlib.axes._subplots.AxesSubplot object at 0x7f67426362d0>\\n"\n
+      ]\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "pdplot"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": 40,\n
+   "metadata": {\n
+    "collapsed": false\n
+   },\n
+   "outputs": [\n
+    {\n
+     "data": {\n
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8VPW9//H3hGAghLKJsjWCFAgWKwZIQ6HKorkKOEXWooIsSpWtBkgAlUIqogmyyOYVQTZtAANGi1aBEJBYRG4C5fZXg4DQsFnAgAUCwZL5/YGZ65CFIPA9HL6v5+ORh/d+53xnPkfej5o358yMx+fz+QQAAAAABgQ5PQAAAAAAe1BAAAAAABhDAQEAAABgDAUEAAAAgDEUEAAAAADGUEAAAAAAGEMBAQAAAGAMBQQAAACAMRQQAAAAAMZQQAAAAAAYQwEBAAAAYAwFBAAAAIAxFBAAAAAAxlBAAAAAABhDAQEAAABgDAUEAAAAgDEUEAAAAADGUEAAAAAAGEMBAQAAAGAMBQQAAACAMRQQAAAAAMZQQAAAAAAYQwEBAAAAYAwFBAAAAIAxFBAAAAAAxlBAAAAAABhDAQEAAABgDAUEAAAAgDEUEAAAAADGUEAAAAAAGEMBAQAAAGAMBQQAAACAMRQQAAAAAMZQQAAAAAAYQwEBAAAAYAwFBAAAAIAxFBAAAAAAxlBAAAAAABhDAQGA61RQUJCCgoJUv3595efnF3tM/fr1FRQUpIKCAsPT/Thvv/22/7zWrl3r9DgAAAdQQADgOpeTk6MZM2aU+LjH4zE4zZWZN2+ef9558+Y5PA0AwAken8/nc3oIAEBRQUFBqlatmjwej86fP6/du3erRo0aAcfUr19f+/fv13fffaegoOv775R27typpk2b6v7771dubq527Nih/fv365ZbbnF6NACAQdf3f60AwHKVKlXS+PHj9e233yohIeGy9m7ZskU9evRQrVq1FBISovDwcD311FM6fPhwwHF9+vRRUFCQdu/eHbD++OOPKygoSPfdd1/A+smTJ1W+fHnde++9lzXPG2+8IUkaMGCA+vfvr++++06LFi0q9thFixYpKChIixcv1kcffaR27dqpSpUq/pJ1qcclKTU1VY899pgaN26ssLAwhYWFqWXLlpo1a5Yu/ru3wn8Hn3zySbHzrFy5UkFBQRoxYsRlnTMAoCgKCABc54YOHaqGDRvq9ddfL1ISSvLmm2+qTZs2+vjjj9WxY0fFxsaqZcuWmj9/vlq2bKn9+/f7jy0sGGlpaQHPUfj/b968OeA9KBs3btT58+eLFJPSnDt3TosXL1bVqlX18MMP65FHHtFNN92k+fPnl7ovJSVFDz30kKpUqaIhQ4bot7/9bZkfHzdunLZv367WrVtrxIgRevzxx3Xq1Cn9/ve/1+OPPx7wPEOGDJFU8m1hr7/+ujwej5566qkynzMAoAQ+AMB1yePx+H7605/6fD6fLyUlxefxeHzdunULOOa2227zBQUF+c6fP+9f27lzp698+fK+Ro0a+Q4dOhRwfFpamq9cuXK+hx9+2L/21Vdf+Twej69nz57+tezsbJ/H4/HFxMT4PB6PLy0tzf/YM8884/N4PL6MjIwyn0tycrLP4/H4nnrqKf9ajx49ijx3oYULF/o8Ho+vXLlyvo8//viyHy88r4sVFBT4Hn/8cZ/H4/Ft2bIl4LFmzZr5KlSo4Pvmm28C1vfs2ePzeDy+tm3blulcAQCl4woIALhA9+7d1bp1a7377rv69NNPSz32tdde03/+8x+9+uqrql27dsBjHTp00EMPPaQ///nPOn36tCSpQYMGuu2225Senu4/rvDqxx//+EeVK1cu4OpIWlqawsLCFB0dXeb5C2+/6t+/v3+t8P8u7c3ov/nNbxQTE/OjHm/QoEGRNY/H47+Nas2aNQGPPf3008rPzy9yW1jh7L/73e9KnAMAUHYUEABwialTp0qSRo8eXepxmzdvliRt2LBBEydOLPJz5MgRnT9/Xjt37vTv6dixo7755hv97W9/kyStX79ederU0S9/+Uu1aNHCX0COHj2qv//972rbtq3KlStXprl3796t9PR0RURE6Je//KV//YEHHlCtWrWUmpqqb775pti9UVFRpT53aY9/8803Gjt2rH7xi18oLCzM//G/LVu2lCQdPHgw4Ph+/fopLCwsoBAVvk+levXq6tWr1yXPFQBwacFODwAAKJvo6Gj16NFDKSkpWrFiRYm/EBf+Mj9lypQSn8vj8fivgEgXCsibb76ptLQ03XnnnUpPT1eXLl0kXbhqMmXKFP373//W+vXr/ceXVXFXPySpXLlyeuSRRzRt2jQtWrRIo0aNKrK3Vq1apT53SY+fOHFCrVq10r59+/TLX/5S/fv3V/Xq1RUcHKzjx4/r1VdfLfLdKmFhYXrsscf03//939qwYYPatWun999/X//6178UGxurm266qcznDAAoGVdAAMBFXnrpJZUvX17jxo3Td999V+wxVapUkcfj0b///W8VFBQU+3P+/Hn9+te/9u/p0KGDJGnt2rXavn27jh8/7i8ZHTp00Pnz55Wenu6/ElJ4/KX88JOuxo4d678KUfgzbdo0Sf9XUi52qe84Kenx+fPna9++fZo4caI2b96s2bNn649//KP+8Ic/lHol4+mnn5Z04U3nhf/0eDwaPHhwqXMAAMqOKyAA4CINGzbUkCFD9Oqrr2rWrFnFHtO6dWtlZWXpk08+UadOncr0vLfeeqvuuOMObdq0SR999JGk/7vK0aZNG4WEhCgtLU3r169X9erVdffdd5fped977z0dPXpUERERatu2bbHHrF+/Xl9++aU++eQT3XPPPWV63ksp/LSw7t27F3ls48aNJe6788471aZNG7377rvasmWL1q1bp3vvvVdNmjS5KnMBALgCAgCu84c//EFVq1bViy++GHAbVaFhw4apfPnyio2N1a5du4o8fu7cOW3atKnIeocOHZSXl6eZM2eqcePGqlu3riSpYsWKat26tVasWKGvvvpK7dq1K/Oshe+n+OMf/6h58+YV+/Pss88GHHs1FL4B/YdvrJekbdu26aWXXip179NPP61z586pR48eksRH7wLAVUYBAQCXqVatmp599lkdP35c33zzTZEv1WvSpInefPNN7du3Tz//+c/l9Xo1atQojRgxQl27dlXt2rWL/USnwiseR44cKfIej44dO+rIkSMBx13K3r17tW7dOtWsWVNdu3Yt8bjevXurUqVKWrlypY4fP16m576Ufv36qXr16nrmmWfUvXt3jRkzRt26dVN0dLQ6d+5c6t6ePXuqZs2aOnjwoGrWrKlu3bpdlZkAABdYWUDy8/M1ZswY1alTR6GhoYqOjta6devKtPfgwYPq1auXqlWrpipVqqhr167au3dvscf+61//0u9+9zvVrVtXFStWVIMGDfTEE09czVMBYKkRI0aofv368ng8xb4P4tFHH1VmZqYeffRR7dixQ3PmzNGf/vQnffXVV+rVq5fmzp1bZE+7du0UFBQkj8dT5D0ehaWjuMdKMn/+fHk8HvXt21fBwSXf8VupUiU98sgjOnfunJYsWeJfL+39HyWdd6HatWtr06ZN6ty5szIyMjRnzhzt379fr7322iWvgJQvX16PPPKIpAtvnC9f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\\n"\n
+     },\n
+     "metadata": {},\n
+     "output_type": "display_data"\n
+    }\n
+   ],\n
+   "source": [\n
+    "context.Base_displayImage(image_object=plt)"\n
+   ]\n
+  },\n
+  {\n
+   "cell_type": "code",\n
+   "execution_count": null,\n
+   "metadata": {\n
+    "collapsed": true\n
+   },\n
+   "outputs": [],\n
+   "source": []\n
+  }\n
+ ],\n
+ "metadata": {\n
+  "kernelspec": {\n
+   "display_name": "ERP5",\n
+   "language": "python",\n
+   "name": "erp5"\n
+  },\n
+  "language_info": {\n
+   "mimetype": "text/plain",\n
+   "name": "python"\n
+  }\n
+ },\n
+ "nbformat": 4,\n
+ "nbformat_minor": 0\n
+}\n
+
+
+]]></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/getError.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/getError.xml
new file mode 100644
index 0000000000000000000000000000000000000000..604ff1aee3414dd1f25754a55f68a9d05ca551c7
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/getError.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>getError</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>JupyterCompile</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>getError</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>getError</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py
new file mode 100644
index 0000000000000000000000000000000000000000..0623719ad011d9107e95fe363fe5602baac56bd8
--- /dev/null
+++ b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py
@@ -0,0 +1,432 @@
+##############################################################################
+#
+# Copyright (c) 2002-2015 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from Products.ERP5Type.tests.utils import addUserToDeveloperRole
+from Products.ERP5Type.tests.utils import createZODBPythonScript, removeZODBPythonScript
+
+import time
+import json
+import base64
+import transaction
+
+class TestExecuteJupyter(ERP5TypeTestCase):
+  
+  def afterSetUp(self):
+    """
+    Ran to set the environment
+    """
+    self.notebook_module = self.portal.getDefaultModule(portal_type='Data Notebook')
+    self.assertTrue(self.notebook_module is not None)
+
+    # Create user to be used in tests
+    user_folder = self.getPortal().acl_users
+    user_folder._doAddUser('dev_user', '', ['Manager',], [])
+    user_folder._doAddUser('member_user', '', ['Member','Authenticated',], [])
+    # Assign developer role to user
+    addUserToDeveloperRole('dev_user')
+    self.tic()
+
+  def _newNotebook(self, reference=None):
+    """
+    Function to create new notebook
+    """
+    return self.notebook_module.DataNotebookModule_addDataNotebook(
+      title='Some Notebook Title',
+      reference=reference,
+      form_id='DataNotebookModule_viewAddNotebookDialog',
+      batch_mode=True
+      )
+
+  def _newNotebookLine(self, notebook_module=None, notebook_code=None):
+    """
+    Function to create new notebook line
+    """
+    return notebook_module.DataNotebook_addDataNotebookLine(
+      notebook_code=notebook_code,
+      batch_mode=True
+      )
+
+  def testJupyterCompileErrorRaise(self):
+    """
+    Test if JupyterCompile portal_component raises error on the server side.
+    Take the case in which one line in a statement is valid and another is not.
+    """
+    portal = self.getPortalObject()
+    script_id = "JupyterCompile_errorResult"
+    script_container = portal.portal_skins.custom
+
+    new_test_title = "Wendelin Test 1"
+    # Check if the existing title is different from new_test_title or not
+    if portal.getTitle()==new_test_title:
+      new_test_title = "Wendelin"
+
+    python_script = """
+portal = context.getPortalObject()
+portal.setTitle('%s')
+print an_undefined_variable
+"""%new_test_title
+
+    # Create python_script object with the above given code and containers
+    createZODBPythonScript(script_container, script_id, '', python_script)
+    self.tic()
+
+    # Call the above created script in jupyter_code
+    jupyter_code = """
+portal = context.getPortalObject()
+portal.%s()
+"""%script_id
+
+    # Make call to Base_runJupyter to run the jupyter code which is making
+    # a call to the newly created ZODB python_script and assert if the call raises
+    # NameError as we are sending an invalid python_code to it
+    self.assertRaises(
+                      NameError,
+                      portal.Base_runJupyter,
+                      jupyter_code=jupyter_code,
+                      old_local_variable_dict=portal.Base_addLocalVariableDict()
+                      )
+    # Abort the current transaction of test so that we can proceed to new one
+    transaction.abort()
+    # Clear the portal cache from previous transaction
+    self.portal.portal_caches.clearAllCache()
+    # Remove the ZODB python script created above
+    removeZODBPythonScript(script_container, script_id)
+
+    # Test that calling Base_runJupyter shouldn't change the context Title
+    self.assertNotEqual(portal.getTitle(), new_test_title)
+
+  def testUserCannotAccessBaseExecuteJupyter(self):
+    """
+    Test if non developer user can't access Base_executeJupyter
+    """
+    portal = self.portal
+
+    self.login('member_user')
+    result = portal.Base_executeJupyter.Base_checkPermission('portal_components', 'Manage Portal')
+
+    self.assertFalse(result)
+
+  def testUserCanCreateNotebookWithoutCode(self):
+    """
+    Test the creation of Data Notebook object
+    """
+    portal = self.portal
+
+    notebook = self._newNotebook(reference='new_notebook_without any_code')
+    self.tic()
+
+    notebook_search_result = portal.portal_catalog(
+                                      portal_type='Data Notebook',
+                                      title='Some Notebook Title'
+                                      )
+
+    result_title = [obj.getTitle() for obj in notebook_search_result]
+    if result_title:
+      self.assertEquals(notebook.getTitle(), result_title[0])
+
+  def testUserCanCreateNotebookWithCode(self):
+    """
+    Test if user can create Data Notebook Line object or not
+    """
+    portal = self.portal
+
+    notebook = self._newNotebook(reference='new_notebook_with_code %s' %time.time())
+    self.tic()
+
+    notebook_code='some_random_invalid_notebook_code %s' % time.time()
+    notebook_line = self._newNotebookLine(
+                            notebook_module=notebook,
+                            notebook_code=notebook_code
+                            )
+    self.tic()
+
+    notebook_line_search_result = portal.portal_catalog(portal_type='Data Notebook Line')
+
+    result_reference_list = [obj.getReference() for obj in notebook_line_search_result]
+    result_id_list = [obj.getId() for obj in notebook_line_search_result]
+
+    if result_reference_list:
+      self.assertIn(notebook.getReference(), result_reference_list)
+      self.assertEquals(notebook_line.getReference(), notebook.getReference())
+      self.assertIn(notebook_line.getId(), result_id_list)
+
+  def testBaseExecuteJupyterAddNewNotebook(self):
+    """
+    Test the functionality of Base_executeJupyter python script.
+    This test will cover folowing cases - 
+    1. Call to Base_executeJupyter without python_expression
+    2. Creating new notebook using the script
+    """
+    portal = self.portal
+    self.login('dev_user')
+    reference = 'Test.Notebook.AddNewNotebook %s' % time.time()
+    title = 'Test new NB Title %s' % time.time()
+
+    portal.Base_executeJupyter(title=title, reference=reference)
+    self.tic()
+
+    notebook_list = portal.portal_catalog(
+                                    portal_type='Data Notebook',
+                                    reference=reference
+                                    )
+
+    self.assertEquals(len([obj.getTitle() for obj in notebook_list]), 1)
+
+  def testBaseExecuteJupyterAddNotebookLine(self):
+    """
+    Test if the notebook adds code history to the Data Notebook Line
+    portal type while multiple calls are made to Base_executeJupyter with
+    notebooks having same reference
+    """
+    portal = self.portal
+    self.login('dev_user')
+    python_expression = "print 52"
+    reference = 'Test.Notebook.AddNewNotebookLine %s' % time.time()
+    title = 'Test NB Title %s' % time.time()
+
+    # Calling the function twice, first to create a new notebook and then
+    # sending python_expression to check if it adds to the same notebook
+    portal.Base_executeJupyter(title=title, reference=reference)
+    self.tic()
+
+    portal.Base_executeJupyter(
+                              reference=reference,
+                              python_expression=python_expression
+                              )
+    self.tic()
+
+    notebook = portal.portal_catalog.getResultValue(
+                                          portal_type='Data Notebook',
+                                          reference=reference
+                                          )
+
+    notebook_line_search_result = portal.portal_catalog.getResultValue(
+                                              portal_type='Data Notebook Line',
+                                              reference=reference
+                                              )
+    # As we use timestamp in the reference and the notebook is created in this
+    # function itself so, if anyhow a new Data Notebook Line has been created,
+    # then it means that the code has been added to Input and Output of Data
+    # Notebook Line portal_type
+    if notebook_line_search_result:
+      self.assertEquals(notebook.getReference(), notebook_line_search_result.getReference())
+
+  def testBaseExecuteJupyterErrorHandling(self):
+    """
+    Test if the Base_executeJupyter with invalid python code raises error on
+    server side. We are not catching the exception here. Expected result is
+    raise of exception.
+    """
+    portal = self.portal
+    self.login('dev_user')
+    python_expression = 'some_random_invalid_python_code'
+    reference = 'Test.Notebook.ExecuteJupyterErrorHandling %s' % time.time()
+    title = 'Test NB Title %s' % time.time()
+
+    self.assertRaises(
+                      NameError, 
+                      portal.Base_executeJupyter,
+                      title=title,
+                      reference=reference,
+                      python_expression=python_expression
+                      )
+
+  def testBaseExecuteJupyterSaveActiveResult(self):
+    """
+    Test if the result is being saved inside active_process and the user can
+    access the loacl variable and execute python expression on them
+    """
+    portal = self.portal
+    self.login('dev_user')
+    python_expression = 'a=2; b=3; print a+b'
+    reference = 'Test.Notebook.ExecutePythonExpressionWithVariables %s' % time.time()
+    title = 'Test NB Title %s' % time.time()
+
+    portal.Base_executeJupyter(
+                              title=title,
+                              reference=reference,
+                              python_expression=python_expression
+                              )
+    self.tic()
+
+    notebook_list = portal.portal_catalog(
+                                          portal_type='Data Notebook',
+                                          reference=reference
+                                          )
+    notebook = notebook_list[0]
+    process_id = notebook.getProcess()
+    active_process = portal.portal_activities[process_id]
+    result_list = active_process.getResultList()
+    local_variable_dict = result_list[0].summary['variables']
+    result = {'a':2, 'b':3}
+    self.assertDictContainsSubset(result, local_variable_dict)
+
+  def testBaseExecuteJupyterRerunWithPreviousLocalVariables(self):
+    """
+    Test if the Base_compileJupyter function in extension is able to recognize
+    the local_variables from the previous run and execute the python code
+    """
+    portal = self.portal
+    self.login('dev_user')
+    python_expression = 'a=2; b=3; print a+b'
+    reference = 'Test.Notebook.ExecutePythonExpressionWithVariables %s' % time.time()
+    title = 'Test NB Title %s' % time.time()
+
+    portal.Base_executeJupyter(
+                              title=title,
+                              reference=reference,
+                              python_expression=python_expression
+                              )
+    self.tic()
+
+    python_expression = 'x=5; b=4; print a+b+x'
+    result = portal.Base_executeJupyter(
+                                        reference=reference,
+                                        python_expression=python_expression
+                                        )
+    self.tic()
+
+    expected_result = '11'
+    self.assertEquals(json.loads(result)['code_result'].rstrip(), expected_result)
+
+  def testBaseExecuteJupyterWithContextObjectsAsLocalVariables(self):
+    """
+    Test Base_executeJupyter with context objects as local variables
+    """
+    portal = self.portal
+    self.login('dev_user')
+    python_expression = 'a=context.getPortalObject(); print a.getTitle()'
+    reference = 'Test.Notebook.ExecutePythonExpressionWithVariables %s' % time.time()
+    title = 'Test NB Title %s' % time.time()
+
+    result = portal.Base_executeJupyter(
+                                        title=title,
+                                        reference=reference,
+                                        python_expression=python_expression
+                                        )
+    self.tic()
+
+    expected_result = portal.getTitle()
+    self.assertEquals(json.loads(result)['code_result'].rstrip(), expected_result)
+
+  def testSavingModuleObjectLocalVariables(self):
+    """
+    Test to check the saving of module objects in local_variable_dict
+    and if they work as expected.
+    """
+    portal = self.portal
+    self.login('dev_user')
+    jupyter_code = """
+import imghdr as imh
+import sys
+"""
+    reference = 'Test.Notebook.ModuleObject %s' %time.time()
+    portal.Base_executeJupyter(
+      reference=reference,
+      python_expression=jupyter_code
+      )
+    self.tic()
+
+    jupyter_code =  "print imh.__name__"
+    result = portal.Base_executeJupyter(
+      reference=reference,
+      python_expression=jupyter_code)
+
+    self.assertEquals(json.loads(result)['code_result'].rstrip(), 'imghdr')
+    self.assertEquals(json.loads(result)['mime_type'].rstrip(), 'text/plain')
+
+  def testBaseDisplayImageERP5Image(self):
+    """
+    Test the fucntioning of Base_displayImage external method of erp5_data_notebook
+    BT5 for ERP5 image object as parameter and change
+    """
+    self.image_module = self.portal.getDefaultModule('Image')
+    self.assertTrue(self.image_module is not None)
+    # Create a new ERP5 image object
+    reference = 'testBase_displayImageReference'
+    data = 'qwertyuiopasdfghjklzxcvbnm<somerandomcharacterstosaveasimagedata>'
+    self.image_module.newContent(
+      portal_type='Image',
+      id='testBase_displayImageID',
+      reference=reference,
+      data=data,
+      filename='test.png'
+      )
+    self.tic()
+
+    # Call Base_displayImage from inside of Base_runJupyter
+    jupyter_code = """
+image = context.portal_catalog.getResultValue(portal_type='Image',reference='%s')
+context.Base_displayImage(image_object=image)
+"""%reference
+
+    local_variable_dict = {'imports' : {}, 'variables' : {}}
+    result = self.portal.Base_runJupyter(
+      jupyter_code=jupyter_code,
+      old_local_variable_dict=local_variable_dict
+      )
+
+    self.assertEquals(result['result_string'].rstrip(), base64.b64encode(data))
+    # Mime_type shouldn't be  image/png just because of filename, instead it is
+    # dependent on file and file data
+    self.assertNotEqual(result['mime_type'], 'image/png')
+
+  def testImportSameModuleDifferentNamespace(self):
+    """
+    Test if the imports of python modules with same module name but different
+    namespace work correctly as expected
+    """
+    portal = self.portal
+    self.login('dev_user')
+
+    # First we execute a jupyter_code which imports sys module as 'ss' namespace
+    jupyter_code = "import sys as ss"
+    reference = 'Test.Notebook.MutlipleImports %s' %time.time()
+    portal.Base_executeJupyter(
+      reference=reference,
+      python_expression=jupyter_code
+      )
+    self.tic()
+
+    # Call Base_executeJupyter again with jupyter_code which imports sys module
+    # as 'ss1' namespace
+    jupyter_code1 = "import sys as ss1"
+    portal.Base_executeJupyter(
+      reference=reference,
+      python_expression=jupyter_code1
+      )
+    self.tic()
+
+    # Call Base_executeJupyter to check for the name of module and match it with
+    # namespace 'ss1'
+    jupyter_code2 = "print ss1.__name__"
+    result = portal.Base_executeJupyter(
+      reference=reference,
+      python_expression=jupyter_code2
+      )
+    self.assertEquals(json.loads(result)['code_result'].rstrip(), 'sys')
diff --git a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.xml b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5bcfc5ca328efbfa5d0d62ae981f8cda09cf64a6
--- /dev/null
+++ b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Test Component" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>testExecuteJupyter</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Unittest for Base_executeJupyter python script</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>test.erp5.testExecuteJupyter</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Test Component</string> </value>
+        </item>
+        <item>
+            <key> <string>sid</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>erp5</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>component_validation_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <none/>
+        <list>
+          <dictionary>
+            <item>
+                <key> <string>action</string> </key>
+                <value> <string>validate</string> </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>validated</string> </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/bt/change_log b/bt5/erp5_data_notebook/bt/change_log
new file mode 100644
index 0000000000000000000000000000000000000000..20f19b91184c4eb63da78c3d1f4d13081b7c307f
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/change_log
@@ -0,0 +1,2 @@
+2015-10-16 Ivan
+* Initial import of Ayush Tiwari's work
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/copyright_list b/bt5/erp5_data_notebook/bt/copyright_list
new file mode 100644
index 0000000000000000000000000000000000000000..f79f4a2bd659acb6b19ca05d002edcd6a3d7c64a
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/copyright_list
@@ -0,0 +1 @@
+Copyright (c) 2015-2020 Nexedi SA
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/dependency_list b/bt5/erp5_data_notebook/bt/dependency_list
new file mode 100644
index 0000000000000000000000000000000000000000..9452139227d771ae44ee2fa9815d84486fc52880
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/dependency_list
@@ -0,0 +1 @@
+erp5_dms
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/description b/bt5/erp5_data_notebook/bt/description
new file mode 100644
index 0000000000000000000000000000000000000000..b3ff51999b7ad650ff78e5eee5be17f08a323789
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/description
@@ -0,0 +1,5 @@
+Interaction between Jupyter(IPython Notebook) and ERP5.
+
+!WARNING!
+This business template is unsafe to install on a public server as one of the extensions uses eval and allows remote code execution. Proper security should be taken into account.
+!WARNING!
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/license b/bt5/erp5_data_notebook/bt/license
new file mode 100644
index 0000000000000000000000000000000000000000..3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/license
@@ -0,0 +1 @@
+GPL
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_action_path_list b/bt5/erp5_data_notebook/bt/template_action_path_list
new file mode 100644
index 0000000000000000000000000000000000000000..84ae3d5d48a1ba117fa3d8ff3021f7b7941511eb
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_action_path_list
@@ -0,0 +1,5 @@
+Data Notebook Line | new_notebook_line
+Data Notebook Line | view
+Data Notebook Module | view
+Data Notebook | new_notebook
+Data Notebook | view
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_extension_id_list b/bt5/erp5_data_notebook/bt/template_extension_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..12963e24c4e95420c8fc3a3d126a59c1f16fb387
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_extension_id_list
@@ -0,0 +1 @@
+extension.erp5.JupyterCompile
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_format_version b/bt5/erp5_data_notebook/bt/template_format_version
new file mode 100644
index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_format_version
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_module_id_list b/bt5/erp5_data_notebook/bt/template_module_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..ad7b2a23bd3f599fc62089cb6da1931d7c1a668e
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_module_id_list
@@ -0,0 +1 @@
+data_notebook_module
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list
new file mode 100644
index 0000000000000000000000000000000000000000..8143b7d6069bcee7441bedcc0587722409e0b67a
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list
@@ -0,0 +1,2 @@
+Data Notebook Module | Data Notebook
+Data Notebook | Data Notebook Line
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list b/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list
new file mode 100644
index 0000000000000000000000000000000000000000..5de3b435e5539dd225f6580973e722b81311c1df
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list
@@ -0,0 +1,2 @@
+Data Notebook Module | business_application
+Data Notebook | source
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_id_list b/bt5/erp5_data_notebook/bt/template_portal_type_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..cf43d8fdeec9d2ca2e16698d84a477e342f06446
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_id_list
@@ -0,0 +1,3 @@
+Data Notebook
+Data Notebook Line
+Data Notebook Module
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_property_sheet_list b/bt5/erp5_data_notebook/bt/template_portal_type_property_sheet_list
new file mode 100644
index 0000000000000000000000000000000000000000..7bd68a08da14069f6f4452e347947e9b06a81957
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_property_sheet_list
@@ -0,0 +1,3 @@
+Data Notebook Line | JupyterNotebookLine
+Data Notebook | JupyterNotebook
+Data Notebook | Reference
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list b/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list
new file mode 100644
index 0000000000000000000000000000000000000000..0047f146fcc4bbac3cfb65daa06949fe751314f0
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list
@@ -0,0 +1 @@
+Data Notebook | edit_workflow
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_property_sheet_id_list b/bt5/erp5_data_notebook/bt/template_property_sheet_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..79e856d4458beb55db4cae57cfbc698625e53d4a
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_property_sheet_id_list
@@ -0,0 +1,2 @@
+JupyterNotebook
+JupyterNotebookLine
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_skin_id_list b/bt5/erp5_data_notebook/bt/template_skin_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..447b3c922232075df12d130e6856cd62bff2defa
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_skin_id_list
@@ -0,0 +1 @@
+erp5_data_notebook
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_test_id_list b/bt5/erp5_data_notebook/bt/template_test_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..e7771f9243c47b724ed6084a1c4dc6027a4631c2
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/template_test_id_list
@@ -0,0 +1 @@
+test.erp5.testExecuteJupyter
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/test_dependency_list b/bt5/erp5_data_notebook/bt/test_dependency_list
new file mode 100644
index 0000000000000000000000000000000000000000..bff77e32d84989312efdf3b2caed2e39f9a513ed
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/test_dependency_list
@@ -0,0 +1 @@
+erp5_full_text_mroonga_catalog
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/title b/bt5/erp5_data_notebook/bt/title
new file mode 100644
index 0000000000000000000000000000000000000000..447b3c922232075df12d130e6856cd62bff2defa
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/title
@@ -0,0 +1 @@
+erp5_data_notebook
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/version b/bt5/erp5_data_notebook/bt/version
new file mode 100644
index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de
--- /dev/null
+++ b/bt5/erp5_data_notebook/bt/version
@@ -0,0 +1 @@
+1
\ No newline at end of file