drawio_dsl 0.8.4 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.data/shapes.json +18 -0
  3. data/.builders/.templates/basic/drawio_extensions.rb +2 -1
  4. data/.builders/.templates/basic/drawio_shapes.rb +1 -1
  5. data/.builders/blueprint/shapes.rb +2 -0
  6. data/.builders/generators/20-drawio-extensions.rb +1 -1
  7. data/.builders/generators/domain_diagram.rb +448 -15
  8. data/.builders/generators/parking-map.png +0 -0
  9. data/.builders/generators/parking_app.rb +110 -0
  10. data/.builders/generators/printspeak-architecture-generator.rb +15 -10
  11. data/.builders/generators/project-plan.rb +7 -4
  12. data/.builders/generators/sample_diagrams/20-styles.rb +2 -2
  13. data/.builders/generators/sample_diagrams/30-html-shapes.rb +36 -14
  14. data/.builders/generators/sample_diagrams/35-ids-and-arrows.rb +0 -2
  15. data/CHANGELOG.md +21 -0
  16. data/README.md +5 -3
  17. data/docs/domain-modal/domain_model.drawio +265 -0
  18. data/docs/domain-modal/domain_model.svg +3 -0
  19. data/docs/domain-modal/domain_model_custom.drawio +408 -0
  20. data/docs/domain-modal/domain_model_custom.svg +1 -0
  21. data/docs/domain-modal.md +9 -0
  22. data/docs/parking_app.drawio +25 -0
  23. data/docs/parking_app.svg +3 -0
  24. data/docs/printspeak-architecture-generator.drawio +31 -0
  25. data/docs/printspeak-architecture-generator.svg +3 -0
  26. data/docs/project-plan/project.drawio +63 -54
  27. data/docs/project-plan/project_done.svg +1 -1
  28. data/docs/project-plan/project_in_progress.svg +1 -1
  29. data/docs/project-plan/project_todo.svg +1 -1
  30. data/docs/samples/styles-glass.svg +1 -1
  31. data/docs/samples/styles-plain.svg +1 -1
  32. data/docs/samples/styles-rounded.svg +1 -1
  33. data/docs/samples/styles-shadow.svg +1 -1
  34. data/docs/samples/styles-sketch.svg +1 -1
  35. data/lib/drawio_dsl/configuration_shapes.rb +4 -0
  36. data/lib/drawio_dsl/dom_builder.rb +1 -1
  37. data/lib/drawio_dsl/dom_builder_shapes.rb +12 -0
  38. data/lib/drawio_dsl/drawio.rb +0 -19
  39. data/lib/drawio_dsl/drawio_extensions.rb +3 -2
  40. data/lib/drawio_dsl/drawio_extensions_active.rb +1 -1
  41. data/lib/drawio_dsl/drawio_page.rb +22 -0
  42. data/lib/drawio_dsl/drawio_shapes.rb +32 -20
  43. data/lib/drawio_dsl/formatters/base_formatter.rb +121 -1
  44. data/lib/drawio_dsl/formatters/html_builder.rb +40 -1
  45. data/lib/drawio_dsl/formatters/interface_formatter.rb +14 -2
  46. data/lib/drawio_dsl/formatters/klass_formatter.rb +14 -2
  47. data/lib/drawio_dsl/formatters/style_builder.rb +1 -1
  48. data/lib/drawio_dsl/schema/_.rb +2 -0
  49. data/lib/drawio_dsl/schema/shapes/db_json.rb +9 -0
  50. data/lib/drawio_dsl/schema/shapes/group.rb +9 -0
  51. data/lib/drawio_dsl/schema/shapes/shape.rb +2 -2
  52. data/lib/drawio_dsl/version.rb +1 -1
  53. data/lib/drawio_dsl/xml_builder.rb +1 -1
  54. data/lib/drawio_dsl.rb +1 -0
  55. data/package-lock.json +2 -2
  56. data/package.json +1 -1
  57. metadata +16 -4
  58. data/docs/domain.drawio +0 -31
  59. data/docs/domain_model.svg +0 -3
@@ -0,0 +1,408 @@
1
+ <mxfile host="65bd71144e">
2
+ <diagram id="9JO" name="Domain Modal">
3
+ <mxGraphModel dx="2558" dy="1296" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#FFFFFF" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="page_root_9JO"/>
6
+ <mxCell id="node_root_9JO" parent="page_root_9JO"/>
7
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-1" value="Schema/shapes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;" vertex="1" parent="node_root_9JO">
8
+ <mxGeometry x="1521" y="31" width="893" height="678" as="geometry"/>
9
+ </mxCell>
10
+ <mxCell id="p1n56-78arLZspwxZ9LU-0" value="" style="group" vertex="1" connectable="0" parent="node_root_9JO">
11
+ <mxGeometry x="35" y="28" width="607" height="347" as="geometry"/>
12
+ </mxCell>
13
+ <mxCell id="p1n56-78arLZspwxZ9LU-1" value="Configuration" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;verticalAlign=top;fontSize=20;" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
14
+ <mxGeometry width="607" height="347" as="geometry"/>
15
+ </mxCell>
16
+ <mxCell id="p1n56-78arLZspwxZ9LU-2" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;ShapeDefaults&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;type: symbol&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;category: symbol&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;x: integer&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;y: integer&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;w: integer&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;h: integer&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style_modifiers: string&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
17
+ <mxGeometry x="425" y="53" width="160" height="158" as="geometry"/>
18
+ </mxCell>
19
+ <mxCell id="p1n56-78arLZspwxZ9LU-3" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;ShapeThemeStyle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;theme: symbol&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;fill_color: string&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;stroke_color: string&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;font_color: string&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
20
+ <mxGeometry x="425" y="225" width="160" height="107" as="geometry"/>
21
+ </mxCell>
22
+ <mxCell id="p1n56-78arLZspwxZ9LU-4" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;base_style: Struct&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shapes: Hash&amp;lt;Struct&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;themes: Hash&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;+ &amp;lt;ConfigurationThemes&amp;gt;()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;+ &amp;lt;ConfigurationShapes&amp;gt;()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
23
+ <mxGeometry x="27" y="155" width="160" height="160" as="geometry"/>
24
+ </mxCell>
25
+ <mxCell id="p1n56-78arLZspwxZ9LU-5" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;ConfigurationExtension&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;drawio: Configuration&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
26
+ <mxGeometry x="25" y="51" width="160" height="74.5" as="geometry"/>
27
+ </mxCell>
28
+ <mxCell id="p1n56-78arLZspwxZ9LU-6" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;ConfigurationShapes&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_shapes()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
29
+ <mxGeometry x="228" y="242" width="160" height="73" as="geometry"/>
30
+ </mxCell>
31
+ <mxCell id="p1n56-78arLZspwxZ9LU-7" style="edgeStyle=none;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=20;fillColor=#1ba1e2;strokeColor=#006EAF;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="p1n56-78arLZspwxZ9LU-0" source="p1n56-78arLZspwxZ9LU-4" target="p1n56-78arLZspwxZ9LU-6">
32
+ <mxGeometry relative="1" as="geometry">
33
+ <mxPoint x="183" y="176" as="sourcePoint"/>
34
+ </mxGeometry>
35
+ </mxCell>
36
+ <mxCell id="p1n56-78arLZspwxZ9LU-8" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;ConfigurationThemes&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_theme()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_themes()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="p1n56-78arLZspwxZ9LU-0">
37
+ <mxGeometry x="228" y="148" width="160" height="87" as="geometry"/>
38
+ </mxCell>
39
+ <mxCell id="p1n56-78arLZspwxZ9LU-9" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1.01;exitY=0.621;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=20;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="p1n56-78arLZspwxZ9LU-0" source="p1n56-78arLZspwxZ9LU-4" target="p1n56-78arLZspwxZ9LU-8">
40
+ <mxGeometry relative="1" as="geometry"/>
41
+ </mxCell>
42
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-0" value="" style="group" vertex="1" connectable="0" parent="node_root_9JO">
43
+ <mxGeometry x="165" y="816" width="394" height="370" as="geometry"/>
44
+ </mxCell>
45
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-1" value="DOM Builder" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-0">
46
+ <mxGeometry width="394" height="370" as="geometry"/>
47
+ </mxCell>
48
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-2" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DomBuilder&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;actions: Array&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;last_action: Hash&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;focus_node: Anchor&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;current_page: Page&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;dom&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;reset()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;queue_action()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;set_diagram()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;diagram()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_page()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_grid_layout()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_flex_layout()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_layout()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_shape()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;+ &amp;lt;DomBuilderShapes&amp;gt;()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-0">
49
+ <mxGeometry x="8" y="43" width="160" height="313" as="geometry"/>
50
+ </mxCell>
51
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-3" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DomBuilderShapes&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_* (for each shape)()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-0">
52
+ <mxGeometry x="219" y="287" width="160" height="69" as="geometry"/>
53
+ </mxCell>
54
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-4" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1.014;exitY=0.936;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=20;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;" edge="1" parent="OkbvPoyOcbhmgBm-sh1m-0" source="OkbvPoyOcbhmgBm-sh1m-2" target="OkbvPoyOcbhmgBm-sh1m-3">
55
+ <mxGeometry relative="1" as="geometry"/>
56
+ </mxCell>
57
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-20" value="" style="group" vertex="1" connectable="0" parent="node_root_9JO">
58
+ <mxGeometry x="35" y="433" width="612" height="310" as="geometry"/>
59
+ </mxCell>
60
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-10" value="DrawIO DSL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
61
+ <mxGeometry width="612" height="310" as="geometry"/>
62
+ </mxCell>
63
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-12" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Drawio&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;diagram()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;page()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;save()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;osave()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;export_svg()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;export_png()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
64
+ <mxGeometry x="12" y="60" width="160" height="160" as="geometry"/>
65
+ </mxCell>
66
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-13" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DrawioPage&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;grid_layout()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;flex_layout()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;+ &amp;lt;DrawioShapes&amp;gt;()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
67
+ <mxGeometry x="433" y="10" width="161" height="95" as="geometry"/>
68
+ </mxCell>
69
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-14" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.999;exitY=0.441;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=20;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="OkbvPoyOcbhmgBm-sh1m-20" source="OkbvPoyOcbhmgBm-sh1m-12" target="OkbvPoyOcbhmgBm-sh1m-18">
70
+ <mxGeometry relative="1" as="geometry">
71
+ <mxPoint x="222" y="114" as="targetPoint"/>
72
+ </mxGeometry>
73
+ </mxCell>
74
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-15" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DrawioShapes&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;random()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;* (for each shape)()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
75
+ <mxGeometry x="434" y="130" width="160" height="90" as="geometry"/>
76
+ </mxCell>
77
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-16" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=20;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="OkbvPoyOcbhmgBm-sh1m-20" source="OkbvPoyOcbhmgBm-sh1m-13" target="OkbvPoyOcbhmgBm-sh1m-15">
78
+ <mxGeometry relative="1" as="geometry"/>
79
+ </mxCell>
80
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-17" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="OkbvPoyOcbhmgBm-sh1m-20" source="OkbvPoyOcbhmgBm-sh1m-18" target="OkbvPoyOcbhmgBm-sh1m-13">
81
+ <mxGeometry relative="1" as="geometry"/>
82
+ </mxCell>
83
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-18" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;LayoutEngine&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;page: Page&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;current_page: Page&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;current_layout: Layout&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;call()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;traverse_node()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;process_node()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
84
+ <mxGeometry x="223.5" y="43" width="160" height="160" as="geometry"/>
85
+ </mxCell>
86
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-19" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;XmlBuilder&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;diagram&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;build()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="OkbvPoyOcbhmgBm-sh1m-20">
87
+ <mxGeometry x="223.5" y="220" width="158.5" height="80" as="geometry"/>
88
+ </mxCell>
89
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-11" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="OkbvPoyOcbhmgBm-sh1m-20" source="OkbvPoyOcbhmgBm-sh1m-12" target="OkbvPoyOcbhmgBm-sh1m-19">
90
+ <mxGeometry relative="1" as="geometry"/>
91
+ </mxCell>
92
+ <mxCell id="-DspgZWovlFqo9uIlNDs-1" value="x" style="group" vertex="1" connectable="0" parent="node_root_9JO">
93
+ <mxGeometry x="697" y="28" width="769" height="926" as="geometry"/>
94
+ </mxCell>
95
+ <mxCell id="-DspgZWovlFqo9uIlNDs-2" value="Diagram &amp;gt; Pages &amp;gt; Nodes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
96
+ <mxGeometry width="769" height="926" as="geometry"/>
97
+ </mxCell>
98
+ <mxCell id="-DspgZWovlFqo9uIlNDs-3" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;CommonStyle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;white_space: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;html: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;rounded: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shadow: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;glass: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;sketch: int&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
99
+ <mxGeometry x="253" y="113" width="160" height="170" as="geometry"/>
100
+ </mxCell>
101
+ <mxCell id="-DspgZWovlFqo9uIlNDs-4" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DefaultPalette&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;fill_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;stroke_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;font_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;gradient: String&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
102
+ <mxGeometry x="13" y="70" width="160" height="132" as="geometry"/>
103
+ </mxCell>
104
+ <mxCell id="-DspgZWovlFqo9uIlNDs-5" style="edgeStyle=none;shape=connector;rounded=1;html=1;entryX=-0.003;entryY=0.062;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=ERmany;strokeColor=#006EAF;fillColor=#1ba1e2;endFill=0;entryPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" target="-DspgZWovlFqo9uIlNDs-14">
105
+ <mxGeometry relative="1" as="geometry">
106
+ <mxPoint x="206" y="341" as="sourcePoint"/>
107
+ <mxPoint x="227" y="383.5000000000001" as="targetPoint"/>
108
+ </mxGeometry>
109
+ </mxCell>
110
+ <mxCell id="-DspgZWovlFqo9uIlNDs-6" value="&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center&quot;&gt;&lt;b&gt;Diagram&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;host: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;theme: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;style: CommonStyle&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;palette: DefaultPalette&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;pages: Array&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
111
+ <mxGeometry x="48" y="302" width="160" height="160" as="geometry"/>
112
+ </mxCell>
113
+ <mxCell id="-DspgZWovlFqo9uIlNDs-7" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.455;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;entryPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-3" target="-DspgZWovlFqo9uIlNDs-6">
114
+ <mxGeometry relative="1" as="geometry"/>
115
+ </mxCell>
116
+ <mxCell id="-DspgZWovlFqo9uIlNDs-8" style="edgeStyle=elbowEdgeStyle;shape=connector;rounded=1;html=1;entryX=0.006;entryY=0.571;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-4" target="-DspgZWovlFqo9uIlNDs-6">
117
+ <mxGeometry relative="1" as="geometry">
118
+ <Array as="points">
119
+ <mxPoint x="27" y="293"/>
120
+ </Array>
121
+ </mxGeometry>
122
+ </mxCell>
123
+ <mxCell id="-DspgZWovlFqo9uIlNDs-9" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Node&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;id: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;page: Page&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;parent: Node&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;classification: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;type: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;nodes: Array&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;initialize()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;root?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_node()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
124
+ <mxGeometry x="496" y="475" width="160" height="224" as="geometry"/>
125
+ </mxCell>
126
+ <mxCell id="-DspgZWovlFqo9uIlNDs-10" style="edgeStyle=elbowEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;entryX=0.994;entryY=0.072;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-11" target="-DspgZWovlFqo9uIlNDs-9">
127
+ <mxGeometry relative="1" as="geometry">
128
+ <Array as="points">
129
+ <mxPoint x="688" y="446"/>
130
+ </Array>
131
+ </mxGeometry>
132
+ </mxCell>
133
+ <mxCell id="-DspgZWovlFqo9uIlNDs-11" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;NodeList&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;nodes: Array&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;all()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shapes()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;layouts()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;length()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;empty?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;any?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;first()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_xml()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
134
+ <mxGeometry x="496" y="214" width="160" height="241" as="geometry"/>
135
+ </mxCell>
136
+ <mxCell id="-DspgZWovlFqo9uIlNDs-12" style="edgeStyle=elbowEdgeStyle;shape=connector;rounded=1;html=1;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=ERmany;endFill=0;strokeColor=#006EAF;fillColor=#1ba1e2;exitX=0.994;exitY=0.57;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.994;entryY=0.041;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-9" target="-DspgZWovlFqo9uIlNDs-11">
137
+ <mxGeometry relative="1" as="geometry">
138
+ <mxPoint x="565" y="538" as="targetPoint"/>
139
+ <Array as="points">
140
+ <mxPoint x="731" y="482"/>
141
+ </Array>
142
+ </mxGeometry>
143
+ </mxCell>
144
+ <mxCell id="-DspgZWovlFqo9uIlNDs-13" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=1.004;exitY=0.386;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=ERmany;endFill=0;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-14" target="-DspgZWovlFqo9uIlNDs-11">
145
+ <mxGeometry relative="1" as="geometry"/>
146
+ </mxCell>
147
+ <mxCell id="-DspgZWovlFqo9uIlNDs-14" value="&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center&quot;&gt;&lt;b&gt;Page&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;diagram: Diagram&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;position_x: int&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;position_y: int&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;id: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;active: bool&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;name: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;theme: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;style: CommonStyle&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;palette: DefaultPalette&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;margin_left: int&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;margin_top: int&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;nodes: Array&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;grid: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;grid_size: int&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;guides: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;tooltips: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;connect: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;arrows: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;fold: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;page_no: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;page_scale: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;page_width: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;page_height: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;background: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;page_shadow: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;math: String&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;active?: Boolean&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;add_node()&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;as_xml()&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;to_h()&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 4px ; margin-top: 4px&quot;&gt;settings()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="-DspgZWovlFqo9uIlNDs-1">
148
+ <mxGeometry x="253" y="303" width="160" height="611" as="geometry"/>
149
+ </mxCell>
150
+ <mxCell id="-DspgZWovlFqo9uIlNDs-15" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.269;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-3" target="-DspgZWovlFqo9uIlNDs-14">
151
+ <mxGeometry relative="1" as="geometry"/>
152
+ </mxCell>
153
+ <mxCell id="-DspgZWovlFqo9uIlNDs-16" style="edgeStyle=elbowEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.08;exitDx=0;exitDy=0;entryX=1;entryY=0.332;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;" edge="1" parent="-DspgZWovlFqo9uIlNDs-1" source="-DspgZWovlFqo9uIlNDs-4" target="-DspgZWovlFqo9uIlNDs-14">
154
+ <mxGeometry relative="1" as="geometry">
155
+ <Array as="points">
156
+ <mxPoint x="440" y="319"/>
157
+ </Array>
158
+ </mxGeometry>
159
+ </mxCell>
160
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-46" value="" style="group" vertex="1" connectable="0" parent="node_root_9JO">
161
+ <mxGeometry x="1521" y="773" width="1088" height="316" as="geometry"/>
162
+ </mxCell>
163
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-47" value="Schema/shapes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;verticalAlign=top;fontSize=25;" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
164
+ <mxGeometry width="1088" height="316" as="geometry"/>
165
+ </mxCell>
166
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-48" value="actor" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
167
+ <mxGeometry x="12" y="44" width="75" height="50" as="geometry"/>
168
+ </mxCell>
169
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-49" value="actor2" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
170
+ <mxGeometry x="102" y="44" width="75" height="50" as="geometry"/>
171
+ </mxCell>
172
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-50" value="callout" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
173
+ <mxGeometry x="192" y="44" width="75" height="50" as="geometry"/>
174
+ </mxCell>
175
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-51" value="callout2" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
176
+ <mxGeometry x="282" y="44" width="75" height="50" as="geometry"/>
177
+ </mxCell>
178
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-52" value="callout3" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
179
+ <mxGeometry x="372" y="44" width="75" height="50" as="geometry"/>
180
+ </mxCell>
181
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-53" value="callout4" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
182
+ <mxGeometry x="462" y="44" width="75" height="50" as="geometry"/>
183
+ </mxCell>
184
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-54" value="circle" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
185
+ <mxGeometry x="552" y="44" width="75" height="50" as="geometry"/>
186
+ </mxCell>
187
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-55" value="cloud" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
188
+ <mxGeometry x="642" y="44" width="75" height="50" as="geometry"/>
189
+ </mxCell>
190
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-56" value="container" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
191
+ <mxGeometry x="732" y="44" width="75" height="50" as="geometry"/>
192
+ </mxCell>
193
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-57" value="container2" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
194
+ <mxGeometry x="822" y="44" width="75" height="50" as="geometry"/>
195
+ </mxCell>
196
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-58" value="container3" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
197
+ <mxGeometry x="912" y="44" width="75" height="50" as="geometry"/>
198
+ </mxCell>
199
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-59" value="container4" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
200
+ <mxGeometry x="1002" y="44" width="75" height="50" as="geometry"/>
201
+ </mxCell>
202
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-60" value="cross" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
203
+ <mxGeometry x="12" y="114" width="75" height="50" as="geometry"/>
204
+ </mxCell>
205
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-61" value="database" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
206
+ <mxGeometry x="102" y="114" width="75" height="50" as="geometry"/>
207
+ </mxCell>
208
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-62" value="db_json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
209
+ <mxGeometry x="192" y="114" width="75" height="50" as="geometry"/>
210
+ </mxCell>
211
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-63" value="diamond" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
212
+ <mxGeometry x="282" y="114" width="75" height="50" as="geometry"/>
213
+ </mxCell>
214
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-64" value="document" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
215
+ <mxGeometry x="372" y="114" width="75" height="50" as="geometry"/>
216
+ </mxCell>
217
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-65" value="ellipse" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
218
+ <mxGeometry x="462" y="114" width="75" height="50" as="geometry"/>
219
+ </mxCell>
220
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-66" value="embed_col200" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
221
+ <mxGeometry x="552" y="114" width="75" height="50" as="geometry"/>
222
+ </mxCell>
223
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-67" value="embed_col50" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
224
+ <mxGeometry x="642" y="114" width="75" height="50" as="geometry"/>
225
+ </mxCell>
226
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-68" value="embed_row" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
227
+ <mxGeometry x="732" y="114" width="75" height="50" as="geometry"/>
228
+ </mxCell>
229
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-69" value="envelop" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
230
+ <mxGeometry x="822" y="114" width="75" height="50" as="geometry"/>
231
+ </mxCell>
232
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-70" value="face" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
233
+ <mxGeometry x="912" y="114" width="75" height="50" as="geometry"/>
234
+ </mxCell>
235
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-71" value="h1" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
236
+ <mxGeometry x="1002" y="114" width="75" height="50" as="geometry"/>
237
+ </mxCell>
238
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-72" value="h2" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
239
+ <mxGeometry x="12" y="184" width="75" height="50" as="geometry"/>
240
+ </mxCell>
241
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-73" value="h3" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
242
+ <mxGeometry x="102" y="184" width="75" height="50" as="geometry"/>
243
+ </mxCell>
244
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-74" value="h4" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
245
+ <mxGeometry x="192" y="184" width="75" height="50" as="geometry"/>
246
+ </mxCell>
247
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-75" value="h5" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
248
+ <mxGeometry x="282" y="184" width="75" height="50" as="geometry"/>
249
+ </mxCell>
250
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-76" value="h6" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
251
+ <mxGeometry x="372" y="184" width="75" height="50" as="geometry"/>
252
+ </mxCell>
253
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-77" value="hexagon" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
254
+ <mxGeometry x="462" y="184" width="75" height="50" as="geometry"/>
255
+ </mxCell>
256
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-78" value="interface" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
257
+ <mxGeometry x="552" y="184" width="75" height="50" as="geometry"/>
258
+ </mxCell>
259
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-79" value="klass" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
260
+ <mxGeometry x="642" y="184" width="75" height="50" as="geometry"/>
261
+ </mxCell>
262
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-80" value="line" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
263
+ <mxGeometry x="732" y="184" width="75" height="50" as="geometry"/>
264
+ </mxCell>
265
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-81" value="note" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
266
+ <mxGeometry x="822" y="184" width="75" height="50" as="geometry"/>
267
+ </mxCell>
268
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-82" value="p" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
269
+ <mxGeometry x="912" y="184" width="75" height="50" as="geometry"/>
270
+ </mxCell>
271
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-83" value="process" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
272
+ <mxGeometry x="1002" y="184" width="75" height="50" as="geometry"/>
273
+ </mxCell>
274
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-84" value="rectangle" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
275
+ <mxGeometry x="12" y="254" width="75" height="50" as="geometry"/>
276
+ </mxCell>
277
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-85" value="rectangle2" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
278
+ <mxGeometry x="102" y="254" width="75" height="50" as="geometry"/>
279
+ </mxCell>
280
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-86" value="shape" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
281
+ <mxGeometry x="192" y="254" width="75" height="50" as="geometry"/>
282
+ </mxCell>
283
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-87" value="square" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
284
+ <mxGeometry x="282" y="254" width="75" height="50" as="geometry"/>
285
+ </mxCell>
286
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-88" value="step" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
287
+ <mxGeometry x="372" y="254" width="75" height="50" as="geometry"/>
288
+ </mxCell>
289
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-89" value="tick" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
290
+ <mxGeometry x="462" y="254" width="75" height="50" as="geometry"/>
291
+ </mxCell>
292
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-90" value="todo" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
293
+ <mxGeometry x="552" y="254" width="75" height="50" as="geometry"/>
294
+ </mxCell>
295
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-91" value="triangle" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-46">
296
+ <mxGeometry x="642" y="254" width="75" height="50" as="geometry"/>
297
+ </mxCell>
298
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-95" value="" style="group" vertex="1" connectable="0" parent="node_root_9JO">
299
+ <mxGeometry x="2226" y="402" width="383" height="233" as="geometry"/>
300
+ </mxCell>
301
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-6" value="1000+ Extension Shapes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;shadow=1;" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-95">
302
+ <mxGeometry width="383" height="233" as="geometry"/>
303
+ </mxCell>
304
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-7" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DrawioExtensionsActive&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;apply_active_flags()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;check_if_active()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-95">
305
+ <mxGeometry x="211" y="134.5" width="160" height="86" as="geometry"/>
306
+ </mxCell>
307
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-9" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;DrawioExtensions&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;sections: Array&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;current_section: Hash&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;section()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shape()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;build_extensions()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;configure_extensions()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;+ &amp;lt;DrawioExtensionsActive&amp;gt;()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="ZvyaP2AF-4cOotLzi7ua-95">
308
+ <mxGeometry x="20" y="40.5" width="160" height="180" as="geometry"/>
309
+ </mxCell>
310
+ <mxCell id="OkbvPoyOcbhmgBm-sh1m-8" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1.005;exitY=0.883;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=20;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;" edge="1" parent="ZvyaP2AF-4cOotLzi7ua-95" source="OkbvPoyOcbhmgBm-sh1m-9" target="OkbvPoyOcbhmgBm-sh1m-7">
311
+ <mxGeometry relative="1" as="geometry"/>
312
+ </mxCell>
313
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-2" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;FlexLayout&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;direction: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;wrap_at: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;gap: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;perpendicular_max: int&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;position_shape()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
314
+ <mxGeometry x="1552" y="422" width="160" height="160" as="geometry"/>
315
+ </mxCell>
316
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-3" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;GridLayout&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;direction: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;wrap_at: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;grid_size: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;grid_w: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;grid_h: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;cell_no: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;h_align: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;v_align: String&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;position_shape()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
317
+ <mxGeometry x="1757" y="422" width="160" height="234" as="geometry"/>
318
+ </mxCell>
319
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-4" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-6" target="xuDTLIo-hNdLQv3PIFHu-3">
320
+ <mxGeometry relative="1" as="geometry"/>
321
+ </mxCell>
322
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-5" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-6" target="xuDTLIo-hNdLQv3PIFHu-2">
323
+ <mxGeometry relative="1" as="geometry"/>
324
+ </mxCell>
325
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-6" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Layout&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;anchor_x: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;anchor_y: String&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;fire_after_init()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;after_init()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
326
+ <mxGeometry x="1657" y="201" width="160" height="160" as="geometry"/>
327
+ </mxCell>
328
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-7" value="anchor" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_9JO">
329
+ <mxGeometry x="1629" y="92" width="75" height="50" as="geometry"/>
330
+ </mxCell>
331
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-8" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt; MixIn &amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Factory&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;formatter()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;format_instance()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
332
+ <mxGeometry x="2214" y="92" width="160" height="88" as="geometry"/>
333
+ </mxCell>
334
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-9" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.038;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;exitPerimeter=0;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-10" target="xuDTLIo-hNdLQv3PIFHu-8">
335
+ <mxGeometry relative="1" as="geometry"/>
336
+ </mxCell>
337
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-104" value="" style="edgeStyle=none;shape=flexArrow;rounded=1;html=1;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;startSize=2;strokeColor=#6F0000;fillColor=#a20025;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-10" target="ZvyaP2AF-4cOotLzi7ua-47">
338
+ <mxGeometry relative="1" as="geometry"/>
339
+ </mxCell>
340
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-10" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Shape&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;category: Symbol&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;theme: Symbol&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;title: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;value: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;white_space: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;html: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;rounded: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shadow: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;glass: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;sketch: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;fill_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;stroke_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;font_color: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;gradient: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;x: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;y: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;w: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;h: int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style_modifiers: Hash&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;source: Symbol (id)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;target: Symbol (id)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;&amp;gt; configure_shape()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;initialize()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;shape_defaults()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;apply_defaults()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;format()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_xml()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;draw_element()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;draw_line()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
341
+ <mxGeometry x="2016" y="92" width="160" height="598" as="geometry"/>
342
+ </mxCell>
343
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-11" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.987;entryY=0.425;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-14" target="xuDTLIo-hNdLQv3PIFHu-7">
344
+ <mxGeometry relative="1" as="geometry"/>
345
+ </mxCell>
346
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-97" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;entryX=-0.012;entryY=0.041;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-14" target="xuDTLIo-hNdLQv3PIFHu-10">
347
+ <mxGeometry relative="1" as="geometry"/>
348
+ </mxCell>
349
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-99" style="edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.994;entryY=0.175;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="node_root_9JO" source="xuDTLIo-hNdLQv3PIFHu-14" target="xuDTLIo-hNdLQv3PIFHu-6">
350
+ <mxGeometry relative="1" as="geometry"/>
351
+ </mxCell>
352
+ <mxCell id="xuDTLIo-hNdLQv3PIFHu-14" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;Node&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;id: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;page: Page&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;parent: Node&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;classification: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;type: String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;nodes: Array&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;initialize()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;to_h()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;root?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_node()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_9JO">
353
+ <mxGeometry x="1811" y="92" width="160" height="82" as="geometry"/>
354
+ </mxCell>
355
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-100" style="shape=flexArrow;rounded=1;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;strokeColor=#6F0000;fillColor=#a20025;startSize=2;" edge="1" parent="node_root_9JO" source="OkbvPoyOcbhmgBm-sh1m-10" target="OkbvPoyOcbhmgBm-sh1m-1">
356
+ <mxGeometry relative="1" as="geometry"/>
357
+ </mxCell>
358
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-102" style="edgeStyle=none;shape=flexArrow;rounded=1;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;startSize=2;strokeColor=#6F0000;fillColor=#a20025;" edge="1" parent="node_root_9JO" source="OkbvPoyOcbhmgBm-sh1m-10" target="-DspgZWovlFqo9uIlNDs-2">
359
+ <mxGeometry relative="1" as="geometry"/>
360
+ </mxCell>
361
+ <mxCell id="ZvyaP2AF-4cOotLzi7ua-103" style="edgeStyle=none;shape=flexArrow;rounded=1;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.002;entryY=0.682;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;endFill=1;startSize=2;strokeColor=#6F0000;fillColor=#a20025;" edge="1" parent="node_root_9JO" source="-DspgZWovlFqo9uIlNDs-2" target="xuDTLIo-hNdLQv3PIFHu-1">
362
+ <mxGeometry relative="1" as="geometry"/>
363
+ </mxCell>
364
+ </root>
365
+ </mxGraphModel>
366
+ </diagram>
367
+ <diagram id="xK1QwlmVjy0tM9_Ur9DR" name="Page-2">
368
+ <mxGraphModel dx="2558" dy="127" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
369
+ <root>
370
+ <mxCell id="C9nWzA3Ec9eiNIFnb_up-0"/>
371
+ <mxCell id="C9nWzA3Ec9eiNIFnb_up-1" parent="C9nWzA3Ec9eiNIFnb_up-0"/>
372
+ <mxCell id="AG2We_rC4ZABQSoUwN3x-0" value="" style="group" vertex="1" connectable="0" parent="C9nWzA3Ec9eiNIFnb_up-1">
373
+ <mxGeometry x="920" y="1220" width="792" height="391" as="geometry"/>
374
+ </mxCell>
375
+ <mxCell id="qNDvFymuShC94W42NVlu-1" value="Formatters" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=25;verticalAlign=top;" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
376
+ <mxGeometry width="792" height="391" as="geometry"/>
377
+ </mxCell>
378
+ <mxCell id="qNDvFymuShC94W42NVlu-2" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;HtmlBuilder&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;element_style_defaults: Hash&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;default_for()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style_for()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;empty?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;exist?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_html()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;hr()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;b()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;p()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_line()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;add_placeholder()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;group()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;build_lines()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;lines()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;groups()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
379
+ <mxGeometry x="408" y="44" width="160" height="327" as="geometry"/>
380
+ </mxCell>
381
+ <mxCell id="qNDvFymuShC94W42NVlu-3" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="AG2We_rC4ZABQSoUwN3x-0" source="qNDvFymuShC94W42NVlu-4" target="qNDvFymuShC94W42NVlu-2">
382
+ <mxGeometry relative="1" as="geometry"/>
383
+ </mxCell>
384
+ <mxCell id="qNDvFymuShC94W42NVlu-4" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;BaseFormatter&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;html: String&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;empty?()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_html()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
385
+ <mxGeometry x="115" y="50" width="160" height="93" as="geometry"/>
386
+ </mxCell>
387
+ <mxCell id="qNDvFymuShC94W42NVlu-5" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;InterfaceFormatter&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;header()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;field()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;method()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_html()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
388
+ <mxGeometry x="16.5" y="188" width="160" height="108" as="geometry"/>
389
+ </mxCell>
390
+ <mxCell id="qNDvFymuShC94W42NVlu-6" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="AG2We_rC4ZABQSoUwN3x-0" source="qNDvFymuShC94W42NVlu-4" target="qNDvFymuShC94W42NVlu-5">
391
+ <mxGeometry relative="1" as="geometry"/>
392
+ </mxCell>
393
+ <mxCell id="qNDvFymuShC94W42NVlu-7" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;KlassFormatter&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;header()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;field()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;method()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;as_html()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
394
+ <mxGeometry x="191.5" y="188" width="160" height="108" as="geometry"/>
395
+ </mxCell>
396
+ <mxCell id="qNDvFymuShC94W42NVlu-8" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="AG2We_rC4ZABQSoUwN3x-0" source="qNDvFymuShC94W42NVlu-4" target="qNDvFymuShC94W42NVlu-7">
397
+ <mxGeometry relative="1" as="geometry"/>
398
+ </mxCell>
399
+ <mxCell id="qNDvFymuShC94W42NVlu-9" value="&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px;text-align:center&quot;&gt;&lt;b&gt;StyleBuilder&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;defaults: Hash&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;custom: Hash&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;customize()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;style_attribute()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;margin-top:4px&quot;&gt;build()&lt;/p&gt;" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="AG2We_rC4ZABQSoUwN3x-0">
400
+ <mxGeometry x="609" y="55" width="160" height="160" as="geometry"/>
401
+ </mxCell>
402
+ <mxCell id="qNDvFymuShC94W42NVlu-10" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=25;fontColor=default;endArrow=classic;strokeColor=#006EAF;fillColor=#1ba1e2;" edge="1" parent="AG2We_rC4ZABQSoUwN3x-0" source="qNDvFymuShC94W42NVlu-2" target="qNDvFymuShC94W42NVlu-9">
403
+ <mxGeometry relative="1" as="geometry"/>
404
+ </mxCell>
405
+ </root>
406
+ </mxGraphModel>
407
+ </diagram>
408
+ </mxfile>