anchor.diff:        permission: permission,
         node1_id: topic1.id,
         node2_id: topic2.id
  -    });
  -    Metamaps.Synapses.add(synapse);
  +    })
  +    Metamaps.Synapses.add(synapse)
   
       var mapping = new Metamaps.Backbone.Mapping({
  -      mappable_type: "Synapse",
  -      mappable_id: synapse.cid,
  -    });
  -    Metamaps.Mappings.add(mapping);
  -
  -    Metamaps.Synapse.renderSynapse(mapping, synapse, node1, node2, true);
  -  },
  -};
  +      mappable_type: 'Synapse',
  +      mappable_id: synapse.cid
  +    })
  +    Metamaps.Mappings.add(mapping)
  +
  +    Metamaps.Synapse.renderSynapse(mapping, synapse, node1, node2, true)
  +  }
  +}
  
positive.code: /*
   * Example tab-separated input:
   * Some fields will be ignored
   *
   * Topics								
   * Id	Name	Metacode	X	Y	Description	Link	User	Permission
   * 8	topic8	Action	-231	131			admin	commons
   * 5	topic	Action	-229	-131			admin	commons
   * 7	topic7.1	Action	-470	-55	hey		admin	commons
   * 2	topic2	Event	-57	-63			admin	commons
   * 1	topic1	Catalyst	-51	50			admin	commons
   * 6	topic6	Action	-425	63			admin	commons
   * 								
   * Synapses								
   * Topic1	Topic2	Category	Description	User	Permission		
   * 6	2	from-to		admin	commons		
   * 6	1	from-to		admin	commons		
   * 6	5	from-to		admin	commons		
   * 2	7	from-to		admin	commons		
   * 8	6	from-to		admin	commons		
   * 8	1	from-to		admin	commons		
   *
   */
  
  Metamaps.Import = {
  
negative.code:   synapseWhitelist: [
      'topic1', 'topic2', 'category', 'desc', 'description', 'permission'
    ],
    cidMappings: {}, // to be filled by import_id => cid mappings
  
    init: function () {
      var self = Metamaps.Import
  
      $('body').bind('paste', function (e) {
        if (e.target.tagName === 'INPUT') return
  
        var text = e.originalEvent.clipboardData.getData('text/plain')
  
        var results
        if (text.trimLeft()[0] === '{') {
          try {
            results = JSON.parse(text)
          } catch (e) {
            results = false
          }
        } else {
          results = self.parseTabbedString(text)
        }
        if (results === false) return
  
        var topics = results.topics
        var synapses = results.synapses
  
        if (topics.length > 0 || synapses.length > 0) {
          if (window.confirm('Are you sure you want to create ' + topics.length +
              ' new topics and ' + synapses.length + ' new synapses?')) {
            self.importTopics(topics)
            self.importSynapses(synapses)
          } // if
        } // if
      })
    },
  
    abort: function (message) {
      console.error(message)
    },
  
    simplify: function (string) {
      return string
        .replace(/(^\s*|\s*$)/g, '')
        .toLowerCase()
    },
  
    parseTabbedString: function (text) {
      var self = Metamaps.Import
  
      // determine line ending and split lines
      var delim = '\n'
      if (text.indexOf('\r\n') !== -1) {
        delim = '\r\n'
      } else if (text.indexOf('\r') !== -1) {
        delim = '\r'
      } // if
  
      var STATES = {
        ABORT: -1,
  