1(function()
2{
3	// Adds Arrow shapes with control points
4	Sidebar.prototype.addUml25Palette = function()
5	{
6		// Avoids having to bind all functions to "this"
7		var sb = this;
8
9		// Reusable cells
10		var field = new mxCell('+ field: type', new mxGeometry(0, 0, 100, 26), 'text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
11		field.vertex = true;
12
13		var divider = new mxCell('', new mxGeometry(0, 0, 40, 8), 'line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;');
14		divider.vertex = true;
15
16		// Default tags
17		var dt = 'uml ';
18		this.setCurrentSearchEntryLibrary('uml25');
19
20		var fns = [
21			this.createVertexTemplateEntry('shape=umlFrame;whiteSpace=wrap;html=1;width=120;height=30;boundedLbl=1;verticalAlign=middle;align=left;spacingLeft=5;', 340, 180, 'Diagram1 heading', 'Diagram', null, null, 'diagram'),
22			this.createVertexTemplateEntry('shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=center;', 120, 60, 'Comment1 body', 'Comment', null, null, 'uml comment note'),
23			this.createVertexTemplateEntry('shape=partialRectangle;html=1;top=1;align=left;dashed=1;', 200, 20, 'Template1 signature', 'Template signature', null, null, 'template signature'),
24			this.createVertexTemplateEntry('shape=partialRectangle;html=1;top=1;align=left;dashed=1;', 200, 50, 'Template parameter 1\nTemplate parameter 2', 'Template signature', null, null, 'template signature'),
25			this.addEntry('constraint', function()
26			{
27		    	var cell = new mxCell('Constraint1 specification', new mxGeometry(0, 0, 160, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=center;');
28		    	cell.vertex = true;
29		    	var label = new mxCell('<<keyword>>', new mxGeometry(0, 0, cell.geometry.width, 25), 'resizeWidth=1;part=1;strokeColor=none;fillColor=none;align=left;spacingLeft=5;');
30		    	label.geometry.relative = true;
31		    	label.vertex = true;
32		    	cell.insert(label);
33
34				return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Constraint');
35			}),
36		 	this.addEntry(dt + 'classifier', function()
37			{
38		 		var cell1 = new mxCell('&lt;&lt;keyword&gt;&gt;<br><b>Classifier1</b><br>{abstract}', new mxGeometry(0, 0, 140, 183),
39		 			'swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=55;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
40				cell1.vertex = true;
41		 		var field1 = new mxCell('attributes',
42		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
43		 		field1.vertex = true;
44		 		cell1.insert(field1);
45		 		var field2 = new mxCell('attribute1',
46		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
47		 		field2.vertex = true;
48		 		cell1.insert(field2);
49		 		var field3 = new mxCell('inherited attribute2',
50		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#808080;');
51		 		field3.vertex = true;
52		 		cell1.insert(field3);
53		 		var field4 = new mxCell('...',
54		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
55		 		field4.vertex = true;
56		 		cell1.insert(field4);
57				cell1.insert(divider.clone());
58		 		var field5 = new mxCell('operations',
59		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
60		 		field5.vertex = true;
61		 		cell1.insert(field5);
62		 		var field6 = new mxCell('operation1',
63		 				new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
64		 		field6.vertex = true;
65		 		cell1.insert(field6);
66
67				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
68			}),
69			this.createVertexTemplateEntry('shape=process2;fixedSize=1;size=5;fontStyle=1;', 140, 40, 'Classifier1', 'Classifier', null, null, 'classifier'),
70		 	this.addEntry(dt + 'classifier', function()
71			{
72		 		var cell1 = new mxCell('Classifier1', new mxGeometry(0, 0, 140, 183),
73		 			'swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
74				cell1.vertex = true;
75		 		var field1 = new mxCell('internal structure',
76		 				new mxGeometry(0, 0, 140, 30), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
77		 		field1.vertex = true;
78		 		cell1.insert(field1);
79		 		var cell2 = new mxCell('', new mxGeometry(0, 0, 140, 140),
80		 			'swimlane;fontStyle=1;align=center;verticalAlign=top;horizontal=1;startSize=0;collapsible=0;marginBottom=0;html=1;strokeColor=none;fillColor=none;');
81				cell2.vertex = true;
82		 		cell1.insert(cell2);
83		 		var field2 = new mxCell('property1',
84		 				new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
85		 		field2.geometry.relative = true;
86		 		field2.geometry.offset = new mxPoint(20, 20);
87		 		field2.vertex = true;
88		 		cell2.insert(field2);
89		 		var field3 = new mxCell('property2',
90		 				new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
91		 		field3.geometry.relative = true;
92		 		field3.geometry.offset = new mxPoint(20, 90);
93		 		field3.vertex = true;
94		 		cell2.insert(field3);
95		    	var assoc1 = new mxCell('connector1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;exitX=0.15;exitY=1;entryX=0.15;entryY=0;spacingLeft=4;');
96		    	assoc1.geometry.relative = true;
97		    	assoc1.edge = true;
98		    	field2.insertEdge(assoc1, true);
99		    	field3.insertEdge(assoc1, false);
100		    	cell2.insert(assoc1);
101
102				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
103			}),
104			this.createVertexTemplateEntry('fontStyle=1;', 140, 30, 'Association1', 'Association', null, null, 'association'),
105		 	this.addEntry(dt + 'classifier', function()
106			{
107		 		var cell1 = new mxCell('Instance1', new mxGeometry(0, 0, 140, 138),
108		 			'swimlane;fontStyle=4;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
109				cell1.vertex = true;
110		 		var field1 = new mxCell('slot1',
111		 				new mxGeometry(0, 0, 140, 30), 'html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
112		 		field1.vertex = true;
113		 		cell1.insert(field1);
114				cell1.insert(divider.clone());
115		 		var field2 = new mxCell('internal structure',
116		 				new mxGeometry(0, 0, 140, 20), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
117		 		field2.vertex = true;
118		 		cell1.insert(field2);
119		 		var cell2 = new mxCell('', new mxGeometry(0, 0, 140, 50),
120		 			'swimlane;fontStyle=1;align=center;verticalAlign=top;horizontal=1;startSize=0;collapsible=0;marginBottom=0;html=1;strokeColor=none;fillColor=none;');
121				cell2.vertex = true;
122		 		cell1.insert(cell2);
123		 		var field3 = new mxCell('instance2',
124		 				new mxGeometry(0, 0, 80, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
125		 		field3.geometry.relative = true;
126		 		field3.geometry.offset = new mxPoint(30, 10);
127		 		field3.vertex = true;
128		 		cell2.insert(field3);
129
130				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
131			}),
132			this.createVertexTemplateEntry('fontStyle=0;', 120, 40, 'Instance1 value', 'Instance', null, null, 'instance'),
133		 	this.addEntry(dt + 'classifier', function()
134			{
135		 		var cell1 = new mxCell('&lt;&lt;enumeration&gt;&gt;<br><b>Enum1</b>', new mxGeometry(0, 0, 140, 70),
136		 			'swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
137				cell1.vertex = true;
138		 		var field1 = new mxCell('literal1',
139		 				new mxGeometry(0, 0, 140, 30), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
140		 		field1.vertex = true;
141		 		cell1.insert(field1);
142
143				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
144			}),
145			this.addEntry(dt + 'interface generalization', function()
146			{
147				var edge = new mxCell('Interface1, Interface2...', new mxGeometry(-1, 0, 0, 0), 'html=1;verticalAlign=bottom;labelBackgroundColor=none;startArrow=oval;startFill=0;startSize=8;endArrow=none;');
148				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
149				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
150				edge.geometry.relative = true;
151				edge.geometry.x = -1;
152				edge.geometry.y = 3;
153				edge.edge = true;
154
155				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Interface Generalization');
156			}),
157			this.addEntry(dt + 'required interface', function()
158			{
159				var edge = new mxCell('Interface1', new mxGeometry(-1, 0, 0, 0), 'html=1;verticalAlign=bottom;labelBackgroundColor=none;startArrow=halfCircle;startFill=0;startSize=2;endArrow=none;');
160				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
161				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
162				edge.geometry.relative = true;
163				edge.geometry.x = -1;
164				edge.geometry.y = 3;
165				edge.edge = true;
166
167				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Required Interface');
168			}),
169		 	this.addEntry(dt + 'property', function()
170			{
171		 		var cell1 = new mxCell('0..1', new mxGeometry(0, 0, 120, 50),
172		 			'align=right;verticalAlign=top;spacingRight=2;');
173				cell1.vertex = true;
174		 		var field1 = new mxCell('Property1',
175		 				new mxGeometry(0, 1, 120, 30), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;resizeWidth=1;');
176		 		field1.geometry.relative = true;
177		 		field1.geometry.offset = new mxPoint(0, -30);
178		 		field1.vertex = true;
179
180		 		cell1.insert(field1);
181
182				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Property');
183			}),
184			this.createVertexTemplateEntry('fontStyle=0;dashed=1;', 140, 30, 'Property1', 'Property', null, null, 'property'),
185			this.createVertexTemplateEntry('fontStyle=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=2;', 30, 30, 'port1', 'Port', null, null, 'port'),
186			this.addEntry(dt + 'port provided interface lollipop notation', function()
187			{
188		    	var cell1 = new mxCell('', new mxGeometry(0, 0, 30, 30), 'html=1;rounded=0;');
189		    	cell1.vertex = true;
190				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=2;');
191				edge1.geometry.relative = true;
192				edge1.edge = true;
193				cell1.insertEdge(edge1, true);
194			   	var cell2 = new mxCell('', new mxGeometry(52, 11, 8, 8), 'ellipse;html=1;fontSize=11;align=center;fillColor=none;points=[];aspect=fixed;resizable=0;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;flipH=1;');
195		    	cell2.vertex = true;
196				cell2.insertEdge(edge1, false);
197
198				return sb.createEdgeTemplateFromCells([cell1, edge1, cell2], 60, 30, 'Port with provided interface');
199			}),
200			this.addEntry(dt + 'port required interface lollipop notation', function()
201			{
202		    	var cell1 = new mxCell('', new mxGeometry(0, 0, 30, 30), 'html=1;rounded=0;');
203		    	cell1.vertex = true;
204				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=2;');
205				edge1.geometry.relative = true;
206				edge1.edge = true;
207				cell1.insertEdge(edge1, true);
208			   	var cell2 = new mxCell('', new mxGeometry(55, 10, 5, 10), 'shape=requiredInterface;html=1;fontSize=11;align=center;fillColor=none;points=[];aspect=fixed;resizable=0;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;flipH=1;');
209		    	cell2.vertex = true;
210				cell2.insertEdge(edge1, false);
211				return sb.createEdgeTemplateFromCells([cell1, edge1, cell2], 60, 30, 'Port with required interface');
212			}),
213			this.addEntry(dt + 'component', function()
214			{
215			    var cell1 = new mxCell('', new mxGeometry(0, 0, 140, 200), 'fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;marginBottom=0;');
216			    cell1.vertex = true;
217			    var cell2 = new mxCell('Component', new mxGeometry(0, 0, 140, 40), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
218			    cell2.vertex = true;
219			    cell1.insert(cell2);
220				var symbol = new mxCell('', new mxGeometry(1, 0, 16, 20), 'shape=module;jettyWidth=10;jettyHeight=4;');
221				symbol.vertex = true;
222				symbol.geometry.relative = true;
223				symbol.geometry.offset = new mxPoint(-25, 9);
224				cell2.insert(symbol);
225				cell1.insert(divider.clone());
226			    var cell3 = new mxCell('provided interfaces', new mxGeometry(0, 0, 140, 25), 'html=1;align=center;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
227			    cell3.vertex = true;
228			    cell1.insert(cell3);
229			    var cell4 = new mxCell('Interface1', new mxGeometry(0, 0, 140, 25), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
230			    cell4.vertex = true;
231			    cell1.insert(cell4);
232				cell1.insert(divider.clone());
233			    var cell5 = new mxCell('required interfaces', new mxGeometry(0, 0, 140, 25), 'html=1;align=center;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
234			    cell5.vertex = true;
235			    cell1.insert(cell5);
236			    var cell6 = new mxCell('Interface2', new mxGeometry(0, 0, 140, 30), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
237			    cell6.vertex = true;
238			    cell1.insert(cell6);
239
240			    return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Component');
241			}),
242		 	this.addEntry(dt + 'classifier', function()
243			{
244		 		var cell1 = new mxCell('', new mxGeometry(0, 0, 270, 230),
245		 			'shape=ellipse;container=1;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;html=1;dashed=1;collapsible=0;');
246				cell1.vertex = true;
247		 		var field1 = new mxCell('Collaboration1',
248		 				new mxGeometry(0, 0, 270, 30), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
249		 		field1.vertex = true;
250		 		cell1.insert(field1);
251		 		var divider1 = new mxCell('', new mxGeometry(39, 30, 192, 8), 'line;strokeWidth=1;fillColor=none;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;dashed=1;resizeWidth=1;');
252		 		divider1.vertex = true;
253		 		cell1.insert(divider1);
254		 		var field2 = new mxCell('Classifier1',
255		 				new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
256		 		field2.geometry.relative = true;
257		 		field2.geometry.offset = new mxPoint(85, 50);
258		 		field2.vertex = true;
259		 		cell1.insert(field2);
260		 		var field3 = new mxCell('Collaboration use 1',
261		 				new mxGeometry(0, 0, 140, 30), 'shape=ellipse;html=1;align=center;verticalAlign=middle;rotatable=0;dashed=1;');
262		 		field3.geometry.relative = true;
263		 		field3.geometry.offset = new mxPoint(65, 110);
264		 		field3.vertex = true;
265		 		cell1.insert(field3);
266		    	var assoc1 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;spacingLeft=4;');
267		    	assoc1.geometry.relative = true;
268		    	assoc1.edge = true;
269		    	field2.insertEdge(assoc1, true);
270		    	field3.insertEdge(assoc1, false);
271		    	cell1.insert(assoc1);
272		 		var field4 = new mxCell('Classifier2',
273		 				new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
274		 		field4.geometry.relative = true;
275		 		field4.geometry.offset = new mxPoint(85, 170);
276		 		field4.vertex = true;
277		 		cell1.insert(field4);
278		    	var assoc2 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;spacingLeft=4;');
279		    	assoc2.geometry.relative = true;
280		    	assoc2.edge = true;
281		    	field3.insertEdge(assoc2, true);
282		    	field4.insertEdge(assoc2, false);
283		    	cell1.insert(assoc2);
284
285				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
286			}),
287			this.createVertexTemplateEntry('shape=folder;fontStyle=1;tabWidth=80;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;', 150, 80,
288				   	'Package1', 'Package', null, null, dt + 'package'),
289		 	this.addEntry(dt + 'package', function()
290			{
291		 		var cell1 = new mxCell('Package1', new mxGeometry(0, 0, 150, 100),
292		 			'shape=folder;fontStyle=1;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;container=1;collapsible=0;recursiveResize=0;');
293				cell1.vertex = true;
294		 		var field1 = new mxCell('Packaged element1',
295		 				new mxGeometry(0, 0, 110, 30), 'html=1;');
296		 		field1.geometry.relative = true;
297		 		field1.geometry.offset = new mxPoint(20, 50);
298		 		field1.vertex = true;
299		 		cell1.insert(field1);
300
301				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Package');
302			}),
303		 	this.addEntry(dt + 'model', function()
304			{
305		 		var cell1 = new mxCell('Model1', new mxGeometry(0, 0, 150, 80),
306		 			'shape=folder;fontStyle=1;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;folderSymbol=triangle;');
307				cell1.vertex = true;
308
309				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Model');
310			}),
311		 	this.addEntry(dt + 'stereotype', function()
312			{
313		 		var cell1 = new mxCell('', new mxGeometry(0, 0, 160, 75),
314		 			'shape=note2;size=25;childLayout=stackLayout;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;container=1;');
315				cell1.vertex = true;
316		 		var field1 = new mxCell('&lt;&lt;stereotype1&gt;&gt;',
317		 				new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
318		 		field1.vertex = true;
319		 		cell1.insert(field1);
320		 		var field2 = new mxCell('stereotype property 1',
321		 				new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
322		 		field2.vertex = true;
323		 		cell1.insert(field2);
324		 		var field3 = new mxCell('stereotype property 2',
325		 				new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
326		 		field3.vertex = true;
327		 		cell1.insert(field3);
328
329				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Stereotype');
330			}),
331		 	this.addEntry(dt + 'class', function()
332			{
333		 		var cell1 = new mxCell('Class1', new mxGeometry(0, 0, 140, 79),
334		 			'swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=29;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
335				cell1.vertex = true;
336		 		var field1 = new mxCell('&lt;&lt;stereotype1&gt;&gt;',
337		 				new mxGeometry(0, 0, 140, 25), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
338		 		field1.vertex = true;
339		 		cell1.insert(field1);
340		 		var field2 = new mxCell('stereotype property 1',
341		 				new mxGeometry(0, 0, 140, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
342		 		field2.vertex = true;
343		 		cell1.insert(field2);
344
345				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Class');
346			}),
347			this.createVertexTemplateEntry('text;html=1;align=center;', 200, 25,
348				   	'&lt;&lt;stereotype1, stereotype2...&gt;&gt;', 'Stereotype Label', null, null, dt + 'stereotype label'),
349			this.createVertexTemplateEntry('ellipse;', 50, 25,
350				   	'icon', 'Icon', null, null, dt + 'icon'),
351		 	this.addEntry(dt + 'region', function()
352			{
353		 		var cell1 = new mxCell('', new mxGeometry(60, 0, 10, 100),
354		 			'line;strokeWidth=1;direction=south;html=1;dashed=1;dashPattern=20 20;');
355				cell1.vertex = true;
356
357		 		var cell2 = new mxCell('Region 1', new mxGeometry(0, 40, 60, 20),
358	 				'text;align=right;');
359		 		cell2.vertex = true;
360
361		 		var cell3 = new mxCell('Region 2', new mxGeometry(70, 40, 60, 20),
362					'text;align=left;');
363		 		cell3.vertex = true;
364
365				return sb.createVertexTemplateFromCells([cell1, cell2, cell3], 130, cell1.geometry.height, 'Region');
366			}),
367		 	this.addEntry(dt + 'state', function()
368			{
369		 		var cell1 = new mxCell('State1<br>[invariant1]<br>&lt;&lt;extended/final&gt;&gt;', new mxGeometry(0, 0, 140, 176),
370		 			'swimlane;fontStyle=4;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=60;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;rounded=1;absoluteArcSize=1;arcSize=50;');
371				cell1.vertex = true;
372		 		var field1 = new mxCell('',
373		 				new mxGeometry(0, 0, 140, 50), 'fillColor=none;strokeColor=none;container=1;collapsible=0;');
374		 		field1.vertex = true;
375		 		cell1.insert(field1);
376		 		var field2 = new mxCell('State2',
377		 				new mxGeometry(30, 10, 80, 30), 'html=1;align=center;verticalAlign=middle;rounded=1;absoluteArcSize=1;arcSize=10;');
378		 		field2.vertex = true;
379		 		field1.insert(field2);
380				cell1.insert(divider.clone());
381		 		var field3 = new mxCell('behavior1',
382		 				new mxGeometry(0, 0, 140, 25), 'fillColor=none;strokeColor=none;align=left;verticalAlign=middle;spacingLeft=5;');
383		 		field3.vertex = true;
384		 		cell1.insert(field3);
385				cell1.insert(divider.clone());
386		 		var field4 = new mxCell('transition1',
387		 				new mxGeometry(0, 0, 140, 25), 'fillColor=none;strokeColor=none;align=left;verticalAlign=middle;spacingLeft=5;');
388		 		field4.vertex = true;
389		 		cell1.insert(field4);
390
391				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'State');
392			}),
393			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=1;', 140, 40,
394				   	'State1', 'State', null, null, dt + 'state'),
395			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
396				   	'State', 'State', null, null, dt + 'state'),
397			this.createVertexTemplateEntry('shape=folder;align=center;verticalAlign=middle;fontStyle=0;tabWidth=100;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;rounded=1;absoluteArcSize=1;arcSize=10;', 140, 90,
398				   	'State1', 'State', null, null, dt + 'state'),
399			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
400				   	'State1, State2, ...', 'State', null, null, dt + 'state'),
401			this.createVertexTemplateEntry('shape=umlState;rounded=1;verticalAlign=top;spacingTop=5;umlStateSymbol=collapseState;absoluteArcSize=1;arcSize=10;', 140, 60,
402				   	'State1', 'State', null, null, dt + 'state'),
403		 	this.addEntry(dt + 'state entry point', function()
404			{
405		 		var cell1 = new mxCell('State1', new mxGeometry(40, 0, 140, 50),
406		 			'shape=umlState;rounded=1;verticalAlign=middle;align=center;absoluteArcSize=1;arcSize=10;umlStateConnection=connPointRefEntry;boundedLbl=1;');
407				cell1.vertex = true;
408		 		var field1 = new mxCell('Entry1',
409		 				new mxGeometry(0, 40, 50, 20), 'text;verticalAlign=middle;align=center;');
410		 		field1.vertex = true;
411		 		cell1.insert(field1);
412
413				return sb.createVertexTemplateFromCells([cell1, field1], 180, 60, 'State with entry point');
414			}),
415		 	this.addEntry(dt + 'state exit point', function()
416			{
417		 		var cell1 = new mxCell('State1', new mxGeometry(40, 0, 140, 50),
418		 			'shape=umlState;rounded=1;verticalAlign=middle;spacingTop=0;absoluteArcSize=1;arcSize=10;umlStateConnection=connPointRefExit;boundedLbl=1;');
419				cell1.vertex = true;
420		 		var field1 = new mxCell('Exit1',
421		 				new mxGeometry(0, 40, 50, 20), 'text;verticalAlign=middle;align=center;');
422		 		field1.vertex = true;
423		 		cell1.insert(field1);
424
425				return sb.createVertexTemplateFromCells([cell1, field1], 180, 60, 'State with exit point');
426			}),
427			this.createVertexTemplateEntry('ellipse;fillColor=#000000;strokeColor=none;', 30, 30,
428				   	'', 'Initial preudostate / node', null, null, dt + 'initial pseudostate'),
429			this.createVertexTemplateEntry('ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;', 30, 30,
430				   	'', 'Final state / node', null, null, dt + 'final state'),
431			this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
432				   	'H', 'Shallow History', null, null, dt + 'shallow history pseudostate'),
433			this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
434				   	'H*', 'Deep History', null, null, dt + 'deep history pseudostate'),
435			this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
436				   	'', 'Entry Point', null, null, dt + 'entry point pseudostate'),
437			this.createVertexTemplateEntry('shape=sumEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 30, 30,
438				   	'', 'Exit Point / Flow Final Node', null, null, dt + 'exit point pseudostate'),
439			this.createVertexTemplateEntry('ellipse;fillColor=#000000;strokeColor=none;', 20, 20,
440				   	'', 'Junction', null, null, dt + 'junction pseudostate'),
441			this.createVertexTemplateEntry('rhombus;', 30, 30,
442				   	'', 'Choice / Merge Node / Decision Node', null, null, dt + 'choice pseudostate merge decision node'),
443			this.createVertexTemplateEntry('shape=umlDestroy;', 30, 30,
444				   	'', 'Terminate', null, null, dt + 'terminate pseudostate'),
445			this.createVertexTemplateEntry('html=1;points=[];perimeter=orthogonalPerimeter;fillColor=#000000;strokeColor=none;', 5, 80,
446				   	'', 'Join/Fork Node', null, null, dt + 'join fork pseudostate'),
447			this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 140, 40,
448				   	'OpaqueAction1 spec.', 'Opaque Action', null, null, dt + 'opaque action'),
449			this.createVertexTemplateEntry('html=1;shape=mxgraph.infographic.ribbonSimple;notch1=20;notch2=0;align=center;verticalAlign=middle;fontSize=14;fontStyle=0;flipH=1;fillColor=#FFFFFF;', 160, 40,
450				   	'Trigger1 spec.', 'Trigger', null, null, dt + 'trigger'),
451			this.createVertexTemplateEntry('html=1;shape=mxgraph.infographic.ribbonSimple;notch1=0;notch2=20;align=center;verticalAlign=middle;fontSize=14;fontStyle=0;fillColor=#FFFFFF;', 160, 40,
452				   	'SendSignalAction1', 'Send Signal Action', null, null, dt + 'send signal action'),
453			this.createVertexTemplateEntry('html=1;align=right;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=50;dashed=0;spacingTop=10;spacingRight=30;', 300, 160,
454				   	'&lt;&lt;singleExecution&gt;&gt;', 'Single Execution', null, null, dt + 'single execution'),
455		 	this.addEntry(dt + 'parameter', function()
456			{
457		 		var cell1 = new mxCell('', new mxGeometry(0, 10, 30, 30),
458		 			'fillColor=#ffffff;strokeColor=#000000;');
459				cell1.vertex = true;
460		 		var field1 = new mxCell('Parameter1 spec.',
461		 				new mxGeometry(40, 0, 100, 20), 'text;verticalAlign=middle;align=center;');
462		 		field1.vertex = true;
463		 		cell1.insert(field1);
464		 		var field2 = new mxCell('',
465		 				new mxGeometry(50, 25, 30, 15), 'triangle;whiteSpace=wrap;html=1;direction=north;');
466		 		field2.vertex = true;
467		 		cell1.insert(field2);
468
469				return sb.createVertexTemplateFromCells([cell1, field1, field2], 140, 40, 'Parameter');
470			}),
471			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
472				   	'Action1', 'Action', null, null, dt + 'action'),
473			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=middle;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 70,
474				   	'&lt;&lt;external&gt;&gt;<br>Action1<br>(partition1)', 'Activity Partition', null, null, dt + 'activity partition'),
475		 	this.addEntry(dt + 'object node', function()
476			{
477		 		var cell1 = new mxCell('ObjectNode1<br><br>[State1, State2...]', new mxGeometry(0, 0, 140, 60),
478		 			'html=1;align=center;verticalAlign=middle;rounded=0;absoluteArcSize=1;arcSize=10;dashed=0;');
479				cell1.vertex = true;
480		 		var field1 = new mxCell('{annotation1}',
481		 				new mxGeometry(0, 60, 140, 30), 'text;verticalAlign=middle;align=center;');
482		 		field1.vertex = true;
483		 		cell1.insert(field1);
484
485				return sb.createVertexTemplateFromCells([cell1, field1], 140, 90, 'Object Node');
486			}),
487		 	this.addEntry(dt + 'activity parameter node', function()
488			{
489		 		var cell1 = new mxCell('Parameter1 spec.', new mxGeometry(0, 0, 140, 60),
490		 			'html=1;align=center;verticalAlign=middle;rounded=0;absoluteArcSize=1;arcSize=10;dashed=0;');
491				cell1.vertex = true;
492		 		var field1 = new mxCell('{stream}',
493		 				new mxGeometry(0, 60, 140, 30), 'text;verticalAlign=middle;align=center;');
494		 		field1.vertex = true;
495		 		cell1.insert(field1);
496
497				return sb.createVertexTemplateFromCells([cell1, field1], 140, 90, 'Activity Parameter Node');
498			}),
499			this.createVertexTemplateEntry('html=1;shape=mxgraph.infographic.ribbonSimple;notch1=20;notch2=20;align=center;verticalAlign=middle;fontSize=14;fontStyle=0;fillColor=#FFFFFF;', 160, 40,
500				   	'ObjectNode1', 'Object Node', null, null, dt + 'object node'),
501			this.addEntry('behavior selection transformation decision input', function()
502			{
503		    	var cell = new mxCell('Behavior1 spec.', new mxGeometry(0, 0, 160, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=left;spacingLeft=5;');
504		    	cell.vertex = true;
505		    	var label = new mxCell('<<keyword>>', new mxGeometry(0, 0, cell.geometry.width, 25), 'resizeWidth=1;part=1;strokeColor=none;fillColor=none;align=left;spacingLeft=5;');
506		    	label.geometry.relative = true;
507		    	label.vertex = true;
508		    	cell.insert(label);
509
510				return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Behavior');
511			}),
512			this.createVertexTemplateEntry('html=1;points=[];perimeter=orthogonalPerimeter;fillColor=#000000;strokeColor=none;align=left;verticalAlign=top;spacingLeft=10;', 5, 80,
513				   	'{joinSpec = join spec}', 'Join Node', null, null, dt + 'join node'),
514		    this.addDataEntry('activity partition', 180, 200, 'Activity Partition', '7ZjRbtowFIafJrdTnMBobwltbzZpWvcCLjkQa45P5Jw20KefnRjCBikBnKlURUGyj30c5/vt/JggTvLVg+ZF9h1TkEF8F8SJRqSmlK8SkDKIQpEG8SyIotB8g+i+o5XVrWHBNSjqkxA1CS9cPkMTSUUOqhSo3FglraVrKjNe2CLxJxuaZpSbCc+YKVaZIHgs+Ny2V+ZxTKwkrulRvNqQmUY8naMiLhRolzRHKXlRinq0Wd0jEzL9xtf4TJv7bGrThZAyQYk2W6GyEygrkUuu4H6nKYjiRf2pZ6DxN/yT5J4YNMGqk1odcsgeAHMgvTZdKpFS5nrcNGTDDMQyc2lR6IK8bALLbW4rgik4HQ5rEu9p0qmEmTIJLn/CnLha9hFln3mqsfjF9RLIBQoUikDfvRgapYsdgE9YuEYJi03uExJh7iragdkOWkMZT81lMCXhl3EwNk+TmDpr6+ay3TUlqIyAZsHYMYCXVEFJF6kaHVZ1vRGvyTgu8uUaj4bVWCnbu9W4Uz7Wysd25WM78tkyGrILiZWpZiJNQV2kQ3x0d0UDcR/vcf9h8dKb77t3q8AlsFedi36oNf+1m/0Vrn4P7Fn4/+BPrslU+uri0VQ8+Meop39MPMh5072X4uvbSxlq8Wp/HEp3l15qTM5yER/0bz+Ae1+C+DTv8EGchZ/IT7EML8zZp2cM7RmM9TSNWx+C7p/2t64xur7tdJ5rsONH+0O24YX/wCf79/MS64J8mnF4Yf4RTto+mPd1jjOgm2r7j2Xd9tcfmn8A'),
515			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=20;dashed=1;', 200, 100,
516				   	'', 'Interruptible Activity Region', null, null, dt + 'interruptible activity region'),
517			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=middle;rounded=1;absoluteArcSize=1;arcSize=10;dashed=1;', 140, 40,
518				   	'State1', 'State', null, null, dt + 'state'),
519			this.addEntry('constraint precondition postcondition selection transformation decision input', function()
520			{
521		    	var cell = new mxCell('Constraint1 spec.', new mxGeometry(0, 0, 160, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=left;spacingLeft=5;');
522		    	cell.vertex = true;
523		    	var label = new mxCell('<<keyword>>', new mxGeometry(0, 0, cell.geometry.width, 25), 'resizeWidth=1;part=1;strokeColor=none;fillColor=none;align=left;spacingLeft=5;');
524		    	label.geometry.relative = true;
525		    	label.vertex = true;
526		    	cell.insert(label);
527
528				return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Constraint / Precondition / Postcondition');
529			}),
530			this.createVertexTemplateEntry('fontStyle=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=2;html=1;', 30, 30,
531					'Pin1<br>[State1]<br>{control}<br>Parameter1 spec.',
532					'Port', null, null, 'port'),
533			this.addEntry('object flow', function()
534			{
535		    	var cell1 = new mxCell('', new mxGeometry(50, 0, 30, 30), 'html=1;rounded=0;');
536		    	cell1.vertex = true;
537				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
538				edge1.geometry.setTerminalPoint(new mxPoint(0, 15), true);
539				edge1.geometry.relative = true;
540				edge1.edge = true;
541				cell1.insertEdge(edge1, false);
542				var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
543				edge2.geometry.setTerminalPoint(new mxPoint(130, 15), false);
544				edge2.geometry.relative = true;
545				edge2.edge = true;
546				cell1.insertEdge(edge2, true);
547
548				return sb.createEdgeTemplateFromCells([cell1, edge1, edge2], 160, 30, 'Object Flow');
549			}),
550			this.createVertexTemplateEntry('fontStyle=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=2;html=1;points=[[0,0.5],[1,0.5]];fillColor=#000000;strokeColor=none;', 30, 30, '', 'Pin ', null, null, 'pin'),
551			this.createVertexTemplateEntry('shape=mxgraph.uml25.inputPin;html=1;points=[[0,0.5],[1,0.5]];', 30, 30, '', 'Input Pin', null, null, 'input pin'),
552			this.createVertexTemplateEntry('shape=mxgraph.uml25.inputPin;html=1;points=[[0,0.5],[1,0.5]];strokeColor=#ffffff;fillColor=#000000;', 30, 30, '', 'Input Pin', null, null, 'input pin'),
553			this.createVertexTemplateEntry('shape=mxgraph.uml25.inputPin;html=1;points=[[0,0.5],[1,0.5]];flipH=1;', 30, 30, '', 'Output Pin', null, null, 'output pin'),
554			this.createVertexTemplateEntry('shape=mxgraph.uml25.inputPin;html=1;points=[[0,0.5],[1,0.5]];strokeColor=#ffffff;fillColor=#000000;flipH=1;', 30, 30, '', 'Output Pin', null, null, 'output pin'),
555			this.createVertexTemplateEntry('shape=mxgraph.uml25.behaviorAction;html=1;rounded=1;absoluteArcSize=1;arcSize=10;align=left;spacingLeft=5;', 190, 60, 'CallBehaviorAction1', 'Behavior Action', null, null, 'behavior action'),
556			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
557				   	'Action1<br>(Operation1)', 'Call Operation Action', null, null, dt + 'call operation action'),
558			this.createVertexTemplateEntry('html=1;align=center;verticalAlign=middle;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
559				   	'ValueSpecAction1 spec.', 'Value Specification Action', null, null, dt + 'value specification action'),
560		 	this.addEntry(dt + 'action with output', function()
561			{
562		 		var cell1 = new mxCell('Action1', new mxGeometry(0, 20, 110, 40),
563		 			'shape=mxgraph.uml25.action;html=1;align=center;verticalAlign=middle;absoluteArcSize=1;arcSize=10;dashed=0;spacingRight=10;');
564				cell1.vertex = true;
565		 		var field1 = new mxCell('variable1',
566		 				new mxGeometry(110, 0, 60, 30), 'text;verticalAlign=middle;align=left;');
567		 		field1.vertex = true;
568		 		cell1.insert(field1);
569
570				return sb.createVertexTemplateFromCells([cell1, field1], 170, 60, 'Action with output');
571			}),
572		 	this.addEntry(dt + 'action with input', function()
573			{
574		 		var cell1 = new mxCell('Action1', new mxGeometry(60, 0, 110, 40),
575		 			'shape=mxgraph.uml25.action;html=1;align=center;verticalAlign=middle;absoluteArcSize=1;arcSize=10;dashed=0;spacingLeft=10;flipH=1;');
576				cell1.vertex = true;
577		 		var field1 = new mxCell('variable1',
578		 				new mxGeometry(0, 0, 60, 40), 'text;verticalAlign=middle;align=right;');
579		 		field1.vertex = true;
580		 		cell1.insert(field1);
581
582				return sb.createVertexTemplateFromCells([cell1, field1], 170, 40, 'Action with input');
583			}),
584		 	this.addEntry(dt + 'read self object action', function()
585			{
586		 		var cell1 = new mxCell('Action1', new mxGeometry(60, 0, 110, 40),
587		 			'shape=mxgraph.uml25.action;html=1;align=center;verticalAlign=middle;absoluteArcSize=1;arcSize=10;dashed=0;spacingLeft=10;flipH=1;');
588				cell1.vertex = true;
589
590		 		var field1 = new mxCell('self',
591		 				new mxGeometry(0, 0, 60, 40), 'text;verticalAlign=middle;align=right;');
592		 		field1.vertex = true;
593		 		cell1.insert(field1);
594
595				return sb.createVertexTemplateFromCells([cell1, field1], 170, 40, 'Read self object action');
596			}),
597		 	this.addEntry(dt + 'value specification action', function()
598			{
599		 		var cell1 = new mxCell('Action1', new mxGeometry(60, 0, 110, 40),
600		 			'shape=mxgraph.uml25.action;html=1;align=center;verticalAlign=middle;absoluteArcSize=1;arcSize=10;dashed=0;spacingLeft=10;flipH=1;');
601				cell1.vertex = true;
602		 		var field1 = new mxCell('value1',
603		 				new mxGeometry(0, 0, 60, 40), 'text;verticalAlign=middle;align=right;');
604		 		field1.vertex = true;
605		 		cell1.insert(field1);
606
607				return sb.createVertexTemplateFromCells([cell1, field1], 170, 40, 'Value specification action');
608			}),
609			this.createVertexTemplateEntry('html=1;shape=mxgraph.infographic.ribbonSimple;notch1=0;notch2=20;align=center;verticalAlign=middle;fontSize=14;fontStyle=0;fillColor=#FFFFFF;', 160, 40,
610				   	'SendObjectAction1', 'Send Object Action', null, null, dt + 'send object action'),
611			this.createVertexTemplateEntry('html=1;shape=mxgraph.infographic.ribbonSimple;notch1=20;notch2=0;align=center;verticalAlign=middle;fontSize=14;fontStyle=0;fillColor=#FFFFFF;flipH=0;spacingRight=0;spacingLeft=14;', 170, 40,
612				   	'AcceptEventAction1', 'Accept Event Action', null, null, dt + 'acceppt event action'),
613			this.createVertexTemplateEntry('shape=collate;whiteSpace=wrap;html=1;', 40, 40,
614				   	'', 'Time Event Trigger', null, null, dt + 'time event trigger'),
615			this.createVertexTemplateEntry('shape=mxgraph.uml25.actionParams;html=1;align=center;verticalAlign=top;absoluteArcSize=1;arcSize=10;dashed=0;spacingLeft=10;spacingTop=5;', 150, 50,
616				   	'Action1', 'Action with Parameters', null, null, dt + 'action with parameters'),
617			this.createVertexTemplateEntry('dashed=1;rounded=1;absoluteArcSize=1;arcSize=20;html=1;verticalAlign=top;align=left;spacingTop=5;spacingLeft=10;', 200, 100,
618				   	'&lt;&lt;structured&gt;&gt;', 'Structured Activity Node', null, null, dt + 'structured activity node'),
619			this.addDataEntry(dt + 'expansion', 300, 300, 'Expansion', '7ZtRr5owFMc/DY93oa0693j1bncPW7JkS/bcXSqQVTFQvbJPv2ILDi8Glnha2pBo4jmlpf218e8/RwKy3p6ec7pPvmYR4wH5GJB1nmVCfdqe1ozzAIdpFJCnAONQvgP86UYrOreGe5qznRjSAasOR8oPTGUCvKDbfUBWXA6wake/Wfma5VGTjFuX6KgarxAl1+MlYitX9YRkW0SLhEU6yLPDLmoi+qvI+EGwx/zle/qH1dkmkssgqyPLRfpC+SNP451Miqy6LdURZ5tqAsWevqS7+EfVprrpzJdzu0rpVcvx2OkmuXNKY3tm2ZaJvJSXvKaRSNQVJFR0w4SlcSKukrRQibjpe9kI+UHvRfe+kI59uQIbS4LV+nNWSEY/9azCJvO5ntPgBePeBS871qtPWJgzTkV6ZK3huxjoO3zLUnljHJ5qbKpHqcIHdEUx22wKJt4wbOY5COusH+sgnPtq7ueJzVfyJae6DoO57L6uonfzVozqSL4G7gTp3QkMsBN3RT2fUPcfegxxyBcT+X7yMwjy7yfy/eQXEOSXI9LLdgcz6vmAkAn9/ODIAV+6r5/1/k2sjQsoQhN6SwqKugzphN6EhKIxec7SgoYacaAI0IKiqwOOWgcc/d8BRx54UARoQn2ADSqigDbUI/YwKgpoRD1iDyOj47WiNkTVkDFFgM70vifeA2taT2aCbV5WMaA39Yg9iKzWqCf25mV1rBXRLo7Le0lnWzkJCFdXSqI+1ESdKYpagl1CCqcrZVG77GGE05XCqF32MMI5Jj9604EalNGLI70vZ1dqoz4UR+ufQhNs80JKXKmO2mUPIqQE0IF6xB5ESMmYHOjN/xi57keJK36UeOBHiSt+1BJsUBl1xY/aZQ8jo674UbvsYWR0TH50YH3UfXdKXHGnxAN3Wn9nTbDNy+rMFXdqlz2IrM5ccad22d9DVmV4eUhYXf7vM8R/AQ=='),
620		 	this.addEntry(dt + 'execution region', function()
621			{
622		 		var cell1 = new mxCell('Action', new mxGeometry(0, 0, 160, 50),
623		 			'html=1;dashed=0;rounded=1;absoluteArcSize=1;arcSize=20;verticalAlign=middle;align=center;');
624				cell1.vertex = true;
625		 		var label1 = new mxCell('*',
626		 				new mxGeometry(1, 0.5, 20, 20), 'text;resizeWidth=0;resizeHeight=0;points=[];part=1;verticalAlign=middle;align=center;');
627		 		label1.vertex = true;
628		 		label1.geometry.relative = true;
629		 		label1.geometry.offset = new mxPoint(-20, -10);
630		 		cell1.insert(label1);
631
632				return sb.createVertexTemplateFromCells([cell1], 160, 50, 'Execution region');
633			}),
634			this.addDataEntry(dt + 'execution node action', 210, 60, 'Execution node with action', '7ZhNb4MwDIZ/TY6bklC67tjSrbtMmrTDzhm4ECk0KKRdu18/UwJdvwSTyr6EBBJ24uT1E0sWIV6QrmdGZMmjjkAR7454gdHall/pOgClCKcyIt6UcE7xJfz+zCjbjtJMGFjYNgG8DFgJtYTSMw6t1Au3UG43yvkTm6K6KSPeJBJ5AsUCFA2jl4toaxVD4jXXamlhbMJn+Q6Vt7Z4EbICY2Uo1FjJeIHOVEZRsc1EOEeI6sGgw6nD+bA+m+HW5dKbgU7Bmg1OeZORTVyWrKRAE5Bx4sKGzify0o7r0B0v/HDITuPzjvAdcYsRUFZwghwRvDhRtPY8VJJo23x5Y76jE+m6QqAGlLByBXvLn2LgdnjSEjfm1Onx3DKb0rxiBxT1fJ6DPWJY62yFddCMtRXOrNC+FeZP8EGpASU+hgeFde3v2ayy8Gl5El5z5XVwEhdF7feom4ued1Hkw558M/lBF+RvevLN5A/b40XIj35Rv9zsBfyj7nnbXXmzg/Jme+XNvlbeo7/fPavz61l/e/tkrEf/Q/2THf819ug7aaBo7u4Cyumfrwo+AA=='),
635		 	this.addEntry(dt + 'interaction', function()
636			{
637		 		var cell1 = new mxCell('Interaction1 heading', new mxGeometry(0, 0, 290, 160),
638		 			'shape=umlFrame;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;width=140;height=30;recursiveResize=0;');
639				cell1.vertex = true;
640		 		var field1 = new mxCell('Property1',
641		 				new mxGeometry(0, 0, 100, 20), 'text');
642		 		field1.geometry.relative = true;
643		 		field1.geometry.offset = new mxPoint(20, 40);
644		 		field1.vertex = true;
645		 		cell1.insert(field1);
646		 		var field2 = new mxCell('Property2',
647		 				new mxGeometry(0, 0, 150, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=left;spacingLeft=10;');
648		 		field2.geometry.relative = true;
649		 		field2.geometry.offset = new mxPoint(120, 80);
650		 		field2.vertex = true;
651		 		cell1.insert(field2);
652
653				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Interaction');
654			}),
655			this.addDataEntry(dt + 'lifeline sequence participant', 220, 300, 'Lifelines', '1ZPBbsMgDIafhjuFN2iy9bJJ0/oELPEKEgQETpPu6ecEaDRpkXbYDjsgmc/+4/gHmGzcfIoq6Gffg2Xygckmeo85cnMD1jLBTc9ky4TgtJh43Mke1iwPKsKAPxGILLgqO0ImT+YdrBmgfCrhzZZM0ios4ehsLWLyGCAaBwiRMrbgl40dJ20QzkF1i3SiQYlpdDRpe6Cw8wMqksT73loVknlbu3IiEboxJnOFV0jmo1I/4tKp8cMAHRZYhoGIMO8asqLixgk8/We8UclketSlgmfTuAZz0UUmK1Qpg8tdu/lLQbH4e7vlrt3iH9pd+7cqaeh/4QyqoFzaPzkT2m7Pa819eX2f'),
656			this.addDataEntry(dt + 'lifeline execution', 220, 300, 'Lifelines', '5ZTbasMwDIafxvdu3MB223TrzQZjewIvVWuDYhlH6WFPPydx2m5pR2FsDEYISL8syfoQFqqodougvXmkJaBQd0IVgYh7q9oVgCgyaZdCzUWWyfiL7P5CdNJFpdcBHF+TkPUJG40N9MqDXQFaBylS8x5TpDbat2ZT4XBIqJmHYCtgCDGCSX46arOtsQwvXpdt6jYOGjXDVZx0PolmSY51TAkHH1H72r52XWVUApRNqO0GnqG2b4NKDbedCnIOSk5iGgYCw+4ikE5KNBZA8Z5hH48MCQmY3Nolm6TJpBmwa5PKqEHUdS+sD7WOvKORkJ/Hr0b4R9RPWHmyjrtu+Uzk80/wKbChNTmNp/hXFrEgpNBVUzey/a5FlX2Japr3GfvevT0HbsztAPg73KYX13byz9b2V9Y0//E1vQrB9I+sY3SPL3QX+/CAvwM='),
657			this.addDataEntry(dt + 'destruction occurence specification', 100, 300, 'Destruction Occurence Specification', 'lZJBboMwEEVP471jZ9F1oM2mlaL2BC5MY0sGW/YQoKfvgE1oVVI1C6SZP/Nt/pOZLJrhGJTXL64Gy+Qjk0VwDlPVDAVYywQ3NZMlE4LTx8TTjelunnKvArT4H4NIhouyHSTl2XyANS3koyKONk+iVn4qu8YuS0wePATTAEKgic3yadUOvTYIb15Vk7WnoKRpbChpuaOyci0qsoRrb63y0bzPt3JSAlRdiOYCrxDN56K6DqebCte2UGEWcxgICMNNILOUaRzB0X+GkVZ6U6POGzxB4xrMWWebXEQVk3C+ele+VGTE27jlL9x/US4hYnAjBatV1FDfk1JspxyWMMkx5uWH3H+DsN9gsL8fAbXra55nPx77Fw=='),
658		 	this.addEntry(dt + 'interaction', function()
659			{
660		 		var cell1 = new mxCell('Interaction1 heading', new mxGeometry(0, 0, 290, 250),
661		 			'shape=umlFrame;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;width=140;height=30;');
662				cell1.vertex = true;
663		 		var field1 = new mxCell('[constraint1]',
664		 				new mxGeometry(0, 0, 100, 20), 'text');
665		 		field1.geometry.relative = true;
666		 		field1.geometry.offset = new mxPoint(20, 40);
667		 		field1.vertex = true;
668		 		cell1.insert(field1);
669		 		var field2 = new mxCell('[constraint2]',
670		 				new mxGeometry(0, 125, 290, 10), 'line;strokeWidth=1;dashed=1;labelPosition=center;verticalLabelPosition=bottom;align=left;verticalAlign=top;spacingLeft=20;spacingTop=15;');
671		 		field2.geometry.relative = false;
672		 		field2.vertex = true;
673		 		cell1.insert(field2);
674
675				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Interaction');
676			}),
677		 	this.addEntry(dt + 'lifeline continuation', function()
678			{
679		 		var cell1 = new mxCell('Continuation1', new mxGeometry(30, 60, 160, 30),
680		 			'rounded=1;dashed=0;');
681				cell1.vertex = true;
682		 		var cell2 = new mxCell('Lifeline1', new mxGeometry(0, 0, 100, 200),
683		 			'shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;');
684				cell2.vertex = true;
685		 		var cell3 = new mxCell('Lifeline2', new mxGeometry(120, 0, 100, 200),
686		 			'shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;');
687				cell3.vertex = true;
688
689				return sb.createVertexTemplateFromCells([cell1, cell2, cell3], 220, 200, 'Lifeline Continuation');
690			}),
691		 	this.addEntry(dt + 'lifeline state invariant', function()
692			{
693		 		var cell1 = new mxCell('Lifeline1', new mxGeometry(0, 0, 100, 200),
694		 			'shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;');
695				cell1.vertex = true;
696				var cell2 = new mxCell('State1 inv.', new mxGeometry(10, 50, 80, 30),
697		 			'rounded=1;dashed=0;point=[];connectable=0;');
698				cell2.vertex = true;
699				cell1.insert(cell2);
700		 		var cell3 = new mxCell('{State2 inv.}', new mxGeometry(0, 140, 100, 30),
701		 			'text;align=center;point=[];connectable=0;');
702				cell3.vertex = true;
703				cell1.insert(cell3);
704
705				return sb.createVertexTemplateFromCells([cell1], 100, 200, 'Lifeline State Invariant');
706			}),
707		 	this.addEntry(dt + 'interaction use', function()
708			{
709		 		var cell1 = new mxCell('ref', new mxGeometry(0, 0, 260, 120),
710		 			'shape=umlFrame;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;width=50;height=30;');
711				cell1.vertex = true;
712		 		var field1 = new mxCell('Interaction1',
713		 				new mxGeometry(0, 0, 100, 20), 'text;align=center;');
714		 		field1.geometry.relative = true;
715		 		field1.geometry.offset = new mxPoint(60, 50);
716		 		field1.vertex = true;
717		 		cell1.insert(field1);
718
719				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Interaction');
720			}),
721		 	this.addEntry(dt + 'lifeline state invariant', function()
722			{
723		 		var cell1 = new mxCell('Lifeline1', new mxGeometry(0, 0, 100, 200),
724		 			'shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;');
725				cell1.vertex = true;
726		 		var cell2 = new mxCell('', new mxGeometry(30, 70, 40, 20),
727		 			'shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;fillColor=none;point=[];connectable=0;');
728				cell2.vertex = true;
729				cell1.insert(cell2);
730		 		var cell3 = new mxCell('', new mxGeometry(30, 150, 40, 20),
731		 			'shape=partialRectangle;whiteSpace=wrap;html=1;top=0;fillColor=none;point=[];connectable=0;');
732				cell3.vertex = true;
733				cell1.insert(cell3);
734
735				return sb.createVertexTemplateFromCells([cell1], 100, 200, 'Lifeline');
736			}),
737		 	this.addEntry(dt + 'use case', function()
738			{
739		 		var cell1 = new mxCell('Class1', new mxGeometry(0, 0, 180, 140),
740		 			'swimlane;fontStyle=1;align=center;horizontal=1;startSize=30;collapsible=0;html=1;');
741				cell1.vertex = true;
742		 		var field1 = new mxCell('heading1',
743		 				new mxGeometry(0, 0, 140, 70), 'shape=umlFrame;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;width=80;height=30;swimlaneFillColor=#ffffff;align=left;spacingLeft=5;');
744		 		field1.geometry.relative = true;
745		 		field1.geometry.offset = new mxPoint(20, 50);
746		 		field1.vertex = true;
747		 		cell1.insert(field1);
748		 		var field2 = new mxCell('Interaction1',
749		 				new mxGeometry(0, 0, 100, 20), 'text;align=left;');
750		 		field2.geometry.relative = true;
751		 		field2.geometry.offset = new mxPoint(10, 40);
752		 		field2.vertex = true;
753		 		field1.insert(field2);
754
755				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Use Case');
756			}),
757			this.addEntry('observation', function()
758			{
759				var edge = new mxCell('observation', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;endSize=12;startArrow=none;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=center;verticalAlign=bottom;endFill=0;');
760				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
761				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
762				edge.geometry.relative = true;
763				edge.geometry.x = 0;
764				edge.geometry.y = 3;
765				edge.edge = true;
766
767				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Observation');
768			}),
769			this.addEntry('time constraint', function()
770			{
771				var edge = new mxCell('{Time constraint 1}', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;endSize=12;startArrow=none;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=center;verticalAlign=bottom;endFill=0;');
772				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
773				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
774				edge.geometry.relative = true;
775				edge.geometry.x = 0;
776				edge.geometry.y = 3;
777				edge.edge = true;
778
779				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Time constraint');
780			}),
781			this.addEntry('duration constraint', function()
782			{
783				var edge = new mxCell('{Duration constraint 1}', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;endSize=12;startArrow=open;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=center;verticalAlign=bottom;endFill=0;');
784				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
785				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
786				edge.geometry.relative = true;
787				edge.geometry.x = 0;
788				edge.geometry.y = 3;
789				edge.edge = true;
790
791				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Duration constraint');
792			}),
793		 	this.addEntry(dt + 'classifier', function()
794			{
795		 		var cell1 = new mxCell('', new mxGeometry(0, 0, 180, 120),
796		 			'shape=ellipse;container=1;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;html=1;dashed=0;collapsible=0;');
797				cell1.vertex = true;
798		 		var field1 = new mxCell('UseCase1',
799		 				new mxGeometry(0, 0, 180, 30), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rotatable=0;');
800		 		field1.vertex = true;
801		 		cell1.insert(field1);
802		 		var divider1 = new mxCell('', new mxGeometry(9, 30, 162, 10), 'line;strokeWidth=1;fillColor=none;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;dashed=0;resizeWidth=1;');
803		 		divider1.vertex = true;
804		 		cell1.insert(divider1);
805		 		var field2 = new mxCell('extension points',
806		 				new mxGeometry(0, 40, 180, 30), 'text;html=1;align=center;verticalAlign=middle;rotatable=0;');
807		 		field2.vertex = true;
808		 		cell1.insert(field2);
809		 		var field3 = new mxCell('Extension point 1',
810		 				new mxGeometry(0, 70, 180, 30), 'text;html=1;align=left;verticalAlign=middle;rotatable=0;spacingLeft=25;');
811		 		field3.vertex = true;
812		 		cell1.insert(field3);
813
814				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
815			}),
816			this.addEntry(dt + 'extension point classifier', function()
817			{
818			    var cell1 = new mxCell('', new mxGeometry(0, 0, 160, 88), 'fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;marginBottom=0;');
819			    cell1.vertex = true;
820			    var cell2 = new mxCell('UseCase1', new mxGeometry(0, 0, 160, 30), 'html=1;align=left;spacingLeft=4;verticalAlign=middle;strokeColor=none;fillColor=none;fontStyle=1');
821			    cell2.vertex = true;
822			    cell1.insert(cell2);
823				var symbol = new mxCell('', new mxGeometry(1, 0, 20, 16), 'shape=ellipse;');
824				symbol.vertex = true;
825				symbol.geometry.relative = true;
826				symbol.geometry.offset = new mxPoint(-25, 7);
827				cell2.insert(symbol);
828				cell1.insert(divider.clone());
829			    var cell3 = new mxCell('extension points', new mxGeometry(0, 0, 160, 25), 'html=1;align=center;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
830			    cell3.vertex = true;
831			    cell1.insert(cell3);
832			    var cell4 = new mxCell('Extension point 1', new mxGeometry(0, 0, 160, 25), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
833			    cell4.vertex = true;
834			    cell1.insert(cell4);
835
836			    return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Extension Point Classifier');
837			}),
838			this.createVertexTemplateEntry('shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;', 30, 60, 'Actor', 'Actor', false, null, 'uml actor'),
839			this.createVertexTemplateEntry('text;html=1;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 160, 70,
840				   	'&lt;&lt;actor&gt;&gt;<br><br><b>Actor1</b>',
841				   	'Actor', null, null, dt + 'actor'),
842
843			this.addEntry('extension point extend', function()
844			{
845		    	var cell = new mxCell('Extension point 1', new mxGeometry(0, 0, 140, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=left;spacingLeft=5;');
846		    	cell.vertex = true;
847		    	var label = new mxCell('Extend condition 1', new mxGeometry(0, 0, cell.geometry.width, 25), 'resizeWidth=1;part=1;strokeColor=none;fillColor=none;align=left;spacingLeft=5;');
848		    	label.geometry.relative = true;
849		    	label.vertex = true;
850		    	cell.insert(label);
851
852				return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Extension');
853			}),
854			this.addEntry('deployment target diagram', function()
855			{
856		    	var cell1 = new mxCell('DeploymentTarget1', new mxGeometry(0, 0, 130, 140), 'verticalAlign=top;align=left;shape=cube;size=10;direction=south;fontStyle=0;html=1;boundedLbl=1;spacingLeft=5;');
857		    	cell1.vertex = true;
858		    	var cell2 = new mxCell('Node1', new mxGeometry(0, 0, 100, 80), 'verticalAlign=top;align=center;shape=cube;size=10;direction=south;html=1;boundedLbl=1;spacingLeft=5;');
859		    	cell2.geometry.relative = true;
860		    	cell2.geometry.offset = new mxPoint(10, 50);
861		    	cell2.vertex = true;
862		    	cell1.insert(cell2);
863
864				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Deployment');
865			}),
866			this.createVertexTemplateEntry('text;html=1;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 180, 60,
867				   	'&lt;&lt;deployment spec&gt;&gt;<br><br><b>Deployment1</b>',
868				   	'Deployment Specification', null, null, dt + 'deployment specification'),
869			this.createVertexTemplateEntry('text;html=1;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 180, 60,
870				   	'&lt;&lt;artifact&gt;&gt;<br><br><b>Artifact1</b>',
871				   	'Artifact', null, null, dt + 'artifact'),
872			this.addEntry('information item', function()
873			{
874		    	var cell1 = new mxCell('InformationItem1', new mxGeometry(0, 0, 200, 50), 'align=left;spacingLeft=10;html=1;dashed=0;');
875		    	cell1.vertex = true;
876		    	var cell2 = new mxCell('', new mxGeometry(1, 0.5, 30, 20), 'shape=triangle;fillColor=#000000;');
877		    	cell2.geometry.relative = true;
878		    	cell2.geometry.offset = new mxPoint(-45, -10);
879		    	cell2.vertex = true;
880		    	cell1.insert(cell2);
881
882				return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Information item');
883			}),
884			this.addEntry('template binding', function()
885			{
886				var edge = new mxCell('&lt;&lt;bind&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=bottom;dashed=1;endFill=0;labelBackgroundColor=none;');
887				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
888				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
889				edge.geometry.relative = true;
890				edge.edge = true;
891		    	var cell1 = new mxCell('Binding1 information', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=center;verticalAlign=top;labelBackgroundColor=none;');
892		    	cell1.geometry.relative = true;
893		    	cell1.setConnectable(false);
894		    	cell1.vertex = true;
895		    	edge.insert(cell1);
896
897				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Template Binding');
898			}),
899		 	this.createEdgeTemplateEntry('endArrow=circlePlus;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;labelBackgroundColor=none;', 160, 0, '', 'Inner class', null, 'inner class'),
900		 	this.createEdgeTemplateEntry('endArrow=open;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;', 160, 0, '&lt;&lt;keyword&gt;&gt;', 'Element / Package Merge / Package Import, Substitution', null, 'element package import substitution merge'),
901		 	this.createEdgeTemplateEntry('endArrow=none;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;dashPattern=10 10;', 160, 0, '{constraint spec.}', 'Constraint', null, 'constraint'),
902			this.addEntry('dependency', function()
903			{
904				var edge = new mxCell('&lt;&lt;keyword&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=bottom;dashed=1;endFill=0;labelBackgroundColor=none;');
905				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
906				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
907				edge.geometry.relative = true;
908				edge.edge = true;
909		    	var cell1 = new mxCell('Dependency1', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=center;verticalAlign=top;labelBackgroundColor=none;');
910		    	cell1.geometry.relative = true;
911		    	cell1.setConnectable(false);
912		    	cell1.vertex = true;
913		    	edge.insert(cell1);
914
915				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Dependency');
916			}),
917			this.addEntry('dependency', function()
918			{
919		    	var cell1 = new mxCell('', new mxGeometry(68, 38, 4, 4), 'ellipse;resizable=0;aspect=fixed;fillColor=#000000;');
920		    	cell1.vertex = true;
921				var edge1 = new mxCell('&lt;&lt;keyword&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=bottom;dashed=1;endFill=0;labelBackgroundColor=none;spacingBottom=35;');
922				edge1.geometry.setTerminalPoint(new mxPoint(0, 0), true);
923				edge1.geometry.relative = true;
924				edge1.edge = true;
925				cell1.insertEdge(edge1, false);
926				var edge2 = new mxCell('&lt;&lt;keyword&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;dashed=1;endFill=0;labelBackgroundColor=none;spacingTop=35;');
927				edge2.geometry.setTerminalPoint(new mxPoint(0, 80), true);
928				edge2.geometry.relative = true;
929				edge2.edge = true;
930				cell1.insertEdge(edge2, false);
931				var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=bottom;dashed=1;endFill=0;labelBackgroundColor=none;spacingBottom=35;');
932				edge3.geometry.setTerminalPoint(new mxPoint(140, 0), false);
933				edge3.geometry.relative = true;
934				edge3.edge = true;
935				cell1.insertEdge(edge3, true);
936				var edge4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;dashed=1;endFill=0;labelBackgroundColor=none;spacingTop=35;');
937				edge4.geometry.setTerminalPoint(new mxPoint(140, 80), false);
938				edge4.geometry.relative = true;
939				edge4.edge = true;
940				cell1.insertEdge(edge4, true);
941
942				return sb.createEdgeTemplateFromCells([cell1, edge1, edge2, edge3, edge4], 140, 80, 'Dependency');
943			}),
944		 	this.createEdgeTemplateEntry('endArrow=block;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;', 160, 0, '', 'Realization', null, 'realization'),
945			this.addEntry('generalization set', function()
946			{
947				var edge = new mxCell('GeneralizationSet1', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;rounded=0;align=center;verticalAlign=bottom;endFill=0;labelBackgroundColor=none;endSize=8;');
948				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
949				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
950				edge.geometry.relative = true;
951				edge.edge = true;
952		    	var cell1 = new mxCell(':powertype {constraint1}', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=center;verticalAlign=top;labelBackgroundColor=none;');
953		    	cell1.geometry.relative = true;
954		    	cell1.setConnectable(false);
955		    	cell1.vertex = true;
956		    	edge.insert(cell1);
957
958				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Generalization Set');
959			}),
960		 	this.createEdgeTemplateEntry('endArrow=none;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=3;', 160, 0, '', 'Association / Connector / Instance Specification / Property / Connector End', null, 'association connector instance specification property connector end'),
961		 	this.createEdgeTemplateEntry('endArrow=open;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=1;', 160, 0, '', 'Association / Connector / Instance Specification / Property / Connector End / Navigability notation', null, 'association connector instance specification property connector end navigability notation'),
962		 	this.addEntry('association connector instance specification property connector end', function()
963			{
964				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;startArrow=oval;startFill=1;');
965				edge1.geometry.setTerminalPoint(new mxPoint(0, 0), true);
966				edge1.geometry.setTerminalPoint(new mxPoint(160, 0), false);
967				edge1.geometry.relative = true;
968				edge1.edge = true;
969
970				return sb.createEdgeTemplateFromCells([edge1], 160, 0, 'Association / Connector / Instance Specification / Property / Connector End');
971			}),
972		 	this.createEdgeTemplateEntry('endArrow=none;startArrow=sysMLx;endFill=0;startFill=0;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=1;startSize=8;', 160, 0, '', 'Association / Connector / Instance Specification / Property / Connector End / Non-Navigability notation', null, 'association connector instance specification property connector end non navigability notation'),
973		 	this.createEdgeTemplateEntry('endArrow=none;startArrow=diamondThin;endFill=0;startFill=0;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=1;startSize=8;endSize=8;', 160, 0, '', 'Association / Connector / Instance Specification / Property / Connector End / Shared Association', null, 'association connector instance specification property connector end shared'),
974		 	this.createEdgeTemplateEntry('endArrow=none;startArrow=diamondThin;endFill=0;startFill=1;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=1;startSize=8;endSize=8;', 160, 0, '', 'Association / Connector / Instance Specification / Property / Connector End / Composite Association', null, 'association connector instance specification property connector end composite'),
975			this.addEntry('association instance specification connector', function()
976			{
977		    	var cell1 = new mxCell('', new mxGeometry(60, 0, 20, 20), 'rhombus;aspect=fixed;');
978		    	cell1.vertex = true;
979				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=bottom;labelBackgroundColor=none;');
980				edge1.geometry.setTerminalPoint(new mxPoint(0, 10), true);
981				edge1.geometry.relative = true;
982				edge1.edge = true;
983				cell1.insertEdge(edge1, false);
984				var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=bottom;labelBackgroundColor=none;');
985				edge2.geometry.setTerminalPoint(new mxPoint(140, 10), false);
986				edge2.geometry.relative = true;
987				edge2.edge = true;
988				cell1.insertEdge(edge2, true);
989
990				return sb.createEdgeTemplateFromCells([cell1, edge1, edge2], 140, 20, 'Association / Instance Secification');
991			}),
992			this.addEntry('association instance specification connector', function()
993			{
994		    	var cell1 = new mxCell('', new mxGeometry(65, 0, 6, 12), 'triangle;aspect=fixed;fillColor=#000000;');
995		    	cell1.vertex = true;
996				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=bottom;labelBackgroundColor=none;');
997				edge1.geometry.setTerminalPoint(new mxPoint(0, 22), true);
998				edge1.geometry.setTerminalPoint(new mxPoint(140, 22), false);
999				edge1.geometry.relative = true;
1000				edge1.edge = true;
1001
1002				return sb.createVertexTemplateFromCells([cell1, edge1], 140, 22, 'Association / Instance Secification');
1003			}),
1004			this.addEntry('Redefine', function()
1005			{
1006				var edge = new mxCell('{redefines}', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;');
1007				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1008				edge.geometry.setTerminalPoint(new mxPoint(200, 0), false);
1009				edge.geometry.relative = true;
1010				edge.edge = true;
1011		    	var cell1 = new mxCell('end1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1012		    	cell1.geometry.relative = true;
1013		    	cell1.setConnectable(false);
1014		    	cell1.vertex = true;
1015		    	edge.insert(cell1);
1016		    	var cell2 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;');
1017		    	cell2.geometry.relative = true;
1018		    	cell2.setConnectable(false);
1019		    	cell2.vertex = true;
1020		    	edge.insert(cell2);
1021		    	var cell3 = new mxCell('Association1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;');
1022		    	cell3.geometry.relative = true;
1023		    	cell3.setConnectable(false);
1024		    	cell3.vertex = true;
1025		    	edge.insert(cell3);
1026		    	var cell4 = new mxCell('{modifier1}', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;');
1027		    	cell4.geometry.relative = true;
1028		    	cell4.setConnectable(false);
1029		    	cell4.vertex = true;
1030		    	edge.insert(cell4);
1031
1032				return sb.createEdgeTemplateFromCells([edge], 200, 0, 'Redefine');
1033			}),
1034			this.createVertexTemplateEntry('text;html=1;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 60, 30,
1035				   	'qualifier1',
1036				   	'Qualifier', null, null, dt + 'qualifier'),
1037			this.addEntry('connector', function()
1038			{
1039				var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;');
1040				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1041				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
1042				edge.geometry.relative = true;
1043				edge.edge = true;
1044		    	var cell1 = new mxCell('end1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1045		    	cell1.geometry.relative = true;
1046		    	cell1.setConnectable(false);
1047		    	cell1.vertex = true;
1048		    	edge.insert(cell1);
1049		    	var cell2 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;');
1050		    	cell2.geometry.relative = true;
1051		    	cell2.setConnectable(false);
1052		    	cell2.vertex = true;
1053		    	edge.insert(cell2);
1054		    	var cell3 = new mxCell('Connector1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;');
1055		    	cell3.geometry.relative = true;
1056		    	cell3.setConnectable(false);
1057		    	cell3.vertex = true;
1058		    	edge.insert(cell3);
1059
1060				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Connector');
1061			}),
1062		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=oval;endFill=0;endSize=8;', 160, 0, '', 'Provided Interface', null, 'provided interface'),
1063		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=halfCircle;endFill=0;endSize=2;', 160, 0, '', 'Required Interface', null, 'required interface'),
1064		 	this.addEntry('structural feature', function()
1065			{
1066				var edge = new mxCell('feature1', new mxGeometry(-1, 0, 0, 0), 'html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=none;endFill=0;endSize=6;align=left;');
1067				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1068				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
1069				edge.geometry.relative = true;
1070				edge.edge = true;
1071
1072				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Structural Feature');
1073			}),
1074			this.addEntry('usage', function()
1075			{
1076		    	var cell1 = new mxCell('', new mxGeometry(0, 0, 60, 30), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1077		    	cell1.vertex = true;
1078				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=halfCircle;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=2;');
1079				edge1.geometry.setTerminalPoint(new mxPoint(120, 15), false);
1080				edge1.geometry.relative = true;
1081				edge1.edge = true;
1082				cell1.insertEdge(edge1, true);
1083
1084				return sb.createEdgeTemplateFromCells([cell1, edge1], 120, 30, 'Usage');
1085			}),
1086			this.addEntry('collaboration', function()
1087			{
1088		    	var cell1 = new mxCell('Collaboration1', new mxGeometry(0, 0, 100, 30), 'ellipse;html=1;dashed=1;dashPattern=10 10;');
1089		    	cell1.vertex = true;
1090		    	var cell2 = new mxCell('Classifier1', new mxGeometry(10, 70, 80, 30), 'html=1;');
1091		    	cell2.vertex = true;
1092				var edge1 = new mxCell('ConnectableElement', new mxGeometry(0, 0, 0, 0), 'html=1;rounded=0;labelBackgroundColor=none;align=left;spacingLeft=5;endArrow=none;endFill=0;');
1093				edge1.geometry.relative = true;
1094				edge1.edge = true;
1095				cell1.insertEdge(edge1, true);
1096				cell2.insertEdge(edge1, false);
1097
1098				return sb.createEdgeTemplateFromCells([cell1, cell2, edge1], 100, 100, 'Collaboration');
1099			}),
1100		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;dashed=1;', 160, 0, '&lt;&lt;occurence&gt;&gt;', 'Collaboration Use', null, 'collaboration use'),
1101		 	this.addEntry('Extension', function()
1102			{
1103				var edge = new mxCell('{required}', new mxGeometry(-1, 0, 0, 0), 'html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=block;endFill=1;endSize=6;align=left;');
1104				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1105				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
1106				edge.geometry.relative = true;
1107				edge.edge = true;
1108
1109				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Extension');
1110			}),
1111			this.addEntry('transition', function()
1112			{
1113				var edge = new mxCell('Transition1 spec.', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=bottom;endFill=0;labelBackgroundColor=none;');
1114				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1115				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
1116				edge.geometry.relative = true;
1117				edge.edge = true;
1118		    	var cell1 = new mxCell('(via connectionPoint1)', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=center;verticalAlign=top;labelBackgroundColor=none;');
1119		    	cell1.geometry.relative = true;
1120		    	cell1.setConnectable(false);
1121		    	cell1.vertex = true;
1122		    	edge.insert(cell1);
1123
1124				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Transition');
1125			}),
1126			this.addEntry('activity', function()
1127			{
1128				var edge = new mxCell('{annotation1}', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;');
1129				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
1130				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
1131				edge.geometry.relative = true;
1132				edge.edge = true;
1133		    	var cell1 = new mxCell('Edge1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1134		    	cell1.geometry.relative = true;
1135		    	cell1.setConnectable(false);
1136		    	cell1.vertex = true;
1137		    	edge.insert(cell1);
1138		    	var cell2 = new mxCell('[guard]', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;');
1139		    	cell2.geometry.relative = true;
1140		    	cell2.setConnectable(false);
1141		    	cell2.vertex = true;
1142		    	edge.insert(cell2);
1143
1144				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Activity');
1145			}),
1146		 	this.createEdgeTemplateEntry('html=1;verticalAlign=top;labelBackgroundColor=none;endArrow=open;endFill=0;', 160, 0, '&lt;&lt;multicast/multireceive&gt;&gt;', 'Control Flow', null, 'control flow'),
1147			this.addEntry('action', function()
1148			{
1149		    	var cell1 = new mxCell('Action1', new mxGeometry(0, 5, 100, 30), 'html=1;rounded=1;absoluteArcSize=1;arcSize=10;');
1150		    	cell1.vertex = true;
1151		    	var cell2 = new mxCell('Action2', new mxGeometry(180, 5, 100, 30), 'html=1;rounded=1;absoluteArcSize=1;arcSize=10;');
1152		    	cell2.vertex = true;
1153				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'html=1;rounded=0;labelBackgroundColor=none;align=left;spacingLeft=5;endArrow=open;endFill=0;');
1154				edge1.geometry.relative = true;
1155				edge1.edge = true;
1156				cell1.insertEdge(edge1, true);
1157				cell2.insertEdge(edge1, false);
1158		    	var cell3 = new mxCell('', new mxGeometry(132, 0, 16, 16), 'html=1;');
1159		    	cell3.vertex = true;
1160
1161				return sb.createEdgeTemplateFromCells([cell1, cell2, cell3, edge1], 300, 35, 'Action');
1162			}),
1163			this.addEntry('object node', function()
1164			{
1165		    	var cell1 = new mxCell('ObjectNode1', new mxGeometry(40, 0, 80, 30), 'html=1;');
1166		    	cell1.vertex = true;
1167				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;rounded=0;align=center;verticalAlign=top;endFill=1;labelBackgroundColor=none;endSize=6;');
1168				edge1.geometry.setTerminalPoint(new mxPoint(0, 15), true);
1169				edge1.geometry.relative = true;
1170				edge1.edge = true;
1171				cell1.insertEdge(edge1, false);
1172
1173				return sb.createEdgeTemplateFromCells([cell1, edge1], 120, 30, 'Object Node');
1174			}),
1175			this.addEntry('activity', function()
1176			{
1177		    	var cell1 = new mxCell('', new mxGeometry(40, 0, 30, 30), 'ellipse;html=1;');
1178		    	cell1.vertex = true;
1179				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1180				edge1.geometry.setTerminalPoint(new mxPoint(0, 15), true);
1181				edge1.geometry.relative = true;
1182				edge1.edge = true;
1183				cell1.insertEdge(edge1, false);
1184
1185				return sb.createEdgeTemplateFromCells([cell1, edge1], 70, 30, 'Activity');
1186			}),
1187			this.addEntry('activity', function()
1188			{
1189		    	var cell1 = new mxCell('', new mxGeometry(0, 0, 30, 30), 'ellipse;html=1;');
1190		    	cell1.vertex = true;
1191				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1192				edge1.geometry.setTerminalPoint(new mxPoint(70, 15), false);
1193				edge1.geometry.relative = true;
1194				edge1.edge = true;
1195				cell1.insertEdge(edge1, true);
1196
1197				return sb.createEdgeTemplateFromCells([cell1, edge1], 70, 30, 'Activity');
1198			}),
1199		 	this.createEdgeTemplateEntry('shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;', 160, 0, '', 'Activity', null, 'activity'),
1200			this.addEntry('activity', function()
1201			{
1202				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1203				edge1.geometry.setTerminalPoint(new mxPoint(0, 40), true);
1204				edge1.geometry.setTerminalPoint(new mxPoint(160, 40), false);
1205				edge1.geometry.relative = true;
1206				edge1.edge = true;
1207				var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;');
1208				edge2.geometry.setTerminalPoint(new mxPoint(60, 0), true);
1209				edge2.geometry.setTerminalPoint(new mxPoint(100, 20), false);
1210				edge2.geometry.relative = true;
1211				edge2.edge = true;
1212
1213				return sb.createEdgeTemplateFromCells([edge1, edge2], 70, 30, 'Activity');
1214			}),
1215		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;', 160, 0, 'Message1 label', 'Message', null, 'message async asynchronous signal call'),
1216		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=block;endFill=1;', 160, 0, '', 'Message, synchronous call', null, 'message sync synchronous call'),
1217		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=block;endFill=1;dashed=1;', 160, 0, '', 'Message, reply', null, 'message reply'),
1218		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;dashed=1;', 160, 0, '', 'Message, create', null, 'message create'),
1219			this.addEntry('message lost', function()
1220			{
1221		    	var cell1 = new mxCell('', new mxGeometry(160, 0, 4, 4), 'ellipse;html=1;fillColor=#000000;');
1222		    	cell1.vertex = true;
1223				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1224				edge1.geometry.setTerminalPoint(new mxPoint(0, 2), true);
1225				edge1.geometry.relative = true;
1226				edge1.edge = true;
1227				cell1.insertEdge(edge1, false);
1228
1229				return sb.createEdgeTemplateFromCells([cell1, edge1], 164, 4, 'Message lost');
1230			}),
1231			this.addEntry('message found', function()
1232			{
1233		    	var cell1 = new mxCell('', new mxGeometry(0, 0, 4, 4), 'ellipse;html=1;fillColor=#000000;');
1234		    	cell1.vertex = true;
1235				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1236				edge1.geometry.setTerminalPoint(new mxPoint(164, 2), false);
1237				edge1.geometry.relative = true;
1238				edge1.edge = true;
1239				cell1.insertEdge(edge1, true);
1240
1241				return sb.createEdgeTemplateFromCells([cell1, edge1], 164, 4, 'Message found');
1242			}),
1243		 	this.addEntry(dt + 'lifeline execution', function()
1244			{
1245		 		var cell1 = new mxCell('', new mxGeometry(0, 0, 160, 160),
1246		 			'rounded=0;dashed=0;container=0;collapsible=0;recursiveResize=0;');
1247				cell1.vertex = true;
1248		 		var cell2 = new mxCell('LifeLine1', new mxGeometry(30, 10, 100, 30),
1249		 			'rounded=0;dashed=0;');
1250				cell2.vertex = true;
1251				cell1.insert(cell2);
1252		 		var cell3 = new mxCell('', new mxGeometry(75, 60, 10, 60),
1253		 			'rounded=0;dashed=0;');
1254				cell3.vertex = true;
1255				cell1.insert(cell3);
1256				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'html=1;verticalAlign=bottom;startArrow=none;endArrow=none;dashed=1;');
1257				edge1.geometry.relative = true;
1258				edge1.edge = true;
1259				cell2.insertEdge(edge1, false);
1260				cell3.insertEdge(edge1, true);
1261				var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'html=1;verticalAlign=bottom;startArrow=none;endArrow=none;dashed=1;');
1262				edge2.geometry.setTerminalPoint(new mxPoint(80, 150), true);
1263				edge2.geometry.relative = true;
1264				edge2.edge = true;
1265				cell3.insertEdge(edge2, false);
1266				var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'html=1;verticalAlign=bottom;startArrow=none;endArrow=open;endFill=0;');
1267				edge3.geometry.setTerminalPoint(new mxPoint(0, 60), true);
1268				edge3.geometry.setTerminalPoint(new mxPoint(75, 60), false);
1269				edge3.geometry.relative = true;
1270				edge3.edge = true;
1271				cell1.insert(edge1);
1272				cell1.insert(edge2);
1273				cell1.insert(edge3);
1274
1275				return sb.createVertexTemplateFromCells([cell1], 160, 160, 'Lifeline');
1276			}),
1277			this.addEntry('message', function()
1278			{
1279		    	var cell1 = new mxCell('Message1', new mxGeometry(40, 0, 80, 30), 'html=1;rounded=1;absoluteArcSize=1;arcSize=10;');
1280		    	cell1.vertex = true;
1281				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1282				edge1.geometry.setTerminalPoint(new mxPoint(0, 15), true);
1283				edge1.geometry.relative = true;
1284				edge1.edge = true;
1285				cell1.insertEdge(edge1, false);
1286
1287				return sb.createEdgeTemplateFromCells([cell1, edge1], 120, 30, 'Message');
1288			}),
1289			this.addEntry('message', function()
1290			{
1291		    	var cell1 = new mxCell('Message1', new mxGeometry(0, 0, 80, 30), 'html=1;rounded=1;absoluteArcSize=1;arcSize=10;');
1292		    	cell1.vertex = true;
1293				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;rounded=0;align=center;verticalAlign=top;endFill=0;labelBackgroundColor=none;endSize=6;');
1294				edge1.geometry.setTerminalPoint(new mxPoint(120, 15), false);
1295				edge1.geometry.relative = true;
1296				edge1.edge = true;
1297				cell1.insertEdge(edge1, true);
1298
1299				return sb.createEdgeTemplateFromCells([cell1, edge1], 120, 30, 'Message');
1300			}),
1301		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;dashed=1;', 160, 0, '&lt;&lt;extend&gt;&gt;', 'Extend', null, 'extend'),
1302		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;dashed=1;', 160, 0, '&lt;&lt;include&gt;&gt;', 'Include', null, 'include'),
1303		 	this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;labelBackgroundColor=none;endArrow=open;endFill=0;dashed=1;', 160, 0, '&lt;&lt;deploy&gt;&gt;', 'Deploy', null, 'deploy')
1304		];
1305
1306   		this.addPalette('uml25', mxResources.get('uml') + ' 2.5', false, mxUtils.bind(this, function(content)
1307	    {
1308			for (var i = 0; i < fns.length; i++)
1309			{
1310				content.appendChild(fns[i](content));
1311			}
1312		}));
1313
1314		this.setCurrentSearchEntryLibrary();
1315	};
1316
1317})();
1318