<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0">
  <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
    <mxGraphModel grid="0" page="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" pageScale="1" pageWidth="4681" pageHeight="3300" background="none" math="0" shadow="0">
      <root>
        <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
        <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
        <mxCell id="aj22pa4lzcMYMm-km_af-1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Map" vertex="1">
          <mxGeometry height="230" width="240" x="1047" y="-31" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-3" parent="aj22pa4lzcMYMm-km_af-1" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="240" y="26" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-4" parent="aj22pa4lzcMYMm-km_af-1" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ generate()&lt;/div&gt;&lt;div&gt;+ update()&lt;/div&gt;&lt;div&gt;+ calculateShortestRoute(s1: Intersection, s2: Intersection): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getLanes():&amp;nbsp;List&amp;lt;RoadSection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getIntersections(): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+ getTwoRandomBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;getTwoRandomNPCHomeStations(): List&amp;lt;NPCHomeStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;makeRoad(is1: Intersection, is2: Intersection, rs: RoadSection)&lt;/div&gt;" vertex="1">
          <mxGeometry height="196" width="240" y="34" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-6" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-14" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="aj22pa4lzcMYMm-km_af-4" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="1412" y="100" />
            </Array>
            <mxPoint x="1410" y="300" as="sourcePoint" />
            <mxPoint x="910" y="230" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-7" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadState&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ CLEAR&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_LITTLE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_MEDIUM&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_DENSE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ICY&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ SALTY&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ GRAVELLED_FRESH&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ GRAVELLED_AGED&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="167.5" width="190" x="1580" y="357.5" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-14" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;RoadSection&lt;/b&gt;&lt;/p&gt;&lt;br&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getState(): RoadState&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ accept(from: RoadSection&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ updateSelf()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getRandomAdjecentRoadSection(): RoadSection&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getRandomParallelRoadSection(): RoadSection&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getParallelSections(): List&amp;lt;RoadSection&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ clear()&lt;/span&gt;&lt;/p&gt;&amp;nbsp;+ transferSnowTo(rs: RoadSection)&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ transferGravelTo(rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ tryBreakIce()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ setSalty()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getVehicles(): List&amp;lt;Vehicle&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+&lt;/span&gt;&amp;nbsp;getPossibleIntersections(): List&amp;lt;&lt;b&gt;Intersection&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setGravel()&lt;/p&gt;" vertex="1">
          <mxGeometry height="251.5" width="300" x="1190" y="492.5" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-15" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Intersection&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPossibleRoads(): List&amp;lt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;RoadSection&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;+ addRoad(rs: RoadSection)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;+ getPossibleRoads():&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 12px;&quot;&gt;List&amp;lt;RoadSection&amp;gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="107" width="250" x="1005" y="243" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-17" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-14" style="endArrow=none;endFill=0;endSize=24;html=1;rounded=0;exitX=0.619;exitY=0.003;exitDx=0;exitDy=0;elbow=vertical;entryX=1;entryY=0.418;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1374.9299999999998" y="492.49749999999995" as="sourcePoint" />
            <mxPoint x="1380.08" y="326.145" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-12" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="246" width="190" x="848" y="-118" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-13" parent="3nisI_jpJruiQOvJeSp7-12" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- isRunning: boolean&lt;/div&gt;&lt;div&gt;- currentPlayer: Player&lt;/div&gt;" vertex="1">
          <mxGeometry height="44" width="190" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-14" parent="3nisI_jpJruiQOvJeSp7-12" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="190" y="70" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-15" parent="3nisI_jpJruiQOvJeSp7-12" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getInstance(): App&lt;/div&gt;&lt;div&gt;+ getLeaderBoard(): List&amp;lt;Player&amp;gt;&lt;/div&gt;&lt;div&gt;+ getMap(): Map&lt;/div&gt;&lt;div&gt;+ getPlayers(): List&amp;lt;Player&amp;gt;&lt;/div&gt;&lt;div&gt;+ getVehicles(): List&amp;lt;Vehicle&amp;gt;&lt;/div&gt;&lt;div&gt;+ run()&lt;/div&gt;&lt;div&gt;+ endTurn()&lt;/div&gt;&lt;div&gt;+ reset()&lt;/div&gt;&lt;div&gt;+ getCurrentPlayer(): Player&lt;/div&gt;&lt;div&gt;+ updateWorld()&lt;/div&gt;&lt;div&gt;+ addPlayers()&lt;/div&gt;" vertex="1">
          <mxGeometry height="168" width="190" y="78" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-15" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.336;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-4" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="1330" y="361" as="sourcePoint" />
            <mxPoint x="1130" y="220" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-21" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-14" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=-0.002;entryY=0.484;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;elbow=vertical;entryPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-7" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1120" y="160" as="sourcePoint" />
            <mxPoint x="1280" y="160" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-24" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="TurnController" vertex="1">
          <mxGeometry height="153" width="187" x="480" y="-90" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-25" parent="3nisI_jpJruiQOvJeSp7-24" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- tickables: List&amp;lt;ITickable&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="34" width="187" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-26" parent="3nisI_jpJruiQOvJeSp7-24" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="187" y="60" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-27" parent="3nisI_jpJruiQOvJeSp7-24" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ tick()&lt;/div&gt;&lt;div&gt;+ addTickable(t: ITickable)&lt;/div&gt;&lt;div&gt;+ getCurrentTurn(): int&lt;/div&gt;&lt;div&gt;+ getMaxTurns(): int&lt;/div&gt;&lt;div&gt;+ TurnController(maxTurns: int)&lt;/div&gt;" vertex="1">
          <mxGeometry height="85" width="187" y="68" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-23" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-24" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.262;entryY=1.003;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-15" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1137.5" y="470" as="sourcePoint" />
            <mxPoint x="1230" y="390" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-28" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&lt;b&gt;ITickable&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ update()&lt;/p&gt;" vertex="1">
          <mxGeometry height="111" width="190" x="225" y="-31" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-24" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;BusStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="130" x="1005" y="410" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-25" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;NPCHomeStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="160" x="1160" y="410" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-26" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Bridge&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;nbsp;accept(from: RoadSection&lt;/span&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ updateSelf()&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="290" x="1660" y="655" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-30" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Tunnel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ accept(from: RoadSection&lt;b style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ updateSelf()&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="290" x="1660" y="570" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-31" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-25" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.779;entryY=1.008;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-15" value="Extends">
          <mxGeometry relative="1" width="160" x="-0.0004" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="1220" y="565" as="sourcePoint" />
            <mxPoint x="1265" y="410" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-32" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-26" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1602" y="615" as="sourcePoint" />
            <mxPoint x="1492" y="673" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-33" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-30" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1720" y="540" as="sourcePoint" />
            <mxPoint x="1492" y="623" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-34" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-1" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.336;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" target="3nisI_jpJruiQOvJeSp7-28" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="1130" y="-135" />
              <mxPoint x="320" y="-131" />
            </Array>
            <mxPoint x="1090" y="130" as="sourcePoint" />
            <mxPoint x="1250" y="130" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-30" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="Player" vertex="1">
          <mxGeometry height="143" width="160" x="830" y="295" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-32" parent="3nisI_jpJruiQOvJeSp7-30" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;shadow=0;swimlaneLine=1;" value="" vertex="1">
          <mxGeometry height="8" width="160" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-33" parent="3nisI_jpJruiQOvJeSp7-30" style="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;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="+ getVehicle(): Vehicle&lt;br&gt;+ getPoints(): int&lt;br&gt;&lt;div&gt;+ gainPoints(amm: int)&lt;/div&gt;&lt;div&gt;+ spendPoints(toSpend: int)&lt;/div&gt;&lt;div&gt;+ getName(): string&lt;/div&gt;&lt;div&gt;+ Player(name: String)&lt;/div&gt;&lt;div&gt;+ setVehicle(v: Vehicle)&lt;/div&gt;" vertex="1">
          <mxGeometry height="109" width="160" y="34" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-40" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;br&gt;&lt;b&gt;SnowPlow&lt;/b&gt;&lt;b&gt;Head&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="110" width="230" x="855" y="990" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-42" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgrade&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;- pointMultiplier: float&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPointMultiplier(): float&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;" vertex="1">
          <mxGeometry height="126" width="190" x="565" y="640" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-43" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;S&lt;/b&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;nowPlowUpgradeNormal&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;getPointMultiplier(): float&lt;/p&gt;" vertex="1">
          <mxGeometry height="84" width="160" x="495" y="840" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-44" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgradePremium&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;getPointMultiplier(): float&lt;/p&gt;" vertex="1">
          <mxGeometry height="84" width="170" x="695" y="840" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-46" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-43" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.265;entryY=1.004;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-42" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1505" y="1395" as="sourcePoint" />
            <mxPoint x="1608" y="1250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-47" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-44" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.08;exitY=0.007;exitDx=0;exitDy=0;exitPerimeter=0;" target="aj22pa4lzcMYMm-km_af-42" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1695" y="1370" as="sourcePoint" />
            <mxPoint x="1718" y="1260" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-36" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-43" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="iDoDv8PSYI2z42wvYYhT-0" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="287.09000000000003" y="500" as="sourcePoint" />
            <mxPoint x="430" y="635" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-56" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Biokerosene&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="1205" y="810" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-37" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="WjcGNuSxYv_PPC55VFbR-16" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.015;entryY=0.927;entryDx=0;entryDy=0;exitX=1.002;exitY=0.031;exitDx=0;exitDy=0;entryPerimeter=0;exitPerimeter=0;" target="iDoDv8PSYI2z42wvYYhT-0" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="450" y="370" as="sourcePoint" />
            <mxPoint x="340" y="445" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-58" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Salt&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="1025" y="905" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-66" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SplittingHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="770" y="1401" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-39" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Schedule" vertex="1">
          <mxGeometry height="160" width="240" x="-21" y="771" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-40" parent="3nisI_jpJruiQOvJeSp7-39" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- stations: List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;- timetable: List&amp;lt;int&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="44" width="240" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-41" parent="3nisI_jpJruiQOvJeSp7-39" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="240" y="70" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-42" parent="3nisI_jpJruiQOvJeSp7-39" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getNextStation(bs: BusStation): BusStation&lt;/div&gt;&lt;div&gt;+ getTurnsBetween(bs1: BusStation, bs2: BusStation): int&lt;/div&gt;&lt;div&gt;+ isTerminus(bs: BusStation): bool&lt;/div&gt;" vertex="1">
          <mxGeometry height="82" width="240" y="78" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-72" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;IcebreakerHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="897" y="1270" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-73" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;DragonHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="1140" y="1275" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-43" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlow" vertex="1">
          <mxGeometry height="346" width="260" x="295" y="1031" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-44" parent="3nisI_jpJruiQOvJeSp7-43" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;- keroseneCount: int&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- saltCount: int&lt;/div&gt;&lt;div&gt;- gravelCount: int&lt;/div&gt;" vertex="1">
          <mxGeometry height="56" width="260" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-45" parent="3nisI_jpJruiQOvJeSp7-43" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="260" y="82" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-46" parent="3nisI_jpJruiQOvJeSp7-43" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ update(m: Map rs: RoadSection)&lt;/div&gt;&lt;div&gt;+ getPointMultiplier(): float&lt;/div&gt;&lt;div&gt;+ getHead(): SnowPlowHead&lt;/div&gt;&lt;div&gt;+ setHead(head: SnowPlowHead)&lt;/div&gt;&lt;div&gt;+ getFuelCount(): int&lt;/div&gt;&lt;div&gt;+ getSaltCount(): int&lt;/div&gt;&lt;div&gt;+ getGravelCount(): int&lt;/div&gt;&lt;div&gt;+ consumeGravel(int w)&lt;/div&gt;&lt;div&gt;+ consumeSalt(int w)&lt;/div&gt;&lt;div&gt;+ consumeFuel(int w)&lt;/div&gt;&lt;div&gt;+ addGravel(int w)&lt;/div&gt;&lt;div&gt;+ addFuel(int w)&lt;/div&gt;&lt;div&gt;+ addSalt(int w)&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;&lt;div&gt;+ SnowPlow(owner: Player, starterHead: SnowPlowHead)&lt;/div&gt;&lt;div&gt;+ setBody(newUpgrade: SnowPlowUpgrade)&lt;/div&gt;" vertex="1">
          <mxGeometry height="256" width="260" y="90" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-51" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Car" vertex="1">
          <mxGeometry height="144" width="257" x="-38" y="311" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-53" parent="3nisI_jpJruiQOvJeSp7-51" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="257" y="26" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-54" parent="3nisI_jpJruiQOvJeSp7-51" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ Car(owner: Player, start: NPCHomeStation, destination: NPCHomeStation)&lt;/div&gt;&lt;div&gt;+ setFixRoute(route: List&amp;lt;Intersection&amp;gt;)&lt;/div&gt;&lt;div&gt;+ hasReachedDestination(): bool&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;&lt;div&gt;+ setRoute()&lt;/div&gt;&lt;div&gt;+ changeDestination()&lt;/div&gt;" vertex="1">
          <mxGeometry height="110" width="257" y="34" as="geometry" />
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-55" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-54" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.007;entryY=0.296;entryDx=0;entryDy=0;entryPerimeter=0;" target="iDoDv8PSYI2z42wvYYhT-0" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="680" y="420" as="sourcePoint" />
            <mxPoint x="340" y="355" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-75" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SweeperHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="1265" y="1140" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-76" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SalterHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="1265" y="985" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-77" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-66" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1135" y="1355" as="sourcePoint" />
            <mxPoint x="1173" y="1255" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-78" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-72" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.428;exitY=0.002;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1295" y="1465" as="sourcePoint" />
            <mxPoint x="1265" y="1725" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-79" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-73" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1345" y="1465" as="sourcePoint" />
            <mxPoint x="1428" y="1175" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-80" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-75" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1498" y="1485" as="sourcePoint" />
            <mxPoint x="1375" y="1195" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-81" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-76" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1835" y="1445" as="sourcePoint" />
            <mxPoint x="1495" y="1155" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-84" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowS&lt;/b&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0); font-family: monospace; font-size: 0px; text-wrap-mode: nowrap; background-color: transparent; text-align: left;&quot;&gt;%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20parent%3D%221%22%20style%3D%22verticalAlign%3Dtop%3Balign%3Dleft%3Boverflow%3Dfill%3Bhtml%3D1%3BwhiteSpace%3Dwrap%3B%22%20value%3D%22%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-top%3A4px%3Btext-align%3Acenter%3B%26quot%3B%26gt%3B%26lt%3Bi%26gt%3B%26amp%3Blt%3B%26amp%3Blt%3BInterface%26amp%3Bgt%3B%26amp%3Bgt%3B%26lt%3B%2Fi%26gt%3B%26lt%3Bbr%26gt%3B%26lt%3Bb%26gt%3BShop%26lt%3B%2Fb%26gt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bhr%20size%3D%26quot%3B1%26quot%3B%20style%3D%26quot%3Bborder-style%3Asolid%3B%26quot%3B%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20openFor(p%3A%20Player)%26lt%3Bbr%26gt%3B%2B%20listItems()%3A%20List%26amp%3Blt%3BItem%26amp%3Bgt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20closeShop()%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20canPlayerBuyItem(p%3A%20Player%2C%20i%3A%20Item)%3A%20bool%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20buyItemForPlayer(p%3A%20Player%2C%20i%3A%20Item)%26lt%3B%2Fp%26gt%3B%22%20vertex%3D%221%22%3E%3CmxGeometry%20height%3D%22140%22%20width%3D%22250%22%20x%3D%221120%22%20y%3D%22740%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E&lt;/span&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;hop&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getInstance(): SnowPlowShop&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ listItems(): List&amp;lt;Item&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canPlayerBuyItem(p: Player, i: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ buyItemForPlayer(p: Player, i: Item)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ openFor(p: Player)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ closeShop()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ openShop()&lt;/p&gt;" vertex="1">
          <mxGeometry height="135" width="240" x="785" y="555" as="geometry" />
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-97" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-58" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.737;entryY=1.001;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-94" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1069" y="970" as="sourcePoint" />
            <mxPoint x="1455" y="1290" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-98" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-42" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-94" value="Extends">
          <mxGeometry relative="1" width="160" x="0.0046" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="1825" y="1402" as="sourcePoint" />
            <mxPoint x="1265" y="1290" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-99" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-40" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.235;entryY=0.999;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-94" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1415" y="910" as="sourcePoint" />
            <mxPoint x="1378" y="1313" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-101" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-94" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;entryX=0.78;entryY=0.974;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="aj22pa4lzcMYMm-km_af-84" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1865" y="1060" as="sourcePoint" />
            <mxPoint x="1225" y="1153" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-60" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="iDoDv8PSYI2z42wvYYhT-0" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" target="3nisI_jpJruiQOvJeSp7-28" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="320" y="260" />
            </Array>
            <mxPoint x="387.5" y="310" as="sourcePoint" />
            <mxPoint x="810" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="3nisI_jpJruiQOvJeSp7-61" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-30" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0.318;entryY=1.025;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="3nisI_jpJruiQOvJeSp7-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="920" y="290" as="sourcePoint" />
            <mxPoint x="810" y="70" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-96" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-56" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.006;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1945" y="1220" as="sourcePoint" />
            <mxPoint x="1115" y="817" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-103" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-42" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="3nisI_jpJruiQOvJeSp7-43" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="475" y="730" as="sourcePoint" />
            <mxPoint x="1115" y="1320" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-5" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="1275" y="67.5" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-6" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="35" width="60" x="1113" y="197.5" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-7" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="1120" y="218" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-8" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="1400" y="460" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-13" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="625" y="20" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-14" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="780" y="20" as="geometry" />
        </mxCell>
        <mxCell id="GSa_nUx0G8kXlMCiPTIc-22" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-39" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.468;entryY=1.013;entryDx=0;entryDy=0;entryPerimeter=0;" target="WjcGNuSxYv_PPC55VFbR-16" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="754" y="791" as="sourcePoint" />
            <mxPoint x="914" y="791" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="GW0DRD5qAX-amtyjSnym-4" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-27" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="3nisI_jpJruiQOvJeSp7-28" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="410" y="-260" as="sourcePoint" />
            <mxPoint x="570" y="-260" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="s1wH4qFg-rJuOPhDWQS4-0" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="iDoDv8PSYI2z42wvYYhT-0" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=-0.002;entryY=0.686;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" target="3nisI_jpJruiQOvJeSp7-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="483" y="75" />
            </Array>
            <mxPoint x="482.5" y="310" as="sourcePoint" />
            <mxPoint x="720" y="234.52" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="qvaZ59UvkB9lr9BSSHE4-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="520" y="320" as="geometry" />
        </mxCell>
        <mxCell id="qvaZ59UvkB9lr9BSSHE4-2" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="qvaZ59UvkB9lr9BSSHE4-0" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="3nisI_jpJruiQOvJeSp7-33" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="528.8600000000001" y="343.1200000000001" as="sourcePoint" />
            <mxPoint x="829" y="190" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="s1wH4qFg-rJuOPhDWQS4-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="PlayerFactory" vertex="1">
          <mxGeometry height="115" width="180" x="610" y="170" as="geometry" />
        </mxCell>
        <mxCell id="s1wH4qFg-rJuOPhDWQS4-4" parent="s1wH4qFg-rJuOPhDWQS4-2" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="180" y="26" as="geometry" />
        </mxCell>
        <mxCell id="s1wH4qFg-rJuOPhDWQS4-5" parent="s1wH4qFg-rJuOPhDWQS4-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ buildBusPlayer(name: string): Player&lt;/div&gt;&lt;div&gt;+ buildSnowPlowPlayer(name: string): Player&lt;/div&gt;&lt;div&gt;+ getInstance(): PlayerFactory&lt;/div&gt;" vertex="1">
          <mxGeometry height="81" width="180" y="34" as="geometry" />
        </mxCell>
        <mxCell id="qvaZ59UvkB9lr9BSSHE4-15" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="s1wH4qFg-rJuOPhDWQS4-2" style="endArrow=none;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;shape=wire;dashed=1;elbow=vertical;edgeStyle=orthogonalEdgeStyle;" target="3nisI_jpJruiQOvJeSp7-30" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="630" y="220" as="sourcePoint" />
            <mxPoint x="790" y="220" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="NVBm6MydH2JlQNIdcq2F-1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="1360" y="460" as="geometry" />
        </mxCell>
        <mxCell id="NVBm6MydH2JlQNIdcq2F-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="2" vertex="1">
          <mxGeometry height="30" width="60" x="1239" y="250" as="geometry" />
        </mxCell>
        <mxCell id="qZBY7lwTkX8kMqlKfGDT-1" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-1" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="3nisI_jpJruiQOvJeSp7-13" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1080" y="200" as="sourcePoint" />
            <mxPoint x="1240" y="200" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="qZBY7lwTkX8kMqlKfGDT-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="1027" y="-102" as="geometry" />
        </mxCell>
        <mxCell id="qZBY7lwTkX8kMqlKfGDT-3" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="1066" y="-57" as="geometry" />
        </mxCell>
        <mxCell id="-6UikP_XSE_JWh_JiZwc-1" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-33" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.492;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;" target="aj22pa4lzcMYMm-km_af-84" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="740" y="310" as="sourcePoint" />
            <mxPoint x="900" y="310" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-6UikP_XSE_JWh_JiZwc-2" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="aj22pa4lzcMYMm-km_af-40" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;exitX=0;exitY=0.8;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" target="3nisI_jpJruiQOvJeSp7-44" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1155" y="1188" as="sourcePoint" />
            <mxPoint x="833" y="921" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="aj22pa4lzcMYMm-km_af-94" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;&lt;/i&gt;Abstract&lt;i&gt;&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ onBuy(s: SnowPlow)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Item(n: String, c: int)&lt;/p&gt;" vertex="1">
          <mxGeometry height="108" width="190" x="925" y="744" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-0" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="3nisI_jpJruiQOvJeSp7-27" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.996;exitY=0.86;exitDx=0;exitDy=0;exitPerimeter=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="3nisI_jpJruiQOvJeSp7-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="732.1299999999998" y="-168.99999999999955" as="sourcePoint" />
            <mxPoint x="840.0023404255318" y="4.547473508864641e-13" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="780" y="320" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="900" y="110" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-3" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="900" y="265" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-4" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="790" y="50" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-5" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="430" y="280" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-6" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="958" y="690" as="geometry" />
        </mxCell>
        <mxCell id="Cpd0CKWT87LBkgiCzVzq-7" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="930" y="719" as="geometry" />
        </mxCell>
        <mxCell id="cINfv5NPkVYPcxPzUxrQ-2" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="iDoDv8PSYI2z42wvYYhT-0" style="endArrow=none;endFill=0;endSize=24;html=1;rounded=0;exitX=0.999;exitY=0.731;exitDx=0;exitDy=0;exitPerimeter=0;elbow=vertical;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-14" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="880" y="455" />
              <mxPoint x="880" y="520" />
            </Array>
            <mxPoint x="530" y="445" as="sourcePoint" />
            <mxPoint x="650" y="482" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="iDoDv8PSYI2z42wvYYhT-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Vehicle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- collisionMask: int&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ isInIntersection(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCurrentRoad(): RoadSection&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCurrentIntersection(): Intersection&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canCollide(v: Vehicle): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ isStunned(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getStunDuration(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ tryStun()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ update()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ stun()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getMask(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Vehicle(owner: Player)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPlayer(): Player&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setCurrentRoad(n: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setCurrentIntersection(i: Intersection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ playerMoveLogic()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canUseShop(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canBuyItem(item: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ buyItem(item: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canActThisTurn(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ finishTurn()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="368" width="221" x="320" y="291" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="530" y="425" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..1" vertex="1">
          <mxGeometry height="30" width="60" x="1130" y="490" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-3" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="470" y="990" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-4" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="510" y="675" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-5" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="540" y="1050" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-6" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="800" y="1050" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-9" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="84" y="719" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-10" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="770" y="200" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-11" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="820" y="265" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-13" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Bus" vertex="1">
          <mxGeometry height="156" width="160" x="24" y="570" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-14" parent="WjcGNuSxYv_PPC55VFbR-13" style="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;whiteSpace=wrap;html=1;" value="- satisfaction : float" vertex="1">
          <mxGeometry height="26" width="160" y="26" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-15" parent="WjcGNuSxYv_PPC55VFbR-13" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="160" y="52" as="geometry" />
        </mxCell>
        <mxCell id="WjcGNuSxYv_PPC55VFbR-16" parent="WjcGNuSxYv_PPC55VFbR-13" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getSatisfaction(): float&lt;/div&gt;&lt;div&gt;+ getSchedule(): Schedule&lt;/div&gt;&lt;div&gt;+ getCurrentStation(): BusStation&lt;/div&gt;&lt;div&gt;+changeSatisfaction()&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;" vertex="1">
          <mxGeometry height="96" width="160" y="60" as="geometry" />
        </mxCell>
        <mxCell id="XsfqHU0Yi2U2Vf89SHmr-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="84" y="746" as="geometry" />
        </mxCell>
        <mxCell id="XsfqHU0Yi2U2Vf89SHmr-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="685" y="140" as="geometry" />
        </mxCell>
        <mxCell id="XsfqHU0Yi2U2Vf89SHmr-3" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="805" y="90" as="geometry" />
        </mxCell>
        <mxCell id="XsfqHU0Yi2U2Vf89SHmr-1" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="XsfqHU0Yi2U2Vf89SHmr-2" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" target="XsfqHU0Yi2U2Vf89SHmr-3" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="700" y="90" />
            </Array>
            <mxPoint x="910" y="180" as="sourcePoint" />
            <mxPoint x="1070" y="180" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="QY6HlWHwsrN3Y7evDn5p-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;GravelHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="623" y="1264" as="geometry" />
        </mxCell>
        <mxCell id="QY6HlWHwsrN3Y7evDn5p-1" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="QY6HlWHwsrN3Y7evDn5p-0" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="aj22pa4lzcMYMm-km_af-40" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="625" y="1317" as="sourcePoint" />
            <mxPoint x="795" y="1147" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="QY6HlWHwsrN3Y7evDn5p-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Gravel&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="1423" y="755" as="geometry" />
        </mxCell>
        <mxCell id="QY6HlWHwsrN3Y7evDn5p-3" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="QY6HlWHwsrN3Y7evDn5p-2" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" target="aj22pa4lzcMYMm-km_af-94" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1334" y="733" as="sourcePoint" />
            <mxPoint x="1243" y="733" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-4" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Map" vertex="1">
          <mxGeometry height="30" width="240" x="3198" y="253" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-5" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-7" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-4" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3598" y="473" as="sourcePoint" />
            <mxPoint x="3478.4799999999996" y="333.4480000000001" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-6" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadState&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="32.5" width="190" x="3610" y="760.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-7" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;RoadSection&lt;/b&gt;&lt;/p&gt;&lt;br&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="27.5" width="300" x="3348" y="493" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-8" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Intersection&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;&lt;br&gt;&lt;/span&gt;" vertex="1">
          <mxGeometry height="25" width="250" x="3193" y="368" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-9" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-7" style="endArrow=none;endFill=0;endSize=24;html=1;rounded=0;exitX=0.619;exitY=0.003;exitDx=0;exitDy=0;elbow=vertical;entryX=1;entryY=0.418;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-8" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3562.93" y="665.4975" as="sourcePoint" />
            <mxPoint x="3568.08" y="499.145" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-10" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="32" width="190" x="3043" y="157" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-11" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-8" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-4" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="3518" y="534" as="sourcePoint" />
            <mxPoint x="3303" y="293" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-12" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-7" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;elbow=vertical;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-6" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3308" y="333" as="sourcePoint" />
            <mxPoint x="3468" y="333" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-13" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="TurnController" vertex="1">
          <mxGeometry height="30" width="160" x="2663" y="147.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-14" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-16" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.262;entryY=1.003;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-8" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3325.5" y="643" as="sourcePoint" />
            <mxPoint x="3418" y="563" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-15" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&lt;b&gt;ITickable&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="41" width="190" x="2413" y="142" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-16" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;BusStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="20" width="130" x="3193" y="449" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-17" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;NPCHomeStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="160" x="3335.5" y="449" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-18" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Bridge&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="25" width="290" x="3278" y="692.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-19" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Tunnel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="290" x="3448" y="820" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-17" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.731;entryY=1.063;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-8" value="Extends">
          <mxGeometry relative="1" width="160" x="-0.0004" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="3408" y="738" as="sourcePoint" />
            <mxPoint x="3453" y="583" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-21" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-18" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-7" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3790" y="788" as="sourcePoint" />
            <mxPoint x="3680" y="846" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-22" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-19" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.911;entryY=1.036;entryDx=0;entryDy=0;entryPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-7" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3908" y="713" as="sourcePoint" />
            <mxPoint x="3680" y="796" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-23" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-4" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.336;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="3279" y="113" />
              <mxPoint x="2508" y="113" />
            </Array>
            <mxPoint x="3278" y="303" as="sourcePoint" />
            <mxPoint x="3438" y="303" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-24" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="Player" vertex="1">
          <mxGeometry height="25" width="160" x="3018" y="273" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-25" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;br&gt;&lt;b&gt;SnowPlow&lt;/b&gt;&lt;b&gt;Head&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="40" width="230" x="2958" y="793" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-26" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgrade&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="40" width="190" x="2720.5" y="635.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-27" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;S&lt;/b&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;nowPlowUpgradeNormal&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="30" width="160" x="2650.5" y="733" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-28" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgradePremium&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="30" width="170" x="2848" y="733" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-29" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-27" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.265;entryY=1.004;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-26" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3660.5" y="1305.5" as="sourcePoint" />
            <mxPoint x="3763.5" y="1160.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-30" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-28" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.08;exitY=0.007;exitDx=0;exitDy=0;exitPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-26" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3850.5" y="1280.5" as="sourcePoint" />
            <mxPoint x="3873.5" y="1170.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-31" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-39" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-87" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="2585" y="583" />
              <mxPoint x="2688" y="583" />
            </Array>
            <mxPoint x="2475.09" y="673" as="sourcePoint" />
            <mxPoint x="2618" y="808" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-32" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Biokerosene&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="160" x="3313" y="620.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-33" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-97" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-87" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2378.3199999999997" y="665.48" as="sourcePoint" />
            <mxPoint x="2528" y="618" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-34" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Salt&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="30" width="160" x="3133" y="743" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-35" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SplittingHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="225" x="2783" y="920.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-36" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Schedule" vertex="1">
          <mxGeometry height="34" width="240" x="2393" y="489" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-37" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;IcebreakerHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="225" x="2945.5" y="995" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-38" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;DragonHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="225" x="3078" y="963" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-39" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlow" vertex="1">
          <mxGeometry height="34" width="230" x="2463" y="796" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-40" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Car" vertex="1">
          <mxGeometry height="34" width="230" x="2272" y="269" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-41" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-40" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.007;entryY=0.296;entryDx=0;entryDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-87" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="2413" y="550" as="sourcePoint" />
            <mxPoint x="2528" y="528" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-42" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SweeperHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="225" x="3373" y="953" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-43" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SalterHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="25" width="225" x="3420.5" y="895.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-44" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-35" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3290.5" y="1265.5" as="sourcePoint" />
            <mxPoint x="3328.5" y="1165.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-45" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-37" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.428;exitY=0.002;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3450.5" y="1375.5" as="sourcePoint" />
            <mxPoint x="3420.5" y="1635.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-46" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-38" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3500.5" y="1375.5" as="sourcePoint" />
            <mxPoint x="3583.5" y="1085.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-47" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-42" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3653.5" y="1395.5" as="sourcePoint" />
            <mxPoint x="3530.5" y="1105.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-48" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-43" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3990.5" y="1355.5" as="sourcePoint" />
            <mxPoint x="3650.5" y="1065.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-49" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowS&lt;/b&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0); font-family: monospace; font-size: 0px; text-wrap-mode: nowrap; background-color: transparent; text-align: left;&quot;&gt;%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20parent%3D%221%22%20style%3D%22verticalAlign%3Dtop%3Balign%3Dleft%3Boverflow%3Dfill%3Bhtml%3D1%3BwhiteSpace%3Dwrap%3B%22%20value%3D%22%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-top%3A4px%3Btext-align%3Acenter%3B%26quot%3B%26gt%3B%26lt%3Bi%26gt%3B%26amp%3Blt%3B%26amp%3Blt%3BInterface%26amp%3Bgt%3B%26amp%3Bgt%3B%26lt%3B%2Fi%26gt%3B%26lt%3Bbr%26gt%3B%26lt%3Bb%26gt%3BShop%26lt%3B%2Fb%26gt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bhr%20size%3D%26quot%3B1%26quot%3B%20style%3D%26quot%3Bborder-style%3Asolid%3B%26quot%3B%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20openFor(p%3A%20Player)%26lt%3Bbr%26gt%3B%2B%20listItems()%3A%20List%26amp%3Blt%3BItem%26amp%3Bgt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20closeShop()%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20canPlayerBuyItem(p%3A%20Player%2C%20i%3A%20Item)%3A%20bool%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20buyItemForPlayer(p%3A%20Player%2C%20i%3A%20Item)%26lt%3B%2Fp%26gt%3B%22%20vertex%3D%221%22%3E%3CmxGeometry%20height%3D%22140%22%20width%3D%22250%22%20x%3D%221120%22%20y%3D%22740%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E&lt;/span&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;hop&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="30" width="240" x="2938" y="473" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-50" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-34" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.737;entryY=1.001;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-78" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3224.5" y="880.5" as="sourcePoint" />
            <mxPoint x="3610.5" y="1200.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-51" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-26" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-78" value="Extends">
          <mxGeometry relative="1" width="160" x="0.0046" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="3980.5" y="1312.5" as="sourcePoint" />
            <mxPoint x="3420.5" y="1200.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-52" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-25" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.235;entryY=0.999;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-78" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3570.5" y="820.5" as="sourcePoint" />
            <mxPoint x="3533.5" y="1223.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-53" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-78" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-49" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4053" y="1233" as="sourcePoint" />
            <mxPoint x="3413" y="1326" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-54" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-87" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-15" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2575.5" y="483" as="sourcePoint" />
            <mxPoint x="2998" y="423" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-55" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-24" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-10" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3108" y="463" as="sourcePoint" />
            <mxPoint x="3098" y="203" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-56" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-32" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-78" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4100.5" y="1130.5" as="sourcePoint" />
            <mxPoint x="3270.5" y="727.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-57" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-26" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-39" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2630.5" y="640.5" as="sourcePoint" />
            <mxPoint x="3270.5" y="1230.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-58" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3443" y="239" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-59" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3313" y="283" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-60" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="3303" y="338" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-61" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="3563" y="463" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-62" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2813" y="127" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-63" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2983" y="133" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-64" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-36" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-97" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2948" y="863" as="sourcePoint" />
            <mxPoint x="2292.88" y="744.04" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-65" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-13" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-15" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2668" y="196.99999999999977" as="sourcePoint" />
            <mxPoint x="2758" y="-87" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-66" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-87" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-10" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="2736" y="223" />
              <mxPoint x="3043" y="223" />
            </Array>
            <mxPoint x="2670.5" y="483" as="sourcePoint" />
            <mxPoint x="3037.62" y="203.8320000000001" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-67" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2738" y="318" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-68" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-87" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;elbow=vertical;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-24" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="2783" y="393" />
              <mxPoint x="3098" y="393" />
            </Array>
            <mxPoint x="2716.86" y="516.1200000000001" as="sourcePoint" />
            <mxPoint x="3018" y="523" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-69" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="PlayerFactory" vertex="1">
          <mxGeometry height="30" width="180" x="2798" y="343" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-70" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-69" style="endArrow=none;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;shape=wire;dashed=1;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-24" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="3058" y="358" />
            </Array>
            <mxPoint x="2818" y="393" as="sourcePoint" />
            <mxPoint x="2978" y="393" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-71" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="3488" y="463" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-72" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="2" vertex="1">
          <mxGeometry height="30" width="60" x="3428" y="353" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-73" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-4" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.083;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-10" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3268" y="373" as="sourcePoint" />
            <mxPoint x="3226.4800000000005" y="152.87199999999984" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-74" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3173" y="183" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-75" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3205.5" y="223" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-76" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-24" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-49" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="3138" y="413" />
              <mxPoint x="3058" y="413" />
            </Array>
            <mxPoint x="3096.7200000000003" y="577.2399999999998" as="sourcePoint" />
            <mxPoint x="3088" y="483" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-77" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-25" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-39" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3310.5" y="1098.5" as="sourcePoint" />
            <mxPoint x="2700.5" y="988.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-78" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;&lt;/i&gt;Abstract&lt;i&gt;&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="40" width="190" x="3030.5" y="610.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-79" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-13" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;elbow=vertical;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-10" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2827.3599999999997" y="222.91999999999985" as="sourcePoint" />
            <mxPoint x="3038" y="176.71774193548367" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-80" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3088" y="303" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-81" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3088" y="183" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-82" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="3088" y="243" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-83" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2993" y="183" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-84" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="2685.5" y="243" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-85" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="3060" y="583" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-86" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-87" style="endArrow=none;endFill=0;endSize=24;html=1;rounded=0;exitX=0.696;exitY=1.055;exitDx=0;exitDy=0;exitPerimeter=0;elbow=vertical;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-7" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="2725" y="570" />
              <mxPoint x="3498" y="570" />
            </Array>
            <mxPoint x="2718" y="618" as="sourcePoint" />
            <mxPoint x="2838" y="655" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-87" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Vehicle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;br&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="40" width="190" x="2593" y="273" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-88" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="2713" y="318" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-89" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..1" vertex="1">
          <mxGeometry height="30" width="60" x="3488" y="520.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-90" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2593" y="763" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-91" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2678" y="620.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-92" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2693" y="783" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-93" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2910.5" y="783" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-94" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2463" y="403" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-95" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2958" y="353" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-96" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="3013" y="293" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-97" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Bus" vertex="1">
          <mxGeometry height="30" width="160" x="2433" y="373" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-98" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2463" y="459" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-99" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="2873" y="313" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-100" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3048" y="188" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-101" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-99" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-10" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="2888" y="243" />
              <mxPoint x="3091" y="243" />
            </Array>
            <mxPoint x="3098" y="353" as="sourcePoint" />
            <mxPoint x="3053" y="193" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-102" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3048" y="503" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-103" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Gravel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="160" x="3328" y="583" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-104" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-103" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-78" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3335" y="571" as="sourcePoint" />
            <mxPoint x="3243" y="571" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-105" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;GravelHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;" vertex="1">
          <mxGeometry height="20" width="225" x="2633" y="890" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-106" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-105" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-25" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2829" y="930" as="sourcePoint" />
            <mxPoint x="2949" y="842" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-107" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Map" vertex="1">
          <mxGeometry height="230" width="240" x="4544" y="788" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-108" parent="rPUROhD_bjSVTw1W4ouW-107" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="240" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-109" parent="rPUROhD_bjSVTw1W4ouW-107" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ generate()&lt;/div&gt;&lt;div&gt;+ update()&lt;/div&gt;&lt;div&gt;+ calculateShortestRoute(s1: Intersection, s2: Intersection): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getLanes():&amp;nbsp;List&amp;lt;RoadSection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getIntersections(): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+ getTwoRandomBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;getTwoRandomNPCHomeStations(): List&amp;lt;NPCHomeStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;makeRoad(is1: Intersection, is2: Intersection, rs: RoadSection)&lt;/div&gt;" vertex="1">
          <mxGeometry height="196" width="240" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-110" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-112" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-109" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="4909" y="919" />
            </Array>
            <mxPoint x="4907" y="1119" as="sourcePoint" />
            <mxPoint x="4407" y="1049" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-111" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadState&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ CLEAR&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_LITTLE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_MEDIUM&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWY_DENSE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ICY&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ SALTY&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ GRAVELLED_FRESH&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ GRAVELLED_AGED&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="167.5" width="190" x="5023" y="1007" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-112" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;RoadSection&lt;/b&gt;&lt;/p&gt;&lt;br&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getState(): RoadState&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ accept(from: RoadSection&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ updateSelf()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getRandomAdjecentRoadSection(): RoadSection&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getRandomParallelRoadSection(): RoadSection&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getParallelSections(): List&amp;lt;RoadSection&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ clear()&lt;/span&gt;&lt;/p&gt;&amp;nbsp;+ transferSnowTo(rs: RoadSection)&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ transferGravelTo(rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ tryBreakIce()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ setSalty()&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+ getVehicles(): List&amp;lt;Vehicle&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;+&lt;/span&gt;&amp;nbsp;getPossibleIntersections(): List&amp;lt;&lt;b&gt;Intersection&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setGravel()&lt;/p&gt;" vertex="1">
          <mxGeometry height="251.5" width="300" x="4687" y="1311.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-113" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Intersection&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPossibleRoads(): List&amp;lt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;RoadSection&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;+ addRoad(rs: RoadSection)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;+ getPossibleRoads():&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 12px;&quot;&gt;List&amp;lt;RoadSection&amp;gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="107" width="250" x="4502" y="1062" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-114" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-112" style="endArrow=none;endFill=0;endSize=24;html=1;rounded=0;exitX=0.619;exitY=0.003;exitDx=0;exitDy=0;elbow=vertical;entryX=1;entryY=0.418;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-113" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4871.93" y="1311.4975" as="sourcePoint" />
            <mxPoint x="4877.08" y="1145.145" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-115" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-113" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.336;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-109" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="4827" y="1180" as="sourcePoint" />
            <mxPoint x="4627" y="1039" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-116" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-112" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=-0.002;entryY=0.484;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;elbow=vertical;entryPerimeter=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-111" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4617" y="979" as="sourcePoint" />
            <mxPoint x="4777" y="979" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-117" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-118" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.262;entryY=1.003;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-113" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4634.5" y="1289" as="sourcePoint" />
            <mxPoint x="4727" y="1209" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-118" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;BusStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="130" x="4502" y="1229" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-119" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;NPCHomeStation&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ interactWith(&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle)&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="160" x="4657" y="1229" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-120" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Bridge&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;nbsp;accept(from: RoadSection&lt;/span&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ updateSelf()&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="290" x="5111" y="1472" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-121" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Tunnel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ accept(from: RoadSection&lt;b style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; text-align: center;&quot;&gt;,&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;vehicle: Vehicle): bool&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ updateSelf()&lt;span style=&quot;color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent;&quot;&gt;&lt;/span&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="70" width="290" x="5108" y="1377" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-122" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-119" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.779;entryY=1.008;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-113" value="Extends">
          <mxGeometry relative="1" width="160" x="-0.0004" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="4717" y="1384" as="sourcePoint" />
            <mxPoint x="4762" y="1229" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-123" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-120" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5099" y="1434" as="sourcePoint" />
            <mxPoint x="4989" y="1492" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-124" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-121" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5217" y="1359" as="sourcePoint" />
            <mxPoint x="4989" y="1442" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-125" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="4772" y="886.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-126" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="35" width="60" x="4610" y="1016.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-127" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="4617" y="1037" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-128" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="4897" y="1279" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-129" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="4857" y="1279" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-130" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="2" vertex="1">
          <mxGeometry height="30" width="60" x="4736" y="1069" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-135" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..1" vertex="1">
          <mxGeometry height="30" width="60" x="4627" y="1309" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-136" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;br&gt;&lt;b&gt;SnowPlow&lt;/b&gt;&lt;b&gt;Head&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="110" width="230" x="3572" y="1779" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-137" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgrade&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;- pointMultiplier: float&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPointMultiplier(): float&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;" vertex="1">
          <mxGeometry height="126" width="190" x="3328" y="1431" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-138" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;S&lt;/b&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;nowPlowUpgradeNormal&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;getPointMultiplier(): float&lt;/p&gt;" vertex="1">
          <mxGeometry height="84" width="160" x="3255" y="1625" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-139" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowUpgradePremium&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;getPointMultiplier(): float&lt;/p&gt;" vertex="1">
          <mxGeometry height="84" width="170" x="3456" y="1625" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-140" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-138" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.265;entryY=1.004;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-137" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4222" y="2184" as="sourcePoint" />
            <mxPoint x="4325" y="2039" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-141" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-139" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.08;exitY=0.007;exitDx=0;exitDy=0;exitPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-137" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4412" y="2159" as="sourcePoint" />
            <mxPoint x="4435" y="2049" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-143" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Biokerosene&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="3922" y="1599" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-144" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Salt&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="3742" y="1694" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-145" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SplittingHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3352" y="2019" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-146" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;IcebreakerHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3592.5" y="2013" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-147" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;DragonHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3857" y="2064" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-148" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SweeperHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3982" y="1929" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-149" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SalterHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3982" y="1774" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-150" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-145" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3852" y="2144" as="sourcePoint" />
            <mxPoint x="3890" y="2044" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-151" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-146" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.428;exitY=0.002;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4012" y="2254" as="sourcePoint" />
            <mxPoint x="3982" y="2514" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-152" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-147" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4062" y="2254" as="sourcePoint" />
            <mxPoint x="4145" y="1964" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-153" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-148" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4215" y="2274" as="sourcePoint" />
            <mxPoint x="4092" y="1984" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-154" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-149" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4552" y="2234" as="sourcePoint" />
            <mxPoint x="4212" y="1944" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-155" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;SnowPlowS&lt;/b&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0); font-family: monospace; font-size: 0px; text-wrap-mode: nowrap; background-color: transparent; text-align: left;&quot;&gt;%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20parent%3D%221%22%20style%3D%22verticalAlign%3Dtop%3Balign%3Dleft%3Boverflow%3Dfill%3Bhtml%3D1%3BwhiteSpace%3Dwrap%3B%22%20value%3D%22%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-top%3A4px%3Btext-align%3Acenter%3B%26quot%3B%26gt%3B%26lt%3Bi%26gt%3B%26amp%3Blt%3B%26amp%3Blt%3BInterface%26amp%3Bgt%3B%26amp%3Bgt%3B%26lt%3B%2Fi%26gt%3B%26lt%3Bbr%26gt%3B%26lt%3Bb%26gt%3BShop%26lt%3B%2Fb%26gt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bhr%20size%3D%26quot%3B1%26quot%3B%20style%3D%26quot%3Bborder-style%3Asolid%3B%26quot%3B%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20openFor(p%3A%20Player)%26lt%3Bbr%26gt%3B%2B%20listItems()%3A%20List%26amp%3Blt%3BItem%26amp%3Bgt%3B%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20closeShop()%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20canPlayerBuyItem(p%3A%20Player%2C%20i%3A%20Item)%3A%20bool%26lt%3B%2Fp%26gt%3B%26lt%3Bp%20style%3D%26quot%3Bmargin%3A0px%3Bmargin-left%3A4px%3B%26quot%3B%26gt%3B%2B%20buyItemForPlayer(p%3A%20Player%2C%20i%3A%20Item)%26lt%3B%2Fp%26gt%3B%22%20vertex%3D%221%22%3E%3CmxGeometry%20height%3D%22140%22%20width%3D%22250%22%20x%3D%221120%22%20y%3D%22740%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E&lt;/span&gt;&lt;b style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;hop&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getInstance(): SnowPlowShop&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ listItems(): List&amp;lt;Item&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canPlayerBuyItem(p: Player, i: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ buyItemForPlayer(p: Player, i: Item)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ openFor(p: Player)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ closeShop()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ openShop()&lt;/p&gt;" vertex="1">
          <mxGeometry height="135" width="240" x="3548" y="1342" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-156" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-144" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.737;entryY=1.001;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-163" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3786" y="1759" as="sourcePoint" />
            <mxPoint x="4172" y="2079" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-157" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-137" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-163" value="Extends">
          <mxGeometry relative="1" width="160" x="0.0046" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="4542" y="2191" as="sourcePoint" />
            <mxPoint x="3982" y="2079" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-158" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-136" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.235;entryY=0.999;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-163" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4132" y="1699" as="sourcePoint" />
            <mxPoint x="4095" y="2102" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-159" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-163" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;entryX=0.78;entryY=0.974;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-155" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4582" y="1849" as="sourcePoint" />
            <mxPoint x="3942" y="1942" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-160" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-143" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.006;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4662" y="2009" as="sourcePoint" />
            <mxPoint x="3832" y="1606" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-163" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;&lt;/i&gt;Abstract&lt;i&gt;&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ onBuy(s: SnowPlow)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Item(n: String, c: int)&lt;/p&gt;" vertex="1">
          <mxGeometry height="108" width="190" x="3642" y="1533" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-164" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="3675" y="1479" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-165" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1..*" vertex="1">
          <mxGeometry height="30" width="60" x="3647" y="1508" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-170" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;GravelHead&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style: solid;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getCost(): int&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ doCleaning(m: Map, rs: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;+ canBeUsedBy(p: SnowPlow): bool&lt;/p&gt;" vertex="1">
          <mxGeometry height="120" width="225" x="3248" y="1797" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-171" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-170" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-136" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3342" y="2106" as="sourcePoint" />
            <mxPoint x="3512" y="1936" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-172" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;b&gt;Gravel&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getName(): String&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCost(): int&lt;/p&gt;" vertex="1">
          <mxGeometry height="80" width="160" x="3933" y="1467" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-173" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-172" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-163" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4051" y="1522" as="sourcePoint" />
            <mxPoint x="3960" y="1522" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-174" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="Player" vertex="1">
          <mxGeometry height="143" width="160" x="5222" y="1899" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-175" parent="rPUROhD_bjSVTw1W4ouW-174" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;shadow=0;swimlaneLine=1;" value="" vertex="1">
          <mxGeometry height="8" width="160" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-176" parent="rPUROhD_bjSVTw1W4ouW-174" style="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;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="+ getVehicle(): Vehicle&lt;br&gt;+ getPoints(): int&lt;br&gt;&lt;div&gt;+ gainPoints(amm: int)&lt;/div&gt;&lt;div&gt;+ spendPoints(toSpend: int)&lt;/div&gt;&lt;div&gt;+ getName(): string&lt;/div&gt;&lt;div&gt;+ Player(name: String)&lt;/div&gt;&lt;div&gt;+ setVehicle(v: Vehicle)&lt;/div&gt;" vertex="1">
          <mxGeometry height="109" width="160" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-182" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-188" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="rPUROhD_bjSVTw1W4ouW-214" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4867.09" y="2119" as="sourcePoint" />
            <mxPoint x="5010" y="2254" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-183" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-226" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.015;entryY=0.927;entryDx=0;entryDy=0;exitX=1.002;exitY=0.031;exitDx=0;exitDy=0;entryPerimeter=0;exitPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-214" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5030" y="1989" as="sourcePoint" />
            <mxPoint x="4920" y="2064" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-184" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Schedule" vertex="1">
          <mxGeometry height="160" width="240" x="4559" y="2390" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-185" parent="rPUROhD_bjSVTw1W4ouW-184" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- stations: List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;- timetable: List&amp;lt;int&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="44" width="240" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-186" parent="rPUROhD_bjSVTw1W4ouW-184" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="240" y="70" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-187" parent="rPUROhD_bjSVTw1W4ouW-184" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getNextStation(bs: BusStation): BusStation&lt;/div&gt;&lt;div&gt;+ getTurnsBetween(bs1: BusStation, bs2: BusStation): int&lt;/div&gt;&lt;div&gt;+ isTerminus(bs: BusStation): bool&lt;/div&gt;" vertex="1">
          <mxGeometry height="82" width="240" y="78" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-188" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlow" vertex="1">
          <mxGeometry height="346" width="260" x="4880.5" y="2343" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-189" parent="rPUROhD_bjSVTw1W4ouW-188" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;- keroseneCount: int&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- saltCount: int&lt;/div&gt;&lt;div&gt;- gravelCount: int&lt;/div&gt;" vertex="1">
          <mxGeometry height="56" width="260" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-190" parent="rPUROhD_bjSVTw1W4ouW-188" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="260" y="82" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-191" parent="rPUROhD_bjSVTw1W4ouW-188" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ update(m: Map rs: RoadSection)&lt;/div&gt;&lt;div&gt;+ getPointMultiplier(): float&lt;/div&gt;&lt;div&gt;+ getHead(): SnowPlowHead&lt;/div&gt;&lt;div&gt;+ setHead(head: SnowPlowHead)&lt;/div&gt;&lt;div&gt;+ getFuelCount(): int&lt;/div&gt;&lt;div&gt;+ getSaltCount(): int&lt;/div&gt;&lt;div&gt;+ getGravelCount(): int&lt;/div&gt;&lt;div&gt;+ consumeGravel(int w)&lt;/div&gt;&lt;div&gt;+ consumeSalt(int w)&lt;/div&gt;&lt;div&gt;+ consumeFuel(int w)&lt;/div&gt;&lt;div&gt;+ addGravel(int w)&lt;/div&gt;&lt;div&gt;+ addFuel(int w)&lt;/div&gt;&lt;div&gt;+ addSalt(int w)&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;&lt;div&gt;+ SnowPlow(owner: Player, starterHead: SnowPlowHead)&lt;/div&gt;&lt;div&gt;+ setBody(newUpgrade: SnowPlowUpgrade)&lt;/div&gt;" vertex="1">
          <mxGeometry height="256" width="260" y="90" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-192" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Car" vertex="1">
          <mxGeometry height="144" width="257" x="4542" y="1930" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-193" parent="rPUROhD_bjSVTw1W4ouW-192" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="257" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-194" parent="rPUROhD_bjSVTw1W4ouW-192" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ Car(owner: Player, start: NPCHomeStation, destination: NPCHomeStation)&lt;/div&gt;&lt;div&gt;+ setFixRoute(route: List&amp;lt;Intersection&amp;gt;)&lt;/div&gt;&lt;div&gt;+ hasReachedDestination(): bool&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;&lt;div&gt;+ setRoute()&lt;/div&gt;&lt;div&gt;+ changeDestination()&lt;/div&gt;" vertex="1">
          <mxGeometry height="110" width="257" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-195" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-194" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.007;entryY=0.296;entryDx=0;entryDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-214" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="5260" y="2039" as="sourcePoint" />
            <mxPoint x="4920" y="1974" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-201" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-184" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.468;entryY=1.013;entryDx=0;entryDy=0;entryPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-226" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5334" y="2410" as="sourcePoint" />
            <mxPoint x="5494" y="2410" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-202" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5100" y="1939" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-203" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-202" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-176" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5108.860000000001" y="1962.12" as="sourcePoint" />
            <mxPoint x="5409" y="1809" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-210" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5162" y="1929" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-212" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="5010" y="1899" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-214" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Vehicle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- collisionMask: int&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ isInIntersection(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCurrentRoad(): RoadSection&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getCurrentIntersection(): Intersection&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canCollide(v: Vehicle): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ isStunned(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getStunDuration(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ tryStun()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ update()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ stun()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getMask(): int&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Vehicle(owner: Player)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ getPlayer(): Player&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setCurrentRoad(n: RoadSection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ setCurrentIntersection(i: Intersection)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ playerMoveLogic()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canUseShop(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canBuyItem(item: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ buyItem(item: Item): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ canActThisTurn(): bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ finishTurn()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="368" width="221" x="4900" y="1910" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-220" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="4664" y="2338" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-223" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Bus" vertex="1">
          <mxGeometry height="156" width="160" x="4604" y="2189" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-224" parent="rPUROhD_bjSVTw1W4ouW-223" style="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;whiteSpace=wrap;html=1;" value="- satisfaction : float" vertex="1">
          <mxGeometry height="26" width="160" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-225" parent="rPUROhD_bjSVTw1W4ouW-223" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="160" y="52" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-226" parent="rPUROhD_bjSVTw1W4ouW-223" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getSatisfaction(): float&lt;/div&gt;&lt;div&gt;+ getSchedule(): Schedule&lt;/div&gt;&lt;div&gt;+ getCurrentStation(): BusStation&lt;/div&gt;&lt;div&gt;+changeSatisfaction()&lt;/div&gt;&lt;div&gt;+ canUseShop(): bool&lt;/div&gt;" vertex="1">
          <mxGeometry height="96" width="160" y="60" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-227" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="4664" y="2365" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-231" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Map" vertex="1">
          <mxGeometry height="230" width="240" x="5481" y="-127" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-232" parent="rPUROhD_bjSVTw1W4ouW-231" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="240" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-233" parent="rPUROhD_bjSVTw1W4ouW-231" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ generate()&lt;/div&gt;&lt;div&gt;+ update()&lt;/div&gt;&lt;div&gt;+ calculateShortestRoute(s1: Intersection, s2: Intersection): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getLanes():&amp;nbsp;List&amp;lt;RoadSection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getIntersections(): List&amp;lt;Intersection&amp;gt;&lt;/div&gt;&lt;div&gt;+ getBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+ getTwoRandomBusStations(): List&amp;lt;BusStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;getTwoRandomNPCHomeStations(): List&amp;lt;NPCHomeStation&amp;gt;&lt;/div&gt;&lt;div&gt;+&amp;nbsp;makeRoad(is1: Intersection, is2: Intersection, rs: RoadSection)&lt;/div&gt;" vertex="1">
          <mxGeometry height="196" width="240" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-237" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="246" width="190" x="5282" y="-214" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-238" parent="rPUROhD_bjSVTw1W4ouW-237" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- isRunning: boolean&lt;/div&gt;&lt;div&gt;- currentPlayer: Player&lt;/div&gt;" vertex="1">
          <mxGeometry height="44" width="190" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-239" parent="rPUROhD_bjSVTw1W4ouW-237" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="190" y="70" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-240" parent="rPUROhD_bjSVTw1W4ouW-237" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ getInstance(): App&lt;/div&gt;&lt;div&gt;+ getLeaderBoard(): List&amp;lt;Player&amp;gt;&lt;/div&gt;&lt;div&gt;+ getMap(): Map&lt;/div&gt;&lt;div&gt;+ getPlayers(): List&amp;lt;Player&amp;gt;&lt;/div&gt;&lt;div&gt;+ getVehicles(): List&amp;lt;Vehicle&amp;gt;&lt;/div&gt;&lt;div&gt;+ run()&lt;/div&gt;&lt;div&gt;+ endTurn()&lt;/div&gt;&lt;div&gt;+ reset()&lt;/div&gt;&lt;div&gt;+ getCurrentPlayer(): Player&lt;/div&gt;&lt;div&gt;+ updateWorld()&lt;/div&gt;&lt;div&gt;+ addPlayers()&lt;/div&gt;" vertex="1">
          <mxGeometry height="168" width="190" y="78" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-243" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="TurnController" vertex="1">
          <mxGeometry height="153" width="187" x="4914" y="-186" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-244" parent="rPUROhD_bjSVTw1W4ouW-243" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- tickables: List&amp;lt;ITickable&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="34" width="187" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-245" parent="rPUROhD_bjSVTw1W4ouW-243" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="187" y="60" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-246" parent="rPUROhD_bjSVTw1W4ouW-243" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ tick()&lt;/div&gt;&lt;div&gt;+ addTickable(t: ITickable)&lt;/div&gt;&lt;div&gt;+ getCurrentTurn(): int&lt;/div&gt;&lt;div&gt;+ getMaxTurns(): int&lt;/div&gt;&lt;div&gt;+ TurnController(maxTurns: int)&lt;/div&gt;" vertex="1">
          <mxGeometry height="85" width="187" y="68" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-248" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&lt;b&gt;ITickable&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ update()&lt;/p&gt;" vertex="1">
          <mxGeometry height="111" width="190" x="4659" y="-127" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-252" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-231" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.336;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" target="rPUROhD_bjSVTw1W4ouW-248" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="5564" y="-231" />
              <mxPoint x="4754" y="-227" />
            </Array>
            <mxPoint x="5524" y="34" as="sourcePoint" />
            <mxPoint x="5684" y="34" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-253" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="Player" vertex="1">
          <mxGeometry height="143" width="160" x="5264" y="199" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-254" parent="rPUROhD_bjSVTw1W4ouW-253" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;shadow=0;swimlaneLine=1;" value="" vertex="1">
          <mxGeometry height="8" width="160" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-255" parent="rPUROhD_bjSVTw1W4ouW-253" style="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;whiteSpace=wrap;html=1;shadow=0;swimlaneLine=1;" value="+ getVehicle(): Vehicle&lt;br&gt;+ getPoints(): int&lt;br&gt;&lt;div&gt;+ gainPoints(amm: int)&lt;/div&gt;&lt;div&gt;+ spendPoints(toSpend: int)&lt;/div&gt;&lt;div&gt;+ getName(): string&lt;/div&gt;&lt;div&gt;+ Player(name: String)&lt;/div&gt;&lt;div&gt;+ setVehicle(v: Vehicle)&lt;/div&gt;" vertex="1">
          <mxGeometry height="109" width="160" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-261" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-290" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-248" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="4754" y="164" />
            </Array>
            <mxPoint x="4821.5" y="214" as="sourcePoint" />
            <mxPoint x="5244" y="154" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-262" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-253" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0.318;entryY=1.025;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-240" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5354" y="194" as="sourcePoint" />
            <mxPoint x="5244" y="-26" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-263" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5709" y="-28.5" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-267" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5059" y="-76" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-268" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5214" y="-76" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-269" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-246" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-248" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4844" y="-356" as="sourcePoint" />
            <mxPoint x="5004" y="-356" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-270" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-290" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=-0.002;entryY=0.686;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-240" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="4917" y="-21" />
            </Array>
            <mxPoint x="4916.5" y="214" as="sourcePoint" />
            <mxPoint x="5154" y="138.51999999999998" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-271" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="4954" y="224" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-272" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-271" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-255" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4962.860000000001" y="247.12000000000012" as="sourcePoint" />
            <mxPoint x="5263" y="94" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-273" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="PlayerFactory" vertex="1">
          <mxGeometry height="115" width="180" x="5044" y="74" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-274" parent="rPUROhD_bjSVTw1W4ouW-273" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="180" y="26" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-275" parent="rPUROhD_bjSVTw1W4ouW-273" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ buildBusPlayer(name: string): Player&lt;/div&gt;&lt;div&gt;+ buildSnowPlowPlayer(name: string): Player&lt;/div&gt;&lt;div&gt;+ getInstance(): PlayerFactory&lt;/div&gt;" vertex="1">
          <mxGeometry height="81" width="180" y="34" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-276" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-273" style="endArrow=none;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;shape=wire;dashed=1;elbow=vertical;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-253" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5064" y="124" as="sourcePoint" />
            <mxPoint x="5224" y="124" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-279" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-231" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rPUROhD_bjSVTw1W4ouW-238" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5514" y="104" as="sourcePoint" />
            <mxPoint x="5674" y="104" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-280" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5461" y="-198" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-281" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5500" y="-153" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-283" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-246" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.996;exitY=0.86;exitDx=0;exitDy=0;exitPerimeter=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" target="rPUROhD_bjSVTw1W4ouW-240" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5166.13" y="-264.99999999999955" as="sourcePoint" />
            <mxPoint x="5274.002340425532" y="-95.99999999999955" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-284" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5214" y="224" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-285" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5334" y="14" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-286" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="5334" y="169" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-287" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5224" y="-46" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-288" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Helvetica;fontSize=12;fontColor=default;fontStyle=1;horizontal=1;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="4859" y="188" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-290" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Vehicle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="47" width="221" x="4748" y="222" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-293" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5204" y="104" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-294" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0..*" vertex="1">
          <mxGeometry height="30" width="60" x="5254" y="169" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-297" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5119" y="44" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-298" parent="WIyWlLk6GJQsqaUBKTNV-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="1" vertex="1">
          <mxGeometry height="30" width="60" x="5239" y="-6" as="geometry" />
        </mxCell>
        <mxCell id="rPUROhD_bjSVTw1W4ouW-299" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="rPUROhD_bjSVTw1W4ouW-297" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" target="rPUROhD_bjSVTw1W4ouW-298" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="5134" y="-6" />
            </Array>
            <mxPoint x="5344" y="84" as="sourcePoint" />
            <mxPoint x="5504" y="84" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="mjKTBbUyyAjEpHshx-6f-18" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-15" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="g4UjSmEx3sNYAojN2klM-17" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1004.0064171832541" y="2887.0015863833223" as="sourcePoint" />
            <mxPoint x="1099.001199798584" y="2889.9960353088377" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="mjKTBbUyyAjEpHshx-6f-19" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="RMrSDmypOkkjGLXtHjAm-80" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1367.0000000000005" y="2634" as="sourcePoint" />
            <mxPoint x="1511.998341158353" y="2632.997428072416" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="mjKTBbUyyAjEpHshx-6f-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="g4UjSmEx3sNYAojN2klM-2" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="RMrSDmypOkkjGLXtHjAm-106" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1227.501199798584" y="2788.9960353088377" as="sourcePoint" />
            <mxPoint x="1229.0011997985844" y="2683.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;CrossingType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NORMAL&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BUS_STATION&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NPC_STATION&lt;/p&gt;" vertex="1">
          <mxGeometry height="104" width="190" x="778" y="3471" as="geometry" />
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-15" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-10" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="g4UjSmEx3sNYAojN2klM-22" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="897.0020396423342" y="3123.9971803283697" as="sourcePoint" />
            <mxPoint x="1102.0020396423342" y="3173.499470367431" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-16" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-4" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="g4UjSmEx3sNYAojN2klM-31" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1027.0020396423347" y="3330.999470367431" as="sourcePoint" />
            <mxPoint x="1102.0020396423342" y="3380.499470367431" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-17" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-13" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-176" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="839.5064171832541" y="2803.0015863833223" as="sourcePoint" />
            <mxPoint x="879" y="2750.0000000000005" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-18" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-30" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.415;exitY=0.958;exitDx=0;exitDy=0;exitPerimeter=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1261.7947104046957" y="2334" as="sourcePoint" />
            <mxPoint x="1229.0011997985844" y="2583.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-19" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-21" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="RMrSDmypOkkjGLXtHjAm-30" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1003.0020396423347" y="2369.9971803283693" as="sourcePoint" />
            <mxPoint x="1091.0020396423342" y="2370.997180328369" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-23" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-176" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="796.0020396423342" y="2453.9971803283697" as="sourcePoint" />
            <mxPoint x="879" y="2515.69" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-21" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-107" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.524;entryY=0.884;entryDx=0;entryDy=0;entryPerimeter=0;" target="g4UjSmEx3sNYAojN2klM-32" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1354.0020396423342" y="3523.0006153869626" as="sourcePoint" />
            <mxPoint x="1359.0020396423342" y="3483.99947036743" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-22" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-62" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="RMrSDmypOkkjGLXtHjAm-63" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="1638" y="2015" />
            </Array>
            <mxPoint x="1714.5020396423342" y="2123.9971803283693" as="sourcePoint" />
            <mxPoint x="1691.5020396423347" y="2170.9971803283693" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-23" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-62" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-176" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="609" y="2566" />
            </Array>
            <mxPoint x="1612.2520396423342" y="1955.9971803283693" as="sourcePoint" />
            <mxPoint x="758" y="2574.2675" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-24" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;HeadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NONE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ DRAGON&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ ICEBREAKER&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SALTER&lt;br&gt;+ SPLITTING&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SWEEPER&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ GRAVEL&lt;/p&gt;" vertex="1">
          <mxGeometry height="153" width="190" x="1818" y="3429.5" as="geometry" />
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-25" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BRIDGE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ ROAD&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ TUNNEL&lt;/p&gt;" vertex="1">
          <mxGeometry height="104" width="190" x="515" y="3286" as="geometry" />
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-26" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;VehicleType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ AUTO&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWPLOW&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BUS&lt;/p&gt;" vertex="1">
          <mxGeometry height="99" width="190" x="1820" y="3265" as="geometry" />
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-27" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-11" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.535;exitY=1.034;exitDx=0;exitDy=0;exitPerimeter=0;" target="rqIdC-cpxAWtNrjM_QmC-25" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="495.0020396423347" y="3190.9971803283697" as="sourcePoint" />
            <mxPoint x="523" y="3211" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-28" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-5" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="rqIdC-cpxAWtNrjM_QmC-0" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="873.0020396423347" y="3397.999470367431" as="sourcePoint" />
            <mxPoint x="689" y="3438" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-29" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-111" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.001;entryY=0.556;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" target="rqIdC-cpxAWtNrjM_QmC-24" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1708.0020396423347" y="3706.0006153869626" as="sourcePoint" />
            <mxPoint x="1393" y="3544" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rqIdC-cpxAWtNrjM_QmC-30" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-110" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="rqIdC-cpxAWtNrjM_QmC-26" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1708.0020396423347" y="3584.0006153869626" as="sourcePoint" />
            <mxPoint x="1480" y="3502" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="qMtGxxWLP9ayOOPOqdiv-0" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-77" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1509.0020396423347" y="2516.9971803283693" as="sourcePoint" />
            <mxPoint x="1367.001199798584" y="2608.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-16" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="JDialog" vertex="1">
          <mxGeometry height="52" width="140" x="2114" y="2465" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-0" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-16" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3320" y="2669" as="sourcePoint" />
            <mxPoint x="3040" y="2526" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-22" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopController" vertex="1">
          <mxGeometry height="294" width="332" x="2396" y="2634" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-23" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- dialog : ShopDialog" vertex="1">
          <mxGeometry height="26" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-27" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- model : App" vertex="1">
          <mxGeometry height="26" width="332" y="52" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-28" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- shop : SnowPlowShop" vertex="1">
          <mxGeometry height="26" width="332" y="78" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-26" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- currentPlayer : Player" vertex="1">
          <mxGeometry height="26" width="332" y="104" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-24" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="130" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-29" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="+ ShopController(ShopDialog dialog, App model) : void" vertex="1">
          <mxGeometry height="26" width="332" y="138" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-32" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="+ init() : void" vertex="1">
          <mxGeometry height="26" width="332" y="164" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-34" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="+ open(Player player) : void" vertex="1">
          <mxGeometry height="26" width="332" y="190" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-33" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- refreshItems() : void" vertex="1">
          <mxGeometry height="26" width="332" y="216" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-31" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- handleBuy() : void" vertex="1">
          <mxGeometry height="26" width="332" y="242" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-25" parent="9Nbmx0oTrhlhxyuZu1HZ-22" style="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;whiteSpace=wrap;html=1;" value="- createShpoItemData() : List&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="26" width="332" y="268" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-36" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="52" width="140" x="2298" y="2515.69" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-40" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlowShop" vertex="1">
          <mxGeometry height="52" width="140" x="2492" y="2515.69" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-44" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Player" vertex="1">
          <mxGeometry height="52" width="140" x="2685.5" y="2515.69" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-49" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-22" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-44" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3240" y="2654" as="sourcePoint" />
            <mxPoint x="2770" y="2593" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-50" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-22" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-36" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2408" y="2593" as="sourcePoint" />
            <mxPoint x="2693" y="2592" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-51" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-22" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-40" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2566" y="2575" as="sourcePoint" />
            <mxPoint x="2851" y="2574" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-52" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopItemData" vertex="1">
          <mxGeometry height="242" width="331" x="2402" y="3030" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-53" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="- index : int" vertex="1">
          <mxGeometry height="26" width="331" y="26" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-57" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="- name : string" vertex="1">
          <mxGeometry height="26" width="331" y="52" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-56" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="- cost : int" vertex="1">
          <mxGeometry height="26" width="331" y="78" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-54" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="331" y="104" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-59" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="+ ShopItemData(index int, same string, sot int)" vertex="1">
          <mxGeometry height="26" width="331" y="112" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-58" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="+ getIndex() : int" vertex="1">
          <mxGeometry height="26" width="331" y="138" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-60" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="+ getName() : string" vertex="1">
          <mxGeometry height="26" width="331" y="164" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-61" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="+ getCost(): int" vertex="1">
          <mxGeometry height="26" width="331" y="190" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-55" parent="9Nbmx0oTrhlhxyuZu1HZ-52" style="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;whiteSpace=wrap;html=1;" value="+ method(type): type" vertex="1">
          <mxGeometry height="26" width="331" y="216" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-62" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-10" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-53" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2999" y="2980" as="sourcePoint" />
            <mxPoint x="3144" y="2979" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;App&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="46" width="190" x="449" y="2718" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-1" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-176" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.005;exitY=0.811;exitDx=0;exitDy=0;exitPerimeter=0;" target="g4UjSmEx3sNYAojN2klM-0" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="758" y="2691.4225" as="sourcePoint" />
            <mxPoint x="1032" y="3326" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-2" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameView" vertex="1">
          <mxGeometry height="301" width="332" x="1119" y="2729" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-3" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="- shop: ShopDialog" vertex="1">
          <mxGeometry height="26" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-4" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="- canvas: GameCanvas" vertex="1">
          <mxGeometry height="26" width="332" y="52" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-6" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- shopButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="332" y="78" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-15" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- leaderboardButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="332" y="106" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-17" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- exitButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="332" y="134" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-18" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- moveButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="332" y="162" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-16" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- moveDialog: JDialog&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="332" y="190" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-7" parent="g4UjSmEx3sNYAojN2klM-2" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="218" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-8" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="+ GameView()" vertex="1">
          <mxGeometry height="26" width="332" y="226" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-9" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="+ openMoveDialog(): void" vertex="1">
          <mxGeometry height="26" width="332" y="252" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-19" parent="g4UjSmEx3sNYAojN2klM-2" style="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;whiteSpace=wrap;html=1;" value="+ updateCanvas(): void" vertex="1">
          <mxGeometry height="23" width="332" y="278" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-20" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="g4UjSmEx3sNYAojN2klM-21" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.486;entryY=1.085;entryDx=0;entryDy=0;entryPerimeter=0;" target="g4UjSmEx3sNYAojN2klM-19" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1359.0020396423342" y="3069.999470367431" as="sourcePoint" />
            <mxPoint x="1412" y="3059" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-21" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameCanvas" vertex="1">
          <mxGeometry height="161" width="332" x="1169" y="3100" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-22" parent="g4UjSmEx3sNYAojN2klM-21" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- lanes: List&amp;lt;RoadVisual&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-23" parent="g4UjSmEx3sNYAojN2klM-21" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- vehicles: List&amp;lt;VehicleVisual&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="332" y="52" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-29" parent="g4UjSmEx3sNYAojN2klM-21" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="78" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-30" parent="g4UjSmEx3sNYAojN2klM-21" style="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;whiteSpace=wrap;html=1;" value="+ GameCanvas()" vertex="1">
          <mxGeometry height="26" width="332" y="86" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-31" parent="g4UjSmEx3sNYAojN2klM-21" style="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;whiteSpace=wrap;html=1;" value="+ draw(): void" vertex="1">
          <mxGeometry height="26" width="332" y="112" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-32" parent="g4UjSmEx3sNYAojN2klM-21" style="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;whiteSpace=wrap;html=1;" value="+ generateMap(): void" vertex="1">
          <mxGeometry height="23" width="332" y="138" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="&lt;b&gt;ShopDialog&lt;/b&gt;" vertex="1">
          <mxGeometry height="415" width="332" x="1974" y="2722" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-1" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="- itemListModel : DefaultListModel&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="25" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-2" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="- itemList: JList&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="26" width="332" y="51" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-3" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="- playerLabel: JLabel" vertex="1">
          <mxGeometry height="26" width="332" y="77" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-4" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="- pointsLabel: JLabel" vertex="1">
          <mxGeometry height="26" width="332" y="103" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-8" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="- buyButton: JButton" vertex="1">
          <mxGeometry height="26" width="332" y="129" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-5" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ ShopDialog(JRame owner)" vertex="1">
          <mxGeometry height="26" width="332" y="155" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-7" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ showItems (List&amp;lt;ShopItemData&amp;gt; items) : void" vertex="1">
          <mxGeometry height="26" width="332" y="181" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-6" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ setPlayerInfo(String playername, int points) : void" vertex="1">
          <mxGeometry height="26" width="332" y="207" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-9" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ item: attribute" vertex="1">
          <mxGeometry height="26" width="332" y="233" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-12" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ getSelectedItemIndex() : int" vertex="1">
          <mxGeometry height="26" width="332" y="259" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-13" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ setBuyButtonListener (ActionListener listener) : void" vertex="1">
          <mxGeometry height="26" width="332" y="285" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-11" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ setCloseButtonListener (ActionListener listener) : void" vertex="1">
          <mxGeometry height="26" width="332" y="311" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-10" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ errorShower (string message) : void" vertex="1">
          <mxGeometry height="26" width="332" y="337" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-14" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ close() : void" vertex="1">
          <mxGeometry height="26" width="332" y="363" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-15" parent="9Nbmx0oTrhlhxyuZu1HZ-0" style="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;whiteSpace=wrap;html=1;" value="+ open() : void" vertex="1">
          <mxGeometry height="26" width="332" y="389" as="geometry" />
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-21" edge="1" parent="9Nbmx0oTrhlhxyuZu1HZ-0" source="9Nbmx0oTrhlhxyuZu1HZ-5" style="endArrow=none;html=1;rounded=0;exitX=0.001;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.001;entryY=-0.023;entryDx=0;entryDy=0;entryPerimeter=0;" target="9Nbmx0oTrhlhxyuZu1HZ-5" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="11" y="264" as="sourcePoint" />
            <mxPoint x="61" y="214" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Nbmx0oTrhlhxyuZu1HZ-35" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-32" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="9Nbmx0oTrhlhxyuZu1HZ-3" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2749" y="3059" as="sourcePoint" />
            <mxPoint x="2707" y="3168" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-33" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9Nbmx0oTrhlhxyuZu1HZ-13" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="g4UjSmEx3sNYAojN2klM-9" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1813" y="2881" as="sourcePoint" />
            <mxPoint x="1973" y="2881" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-0" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="CrossingVisual" vertex="1">
          <mxGeometry height="140" width="256" x="744" y="3293" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-34" parent="RMrSDmypOkkjGLXtHjAm-0" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ x: int&lt;/div&gt;&lt;div&gt;+ y: int&lt;/div&gt;&lt;div&gt;- type: CrossingType&lt;/div&gt;" vertex="1">
          <mxGeometry height="53" width="256" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-3" parent="RMrSDmypOkkjGLXtHjAm-0" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="6" width="256" y="79" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-4" parent="RMrSDmypOkkjGLXtHjAm-0" style="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;whiteSpace=wrap;html=1;" value="+ CrossingVisual(x: int, y: int, t: CrossingType)" vertex="1">
          <mxGeometry height="29" width="256" y="85" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-5" parent="RMrSDmypOkkjGLXtHjAm-0" style="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;whiteSpace=wrap;html=1;" value="+ getColor(): Color" vertex="1">
          <mxGeometry height="26" width="256" y="114" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-8" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RoadVisual" vertex="1">
          <mxGeometry height="86" width="497" x="531.5" y="3093" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-9" parent="RMrSDmypOkkjGLXtHjAm-8" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-10" parent="RMrSDmypOkkjGLXtHjAm-8" style="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;whiteSpace=wrap;html=1;" value="+ RoadVisual(k1: CrossingVisual, k2: CrossingVisual, borderColor: Color, t: RoadType)" vertex="1">
          <mxGeometry height="26" width="497" y="34" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-11" parent="RMrSDmypOkkjGLXtHjAm-8" style="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;whiteSpace=wrap;html=1;" value="+ getInnerColor(): Color" vertex="1">
          <mxGeometry height="26" width="497" y="60" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-35" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;JPanel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="46" width="190" x="1607" y="3226" as="geometry" />
        </mxCell>
        <mxCell id="g4UjSmEx3sNYAojN2klM-37" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="g4UjSmEx3sNYAojN2klM-21" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="g4UjSmEx3sNYAojN2klM-35" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1611" y="3357" as="sourcePoint" />
            <mxPoint x="1771" y="3357" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-13" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameController" vertex="1">
          <mxGeometry height="112" width="289.5" x="734.25" y="2829" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-14" parent="RMrSDmypOkkjGLXtHjAm-13" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="289.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-15" parent="RMrSDmypOkkjGLXtHjAm-13" style="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;whiteSpace=wrap;html=1;" value="+ GameController(view: GameView, model: App)" vertex="1">
          <mxGeometry height="26" width="289.5" y="34" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-16" parent="RMrSDmypOkkjGLXtHjAm-13" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="289.5" y="60" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-17" parent="RMrSDmypOkkjGLXtHjAm-13" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="289.5" y="86" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-19" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardController" vertex="1">
          <mxGeometry height="112" width="341" x="708.5" y="2353" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-20" parent="RMrSDmypOkkjGLXtHjAm-19" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-21" parent="RMrSDmypOkkjGLXtHjAm-19" style="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;whiteSpace=wrap;html=1;" value="+ LeaderboardController(view: LeaderboardView, model: App)" vertex="1">
          <mxGeometry height="26" width="341" y="34" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-22" parent="RMrSDmypOkkjGLXtHjAm-19" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="341" y="60" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-23" parent="RMrSDmypOkkjGLXtHjAm-19" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="341" y="86" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-24" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardView" vertex="1">
          <mxGeometry height="242" width="341" x="1093" y="2066" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-33" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="- entries: List&amp;lt;LeaderboardEntry&amp;gt;" vertex="1">
          <mxGeometry height="26" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-34" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="- listContainer: JPanel" vertex="1">
          <mxGeometry height="26" width="341" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-35" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="- exitButton: JButton" vertex="1">
          <mxGeometry height="26" width="341" y="78" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-25" parent="RMrSDmypOkkjGLXtHjAm-24" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="104" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-26" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="+ LeaderboardView()" vertex="1">
          <mxGeometry height="26" width="341" y="112" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-27" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="+ [STATIC] open(): void" vertex="1">
          <mxGeometry height="26" width="341" y="138" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-28" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="- addEntry(playerName: String, score: int): void" vertex="1">
          <mxGeometry height="26" width="341" y="164" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-29" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="+ renderList(): void" vertex="1">
          <mxGeometry height="26" width="341" y="190" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-30" parent="RMrSDmypOkkjGLXtHjAm-24" style="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;whiteSpace=wrap;html=1;" value="+ setExitButtonListener(listener: ActionListener): void" vertex="1">
          <mxGeometry height="26" width="341" y="216" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-41" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardEntry" vertex="1">
          <mxGeometry height="112" width="259.5" x="700.25" y="2066" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-42" parent="RMrSDmypOkkjGLXtHjAm-41" style="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;whiteSpace=wrap;html=1;" value="~ name: String" vertex="1">
          <mxGeometry height="26" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-44" parent="RMrSDmypOkkjGLXtHjAm-41" style="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;whiteSpace=wrap;html=1;" value="~ score: int" vertex="1">
          <mxGeometry height="26" width="259.5" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-49" parent="RMrSDmypOkkjGLXtHjAm-41" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="78" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-50" parent="RMrSDmypOkkjGLXtHjAm-41" style="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;whiteSpace=wrap;html=1;" value="~ LeaderboardEntry(name: String, score: int)" vertex="1">
          <mxGeometry height="26" width="259.5" y="86" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-57" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-44" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="RMrSDmypOkkjGLXtHjAm-34" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1392" y="2122" as="sourcePoint" />
            <mxPoint x="1552" y="2122" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-58" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationController" vertex="1">
          <mxGeometry height="112" width="341" x="619" y="1922" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-59" parent="RMrSDmypOkkjGLXtHjAm-58" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-60" parent="RMrSDmypOkkjGLXtHjAm-58" style="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;whiteSpace=wrap;html=1;" value="+ RegistrationController(view: RegistrationView, model: App)" vertex="1">
          <mxGeometry height="26" width="341" y="34" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-61" parent="RMrSDmypOkkjGLXtHjAm-58" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="341" y="60" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-62" parent="RMrSDmypOkkjGLXtHjAm-58" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="341" y="86" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-63" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationView" vertex="1">
          <mxGeometry height="242" width="341" x="1472" y="2160" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-65" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="- listModel: DefaultListModel&amp;lt;String&amp;gt;" vertex="1">
          <mxGeometry height="26" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-66" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="- exitButton: JButton" vertex="1">
          <mxGeometry height="26" width="341" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-67" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="- playerList: JList&amp;lt;String&amp;gt;" vertex="1">
          <mxGeometry height="26" width="341" y="78" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-68" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- nameField: JTextField&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="341" y="104" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-69" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- typeCombo: JComboBox&amp;lt;String&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="341" y="130" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-71" parent="RMrSDmypOkkjGLXtHjAm-63" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="156" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-72" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="+ RegistrationView()" vertex="1">
          <mxGeometry height="26" width="341" y="164" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-76" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="+ setExitButtonListener(listener: ActionListener): void" vertex="1">
          <mxGeometry height="26" width="341" y="190" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-77" parent="RMrSDmypOkkjGLXtHjAm-63" style="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;whiteSpace=wrap;html=1;" value="- styleButton(btn: JButton, bg: Color): void" vertex="1">
          <mxGeometry height="26" width="341" y="216" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-78" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewManager" vertex="1">
          <mxGeometry height="242" width="341" x="1534" y="2567.69" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-79" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="- views: Map&amp;lt;String,ViewEntry&amp;gt;" vertex="1">
          <mxGeometry height="26" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-80" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="- activeViewId: String" vertex="1">
          <mxGeometry height="26" width="341" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-81" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="- instance: ViewManager" vertex="1">
          <mxGeometry height="26" width="341" y="78" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-84" parent="RMrSDmypOkkjGLXtHjAm-78" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="104" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-85" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="+ ViewManager()" vertex="1">
          <mxGeometry height="26" width="341" y="112" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-86" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="+ getInstance(): ViewManager" vertex="1">
          <mxGeometry height="26" width="341" y="138" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-87" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="+ addView(id: String, view: View, controller: Controller): void" vertex="1">
          <mxGeometry height="26" width="341" y="164" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-88" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="+ getView(id: String): View" vertex="1">
          <mxGeometry height="26" width="341" y="190" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-89" parent="RMrSDmypOkkjGLXtHjAm-78" style="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;whiteSpace=wrap;html=1;" value="+ switchTo(id: String): void" vertex="1">
          <mxGeometry height="26" width="341" y="216" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-100" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewEntry" vertex="1">
          <mxGeometry height="112" width="259.5" x="1847" y="2426" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-101" parent="RMrSDmypOkkjGLXtHjAm-100" style="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;whiteSpace=wrap;html=1;" value="~ view: View" vertex="1">
          <mxGeometry height="26" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-102" parent="RMrSDmypOkkjGLXtHjAm-100" style="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;whiteSpace=wrap;html=1;" value="~ controller: Controller" vertex="1">
          <mxGeometry height="26" width="259.5" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-103" parent="RMrSDmypOkkjGLXtHjAm-100" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="78" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-104" parent="RMrSDmypOkkjGLXtHjAm-100" style="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;whiteSpace=wrap;html=1;" value="~ ViewEntry(view: View, controller: Controller)" vertex="1">
          <mxGeometry height="26" width="259.5" y="86" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-105" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMrSDmypOkkjGLXtHjAm-104" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="RMrSDmypOkkjGLXtHjAm-78" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1853" y="2403" as="sourcePoint" />
            <mxPoint x="1986" y="2403" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-106" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;View&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ View(title: String, width: int, height: int)&lt;/p&gt;" vertex="1">
          <mxGeometry height="89" width="225" x="1144" y="2584" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-107" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="VehicleVisual" vertex="1">
          <mxGeometry height="138" width="497" x="1093" y="3407" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-110" parent="RMrSDmypOkkjGLXtHjAm-107" style="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;whiteSpace=wrap;html=1;" value="+ IMGSIZE: int" vertex="1">
          <mxGeometry height="26" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-108" parent="RMrSDmypOkkjGLXtHjAm-107" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="52" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-109" parent="RMrSDmypOkkjGLXtHjAm-107" style="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;whiteSpace=wrap;html=1;" value="+ VehicleVisual(type: VehicleType, road: RoadVisual, head: HeadType, upgraded: boolean)" vertex="1">
          <mxGeometry height="26" width="497" y="60" as="geometry" />
        </mxCell>
        <mxCell id="RMrSDmypOkkjGLXtHjAm-111" parent="RMrSDmypOkkjGLXtHjAm-107" style="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;whiteSpace=wrap;html=1;" value="- loadImages(): void" vertex="1">
          <mxGeometry height="26" width="497" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-0" parent="RMrSDmypOkkjGLXtHjAm-107" style="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;whiteSpace=wrap;html=1;" value="+ draw(g2: Graphics2D, img: Image, centerX: int, centerY: int, targetSize: int): void&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="497" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=146;height=28;" value="Kapcsolat a modellel" vertex="1">
          <mxGeometry height="109" width="260" x="420" y="2677" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-5" parent="WIyWlLk6GJQsqaUBKTNV-1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" value="" vertex="1">
          <mxGeometry height="60" width="8787" x="-1582" y="3710" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-6" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-111" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-61" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1190.75" y="5509" as="sourcePoint" />
            <mxPoint x="1286" y="5509.999999999999" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-7" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-168" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-152" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1534.0000000000005" y="5267" as="sourcePoint" />
            <mxPoint x="1701" y="5265.69" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-8" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-61" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-168" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1394.501199798584" y="5421.996035308837" as="sourcePoint" />
            <mxPoint x="1396.0011997985844" y="5316.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-9" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;CrossingType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="48" width="190" x="1087" y="5875" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-11" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-105" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;" target="xVZ0B1wGVQ6wQnNV2vCi-74" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1195.5" y="5773" as="sourcePoint" />
            <mxPoint x="1336" y="5772" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-12" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-100" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;" target="xVZ0B1wGVQ6wQnNV2vCi-74" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1167" y="6028.999999999999" as="sourcePoint" />
            <mxPoint x="1336" y="5858" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-13" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-111" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-178" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1006.5064171832541" y="5436.001586383322" as="sourcePoint" />
            <mxPoint x="1046" y="5383" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-14" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-121" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-168" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1401.5150000000003" y="4783.907999999999" as="sourcePoint" />
            <mxPoint x="1396.0011997985844" y="5216.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-15" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-116" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-121" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1216.5" y="5032.999999999999" as="sourcePoint" />
            <mxPoint x="1260" y="4772" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-16" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-117" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.495;exitY=0.927;exitDx=0;exitDy=0;exitPerimeter=0;" target="xVZ0B1wGVQ6wQnNV2vCi-178" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1046.0515873015875" y="5097.999999999999" as="sourcePoint" />
            <mxPoint x="1046" y="5148.6900000000005" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-17" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-169" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-74" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1521.0020396423342" y="6156.000615386963" as="sourcePoint" />
            <mxPoint x="1509.9679999999998" y="5891.332" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-18" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-137" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-142" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="1127" y="4652.794342958162" as="sourcePoint" />
            <mxPoint x="1858.5020396423347" y="4803.99718032837" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-19" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-137" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-178" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="818" y="5113" />
              <mxPoint x="818" y="5439" />
            </Array>
            <mxPoint x="786" y="4654" as="sourcePoint" />
            <mxPoint x="925.0000000000005" y="5207.2675" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-20" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;HeadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="47.5" width="190" x="1449" y="6003" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-21" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="44" width="190" x="862" y="5872" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-22" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;VehicleType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="47" width="190" x="1831" y="5936" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-23" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-105" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-21" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="964.3950000000004" y="5812.883999999999" as="sourcePoint" />
            <mxPoint x="690" y="5844" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-24" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-100" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-9" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1039.1624999999995" y="6037" as="sourcePoint" />
            <mxPoint x="856" y="6071" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-25" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-169" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-20" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1757" y="6138.999999999999" as="sourcePoint" />
            <mxPoint x="1560" y="6177" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-26" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-169" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="xVZ0B1wGVQ6wQnNV2vCi-22" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1757" y="6078.999999999999" as="sourcePoint" />
            <mxPoint x="1647" y="6135" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-27" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-142" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-168" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1799.9746750861968" y="4879" as="sourcePoint" />
            <mxPoint x="1534.001199798584" y="5241.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-28" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="JDialog" vertex="1">
          <mxGeometry height="34" width="140" x="1966.5" y="5561" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-29" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-81" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-28" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3487" y="5302" as="sourcePoint" />
            <mxPoint x="3207" y="5159" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-30" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopController" vertex="1">
          <mxGeometry height="34" width="332" x="2077" y="5504" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-35" parent="xVZ0B1wGVQ6wQnNV2vCi-30" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-42" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="42.31" width="140" x="2004" y="5363" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-43" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlowShop" vertex="1">
          <mxGeometry height="35.31" width="140" x="2173" y="5363" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-44" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Player" vertex="1">
          <mxGeometry height="38.31" width="140" x="2256" y="5240.69" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-45" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-30" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-44" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3407" y="5287" as="sourcePoint" />
            <mxPoint x="2937" y="5226" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-46" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-30" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-42" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2575" y="5226" as="sourcePoint" />
            <mxPoint x="2860" y="5225" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-47" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-30" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-43" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2733" y="5208" as="sourcePoint" />
            <mxPoint x="3018" y="5207" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-48" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopItemData" vertex="1">
          <mxGeometry height="34" width="331" x="1906" y="5865" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-52" parent="xVZ0B1wGVQ6wQnNV2vCi-48" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="331" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-58" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-81" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-48" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2473" y="5704.999999999999" as="sourcePoint" />
            <mxPoint x="2569" y="5702" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-59" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;App&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="46" width="190" x="804" y="5538" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-60" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-178" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-59" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="925.0000000000005" y="5324.422500000001" as="sourcePoint" />
            <mxPoint x="1199" y="5959" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-61" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameView" vertex="1">
          <mxGeometry height="34" width="332" x="1328" y="5655" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-69" parent="xVZ0B1wGVQ6wQnNV2vCi-61" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-73" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-74" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-61" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1526.0020396423342" y="5702.999470367431" as="sourcePoint" />
            <mxPoint x="1447.3519999999999" y="5664.955000000001" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-74" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameCanvas" vertex="1">
          <mxGeometry height="34" width="332" x="1332" y="5739" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-77" parent="xVZ0B1wGVQ6wQnNV2vCi-74" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-81" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="&lt;b&gt;ShopDialog&lt;/b&gt;" vertex="1">
          <mxGeometry height="37" width="332" x="1731" y="5736" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-98" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-30" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-81" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2563" y="5443.999999999999" as="sourcePoint" />
            <mxPoint x="2473" y="5444.999999999999" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-99" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-81" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;" target="xVZ0B1wGVQ6wQnNV2vCi-61" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1980" y="5514" as="sourcePoint" />
            <mxPoint x="2140" y="5514" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-100" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="CrossingVisual" vertex="1">
          <mxGeometry height="32" width="256" x="1173" y="5807" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-102" parent="xVZ0B1wGVQ6wQnNV2vCi-100" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="6" width="256" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-105" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RoadVisual" vertex="1">
          <mxGeometry height="34" width="497" x="778" y="5733" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-106" parent="xVZ0B1wGVQ6wQnNV2vCi-105" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-109" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;JPanel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="31" width="190" x="1595" y="5831" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-110" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-74" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-109" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1778" y="5990" as="sourcePoint" />
            <mxPoint x="1938" y="5990" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-111" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameController" vertex="1">
          <mxGeometry height="34" width="289.5" x="930" y="5652" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-112" parent="xVZ0B1wGVQ6wQnNV2vCi-111" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="289.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-116" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardController" vertex="1">
          <mxGeometry height="34" width="341" x="993" y="5279" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-117" parent="xVZ0B1wGVQ6wQnNV2vCi-116" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-121" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardView" vertex="1">
          <mxGeometry height="34" width="341" x="1239" y="5226" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-125" parent="xVZ0B1wGVQ6wQnNV2vCi-121" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-131" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardEntry" vertex="1">
          <mxGeometry height="34" width="259.5" x="968" y="5159" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-134" parent="xVZ0B1wGVQ6wQnNV2vCi-131" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-136" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-131" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-121" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1126.75" y="4764" as="sourcePoint" />
            <mxPoint x="1260" y="4764" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-137" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationController" vertex="1">
          <mxGeometry height="34" width="341" x="1235" y="5105" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-138" parent="xVZ0B1wGVQ6wQnNV2vCi-137" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-142" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationView" vertex="1">
          <mxGeometry height="34" width="341" x="1633" y="5313" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-148" parent="xVZ0B1wGVQ6wQnNV2vCi-142" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-152" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewManager" vertex="1">
          <mxGeometry height="34" width="341" x="1614" y="5577.000000000001" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-156" parent="xVZ0B1wGVQ6wQnNV2vCi-152" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-162" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewEntry" vertex="1">
          <mxGeometry height="34" width="259.5" x="1741" y="5422" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-165" parent="xVZ0B1wGVQ6wQnNV2vCi-162" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-167" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-162" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-152" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="2014" y="5158" as="sourcePoint" />
            <mxPoint x="2153" y="5036" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-168" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;View&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="52" width="225" x="1358" y="5449" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-169" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="VehicleVisual" vertex="1">
          <mxGeometry height="34" width="497" x="1297" y="5889" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-171" parent="xVZ0B1wGVQ6wQnNV2vCi-169" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-175" parent="WIyWlLk6GJQsqaUBKTNV-1" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=146;height=28;" value="Kapcsolat a modellel" vertex="1">
          <mxGeometry height="109" width="260" x="775" y="5497" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-176" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Controller&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;# owningView: View&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;# model: App&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Controller(view: View, model: App)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ init(): void&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ deinit(): void&lt;/p&gt;" vertex="1">
          <mxGeometry height="140" width="203" x="792" y="2561" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-177" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-176" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="RMrSDmypOkkjGLXtHjAm-106" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1178" y="2651" as="sourcePoint" />
            <mxPoint x="1024" y="2717" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-178" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Controller&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" vertex="1">
          <mxGeometry height="73" width="203" x="1062" y="5417" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-179" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-178" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-168" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="1050.0000000000005" y="5359" as="sourcePoint" />
            <mxPoint x="931" y="5408.577499999999" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-182" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;CrossingType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NORMAL&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BUS_STATION&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NPC_STATION&lt;/p&gt;" vertex="1">
          <mxGeometry height="104" width="190" x="3804" y="5255" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-183" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-207" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-193" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3833.0020396423342" y="4833.99718032837" as="sourcePoint" />
            <mxPoint x="4038.0020396423342" y="4883.499470367431" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-184" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-203" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-198" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3963.0020396423347" y="5040.999470367431" as="sourcePoint" />
            <mxPoint x="4038.0020396423342" y="5090.499470367431" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-185" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-211" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.524;entryY=0.884;entryDx=0;entryDy=0;entryPerimeter=0;" target="xVZ0B1wGVQ6wQnNV2vCi-199" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4290.002039642334" y="5233.000615386963" as="sourcePoint" />
            <mxPoint x="4295.002039642334" y="5193.99947036743" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-186" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;HeadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ NONE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ DRAGON&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ ICEBREAKER&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SALTER&lt;br&gt;+ SPLITTING&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SWEEPER&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ GRAVEL&lt;/p&gt;" vertex="1">
          <mxGeometry height="153" width="190" x="4063" y="5377" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-187" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;RoadType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BRIDGE&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ ROAD&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ TUNNEL&lt;/p&gt;" vertex="1">
          <mxGeometry height="104" width="190" x="3884" y="4838.5" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-188" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;VehicleType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ AUTO&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ SNOWPLOW&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ BUS&lt;/p&gt;" vertex="1">
          <mxGeometry height="99" width="190" x="4342" y="5422" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-189" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-208" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.535;exitY=1.034;exitDx=0;exitDy=0;exitPerimeter=0;" target="xVZ0B1wGVQ6wQnNV2vCi-187" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="3982" y="4773" />
            </Array>
            <mxPoint x="3431.0020396423347" y="4900.99718032837" as="sourcePoint" />
            <mxPoint x="3459" y="4921" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-190" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-204" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-182" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3809.0020396423347" y="5107.999470367431" as="sourcePoint" />
            <mxPoint x="3625" y="5148" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-191" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-211" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-186" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4644.002039642335" y="5416.000615386963" as="sourcePoint" />
            <mxPoint x="4329" y="5254" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-192" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-211" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" target="xVZ0B1wGVQ6wQnNV2vCi-188" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4644.002039642335" y="5294.000615386963" as="sourcePoint" />
            <mxPoint x="4416" y="5212" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-193" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameCanvas" vertex="1">
          <mxGeometry height="161" width="332" x="4105" y="4810" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-194" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- lanes: List&amp;lt;RoadVisual&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-195" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- vehicles: List&amp;lt;VehicleVisual&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="332" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-196" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-197" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="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;whiteSpace=wrap;html=1;" value="+ GameCanvas()" vertex="1">
          <mxGeometry height="26" width="332" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-198" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="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;whiteSpace=wrap;html=1;" value="+ draw(): void" vertex="1">
          <mxGeometry height="26" width="332" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-199" parent="xVZ0B1wGVQ6wQnNV2vCi-193" style="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;whiteSpace=wrap;html=1;" value="+ generateMap(): void" vertex="1">
          <mxGeometry height="23" width="332" y="138" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-200" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="CrossingVisual" vertex="1">
          <mxGeometry height="140" width="256" x="3756" y="4987" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-201" parent="xVZ0B1wGVQ6wQnNV2vCi-200" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;+ x: int&lt;/div&gt;&lt;div&gt;+ y: int&lt;/div&gt;&lt;div&gt;- type: CrossingType&lt;/div&gt;" vertex="1">
          <mxGeometry height="53" width="256" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-202" parent="xVZ0B1wGVQ6wQnNV2vCi-200" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="6" width="256" y="79" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-203" parent="xVZ0B1wGVQ6wQnNV2vCi-200" style="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;whiteSpace=wrap;html=1;" value="+ CrossingVisual(x: int, y: int, t: CrossingType)" vertex="1">
          <mxGeometry height="29" width="256" y="85" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-204" parent="xVZ0B1wGVQ6wQnNV2vCi-200" style="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;whiteSpace=wrap;html=1;" value="+ getColor(): Color" vertex="1">
          <mxGeometry height="26" width="256" y="114" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-205" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RoadVisual" vertex="1">
          <mxGeometry height="86" width="497" x="3978" y="4647" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-206" parent="xVZ0B1wGVQ6wQnNV2vCi-205" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-207" parent="xVZ0B1wGVQ6wQnNV2vCi-205" style="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;whiteSpace=wrap;html=1;" value="+ RoadVisual(k1: CrossingVisual, k2: CrossingVisual, borderColor: Color, t: RoadType)" vertex="1">
          <mxGeometry height="26" width="497" y="34" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-208" parent="xVZ0B1wGVQ6wQnNV2vCi-205" style="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;whiteSpace=wrap;html=1;" value="+ getInnerColor(): Color" vertex="1">
          <mxGeometry height="26" width="497" y="60" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-209" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;JPanel&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="46" width="190" x="4324" y="5050" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-210" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-193" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-209" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4547" y="5067" as="sourcePoint" />
            <mxPoint x="4707" y="5067" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-211" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="VehicleVisual" vertex="1">
          <mxGeometry height="138" width="497" x="4029" y="5117" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-212" parent="xVZ0B1wGVQ6wQnNV2vCi-211" style="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;whiteSpace=wrap;html=1;" value="+ IMGSIZE: int" vertex="1">
          <mxGeometry height="26" width="497" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-213" parent="xVZ0B1wGVQ6wQnNV2vCi-211" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="497" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-214" parent="xVZ0B1wGVQ6wQnNV2vCi-211" style="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;whiteSpace=wrap;html=1;" value="+ VehicleVisual(type: VehicleType, road: RoadVisual, head: HeadType, upgraded: boolean)" vertex="1">
          <mxGeometry height="26" width="497" y="60" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-215" parent="xVZ0B1wGVQ6wQnNV2vCi-211" style="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;whiteSpace=wrap;html=1;" value="- loadImages(): void" vertex="1">
          <mxGeometry height="26" width="497" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-216" parent="xVZ0B1wGVQ6wQnNV2vCi-211" style="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;whiteSpace=wrap;html=1;" value="+ draw(g2: Graphics2D, img: Image, centerX: int, centerY: int, targetSize: int): void&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="497" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-217" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="JDialog" vertex="1">
          <mxGeometry height="52" width="140" x="3108" y="5642" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-218" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-248" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-217" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4314" y="5846" as="sourcePoint" />
            <mxPoint x="4034" y="5703" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-219" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopController" vertex="1">
          <mxGeometry height="294" width="332" x="3390" y="5811" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-220" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- dialog : ShopDialog" vertex="1">
          <mxGeometry height="26" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-221" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- model : App" vertex="1">
          <mxGeometry height="26" width="332" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-222" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- shop : SnowPlowShop" vertex="1">
          <mxGeometry height="26" width="332" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-223" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- currentPlayer : Player" vertex="1">
          <mxGeometry height="26" width="332" y="104" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-224" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="332" y="130" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-225" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="+ ShopController(ShopDialog dialog, App model) : void" vertex="1">
          <mxGeometry height="26" width="332" y="138" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-226" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="+ init() : void" vertex="1">
          <mxGeometry height="26" width="332" y="164" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-227" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="+ open(Player player) : void" vertex="1">
          <mxGeometry height="26" width="332" y="190" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-228" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- refreshItems() : void" vertex="1">
          <mxGeometry height="26" width="332" y="216" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-229" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- handleBuy() : void" vertex="1">
          <mxGeometry height="26" width="332" y="242" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-230" parent="xVZ0B1wGVQ6wQnNV2vCi-219" style="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;whiteSpace=wrap;html=1;" value="- createShpoItemData() : List&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="26" width="332" y="268" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-231" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="App" vertex="1">
          <mxGeometry height="52" width="140" x="3292" y="5692.6900000000005" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-232" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="SnowPlowShop" vertex="1">
          <mxGeometry height="52" width="140" x="3486" y="5692.6900000000005" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-233" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="Player" vertex="1">
          <mxGeometry height="52" width="140" x="3679.5" y="5692.6900000000005" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-234" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-219" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-233" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4234" y="5831" as="sourcePoint" />
            <mxPoint x="3764" y="5770" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-235" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-219" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-231" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3402" y="5770" as="sourcePoint" />
            <mxPoint x="3687" y="5769" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-236" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-219" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-232" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3560" y="5752" as="sourcePoint" />
            <mxPoint x="3845" y="5751" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-237" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ShopItemData" vertex="1">
          <mxGeometry height="242" width="331" x="3396" y="6207" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-238" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="- index : int" vertex="1">
          <mxGeometry height="26" width="331" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-239" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="- name : string" vertex="1">
          <mxGeometry height="26" width="331" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-240" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="- cost : int" vertex="1">
          <mxGeometry height="26" width="331" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-241" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="331" y="104" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-242" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="+ ShopItemData(index int, same string, sot int)" vertex="1">
          <mxGeometry height="26" width="331" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-243" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="+ getIndex() : int" vertex="1">
          <mxGeometry height="26" width="331" y="138" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-244" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="+ getName() : string" vertex="1">
          <mxGeometry height="26" width="331" y="164" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-245" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="+ getCost(): int" vertex="1">
          <mxGeometry height="26" width="331" y="190" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-246" parent="xVZ0B1wGVQ6wQnNV2vCi-237" style="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;whiteSpace=wrap;html=1;" value="+ method(type): type" vertex="1">
          <mxGeometry height="26" width="331" y="216" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-247" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-261" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-238" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3993" y="6157" as="sourcePoint" />
            <mxPoint x="4138" y="6156" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-248" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="&lt;b&gt;ShopDialog&lt;/b&gt;" vertex="1">
          <mxGeometry height="415" width="332" x="2968" y="5899" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-249" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="- itemListModel : DefaultListModel&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="25" width="332" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-250" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="- itemList: JList&amp;lt;ShopItemData&amp;gt;" vertex="1">
          <mxGeometry height="26" width="332" y="51" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-251" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="- playerLabel: JLabel" vertex="1">
          <mxGeometry height="26" width="332" y="77" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-252" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="- pointsLabel: JLabel" vertex="1">
          <mxGeometry height="26" width="332" y="103" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-253" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="- buyButton: JButton" vertex="1">
          <mxGeometry height="26" width="332" y="129" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-254" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ ShopDialog(JRame owner)" vertex="1">
          <mxGeometry height="26" width="332" y="155" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-255" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ showItems (List&amp;lt;ShopItemData&amp;gt; items) : void" vertex="1">
          <mxGeometry height="26" width="332" y="181" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-256" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ setPlayerInfo(String playername, int points) : void" vertex="1">
          <mxGeometry height="26" width="332" y="207" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-257" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ item: attribute" vertex="1">
          <mxGeometry height="26" width="332" y="233" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-258" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ getSelectedItemIndex() : int" vertex="1">
          <mxGeometry height="26" width="332" y="259" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-259" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ setBuyButtonListener (ActionListener listener) : void" vertex="1">
          <mxGeometry height="26" width="332" y="285" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-260" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ setCloseButtonListener (ActionListener listener) : void" vertex="1">
          <mxGeometry height="26" width="332" y="311" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-261" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ errorShower (string message) : void" vertex="1">
          <mxGeometry height="26" width="332" y="337" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-262" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ close() : void" vertex="1">
          <mxGeometry height="26" width="332" y="363" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-263" parent="xVZ0B1wGVQ6wQnNV2vCi-248" style="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;whiteSpace=wrap;html=1;" value="+ open() : void" vertex="1">
          <mxGeometry height="26" width="332" y="389" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-264" edge="1" parent="xVZ0B1wGVQ6wQnNV2vCi-248" source="xVZ0B1wGVQ6wQnNV2vCi-254" style="endArrow=none;html=1;rounded=0;exitX=0.001;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.001;entryY=-0.023;entryDx=0;entryDy=0;entryPerimeter=0;" target="xVZ0B1wGVQ6wQnNV2vCi-254" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="11" y="264" as="sourcePoint" />
            <mxPoint x="61" y="214" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-265" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-226" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-251" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="3743" y="6236" as="sourcePoint" />
            <mxPoint x="3701" y="6345" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-266" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-293" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-283" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4763.006417183255" y="6608.001586383322" as="sourcePoint" />
            <mxPoint x="4858.001199798584" y="6610.996035308837" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-267" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-334" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5126" y="6355" as="sourcePoint" />
            <mxPoint x="5270.998341158353" y="6353.997428072416" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-268" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-278" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-348" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4986.501199798584" y="6509.996035308837" as="sourcePoint" />
            <mxPoint x="4988.001199798584" y="6404.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-269" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-291" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-350" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4598.506417183255" y="6524.001586383322" as="sourcePoint" />
            <mxPoint x="4638" y="6471" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-270" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-310" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.415;exitY=0.958;exitDx=0;exitDy=0;exitPerimeter=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5020.794710404696" y="6055" as="sourcePoint" />
            <mxPoint x="4988.001199798584" y="6304.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-271" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-298" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-310" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4762.002039642335" y="6090.99718032837" as="sourcePoint" />
            <mxPoint x="4850.002039642334" y="6091.997180328369" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-272" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-300" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-350" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4555.002039642334" y="6174.99718032837" as="sourcePoint" />
            <mxPoint x="4638" y="6236.6900000000005" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-273" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-317" style="endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-322" value="">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points" />
            <mxPoint x="5473.502039642334" y="5844.99718032837" as="sourcePoint" />
            <mxPoint x="5450.502039642335" y="5891.99718032837" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-274" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-321" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-350" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <Array as="points">
              <mxPoint x="4506" y="5913" />
              <mxPoint x="4506" y="6358" />
            </Array>
            <mxPoint x="5395.252039642334" y="5678.99718032837" as="sourcePoint" />
            <mxPoint x="4541" y="6297.2675" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-275" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-331" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" value="Extends">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5268.002039642335" y="6237.99718032837" as="sourcePoint" />
            <mxPoint x="5126.001199798584" y="6329.996035308838" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-276" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;App&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;" vertex="1">
          <mxGeometry height="46" width="190" x="4539.5" y="6551" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-277" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-350" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.005;exitY=0.811;exitDx=0;exitDy=0;exitPerimeter=0;" target="xVZ0B1wGVQ6wQnNV2vCi-276" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4517" y="6412.422500000001" as="sourcePoint" />
            <mxPoint x="4791" y="7047" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-278" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameView" vertex="1">
          <mxGeometry height="301" width="166" x="4878" y="6450" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-279" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="- shop: ShopDialog" vertex="1">
          <mxGeometry height="26" width="166" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-280" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="- canvas: GameCanvas" vertex="1">
          <mxGeometry height="26" width="166" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-281" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- shopButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="166" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-282" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- leaderboardButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="166" y="106" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-283" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- exitButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="166" y="134" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-284" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- moveButton: JButton&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="166" y="162" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-285" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- moveDialog: JDialog&lt;/div&gt;" vertex="1">
          <mxGeometry height="28" width="166" y="190" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-286" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="166" y="218" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-287" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="+ GameView()" vertex="1">
          <mxGeometry height="26" width="166" y="226" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-288" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="+ openMoveDialog(): void" vertex="1">
          <mxGeometry height="26" width="166" y="252" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-289" parent="xVZ0B1wGVQ6wQnNV2vCi-278" style="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;whiteSpace=wrap;html=1;" value="+ updateCanvas(): void" vertex="1">
          <mxGeometry height="23" width="166" y="278" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-291" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="GameController" vertex="1">
          <mxGeometry height="112" width="273" x="4576" y="6636" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-292" parent="xVZ0B1wGVQ6wQnNV2vCi-291" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="273" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-293" parent="xVZ0B1wGVQ6wQnNV2vCi-291" style="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;whiteSpace=wrap;html=1;" value="+ GameController(view: GameView, model: App)" vertex="1">
          <mxGeometry height="26" width="273" y="34" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-294" parent="xVZ0B1wGVQ6wQnNV2vCi-291" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="273" y="60" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-295" parent="xVZ0B1wGVQ6wQnNV2vCi-291" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="273" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-296" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardController" vertex="1">
          <mxGeometry height="124" width="276" x="4530" y="6074" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-297" parent="xVZ0B1wGVQ6wQnNV2vCi-296" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="276" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-298" parent="xVZ0B1wGVQ6wQnNV2vCi-296" style="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;whiteSpace=wrap;html=1;" value="+ LeaderboardController(view: LeaderboardView,&lt;div&gt;model: App)&lt;/div&gt;" vertex="1">
          <mxGeometry height="38" width="276" y="34" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-299" parent="xVZ0B1wGVQ6wQnNV2vCi-296" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="276" y="72" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-300" parent="xVZ0B1wGVQ6wQnNV2vCi-296" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="276" y="98" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-301" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardView" vertex="1">
          <mxGeometry height="242" width="297" x="4849" y="5970" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-302" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="- entries: List&amp;lt;LeaderboardEntry&amp;gt;" vertex="1">
          <mxGeometry height="26" width="297" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-303" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="- listContainer: JPanel" vertex="1">
          <mxGeometry height="26" width="297" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-304" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="- exitButton: JButton" vertex="1">
          <mxGeometry height="26" width="297" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-305" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="297" y="104" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-306" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="+ LeaderboardView()" vertex="1">
          <mxGeometry height="26" width="297" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-307" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="+ [STATIC] open(): void" vertex="1">
          <mxGeometry height="26" width="297" y="138" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-308" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="- addEntry(playerName: String, score: int): void" vertex="1">
          <mxGeometry height="26" width="297" y="164" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-309" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="+ renderList(): void" vertex="1">
          <mxGeometry height="26" width="297" y="190" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-310" parent="xVZ0B1wGVQ6wQnNV2vCi-301" style="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;whiteSpace=wrap;html=1;" value="+ setExitButtonListener(listener: ActionListener): void" vertex="1">
          <mxGeometry height="26" width="297" y="216" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-311" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="LeaderboardEntry" vertex="1">
          <mxGeometry height="112" width="259.5" x="4517.25" y="5943" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-312" parent="xVZ0B1wGVQ6wQnNV2vCi-311" style="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;whiteSpace=wrap;html=1;" value="~ name: String" vertex="1">
          <mxGeometry height="26" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-313" parent="xVZ0B1wGVQ6wQnNV2vCi-311" style="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;whiteSpace=wrap;html=1;" value="~ score: int" vertex="1">
          <mxGeometry height="26" width="259.5" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-314" parent="xVZ0B1wGVQ6wQnNV2vCi-311" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-315" parent="xVZ0B1wGVQ6wQnNV2vCi-311" style="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;whiteSpace=wrap;html=1;" value="~ LeaderboardEntry(name: String, score: int)" vertex="1">
          <mxGeometry height="26" width="259.5" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-316" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-313" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-303" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5151" y="5843" as="sourcePoint" />
            <mxPoint x="5311" y="5843" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-317" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationController" vertex="1">
          <mxGeometry height="112" width="341" x="4889" y="5819" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-318" parent="xVZ0B1wGVQ6wQnNV2vCi-317" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="341" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-319" parent="xVZ0B1wGVQ6wQnNV2vCi-317" style="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;whiteSpace=wrap;html=1;" value="+ RegistrationController(view: RegistrationView, model: App)" vertex="1">
          <mxGeometry height="26" width="341" y="34" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-320" parent="xVZ0B1wGVQ6wQnNV2vCi-317" style="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;whiteSpace=wrap;html=1;" value="+ init(): void" vertex="1">
          <mxGeometry height="26" width="341" y="60" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-321" parent="xVZ0B1wGVQ6wQnNV2vCi-317" style="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;whiteSpace=wrap;html=1;" value="+ deinit(): void" vertex="1">
          <mxGeometry height="26" width="341" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-322" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="RegistrationView" vertex="1">
          <mxGeometry height="242" width="294" x="5162" y="5983" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-323" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="- listModel: DefaultListModel&amp;lt;String&amp;gt;" vertex="1">
          <mxGeometry height="26" width="294" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-324" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="- exitButton: JButton" vertex="1">
          <mxGeometry height="26" width="294" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-325" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="- playerList: JList&amp;lt;String&amp;gt;" vertex="1">
          <mxGeometry height="26" width="294" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-326" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- nameField: JTextField&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="294" y="104" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-327" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="&lt;div&gt;- typeCombo: JComboBox&amp;lt;String&amp;gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="26" width="294" y="130" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-328" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="294" y="156" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-329" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="+ RegistrationView()" vertex="1">
          <mxGeometry height="26" width="294" y="164" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-330" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="+ setExitButtonListener(listener: ActionListener): void" vertex="1">
          <mxGeometry height="26" width="294" y="190" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-331" parent="xVZ0B1wGVQ6wQnNV2vCi-322" style="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;whiteSpace=wrap;html=1;" value="- styleButton(btn: JButton, bg: Color): void" vertex="1">
          <mxGeometry height="26" width="294" y="216" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-332" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewManager" vertex="1">
          <mxGeometry height="252" width="185" x="5163" y="6319" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-333" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="- views: Map&amp;lt;String,ViewEntry&amp;gt;" vertex="1">
          <mxGeometry height="26" width="185" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-334" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="- activeViewId: String" vertex="1">
          <mxGeometry height="26" width="185" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-335" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="- instance: ViewManager" vertex="1">
          <mxGeometry height="26" width="185" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-336" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="185" y="104" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-337" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="+ ViewManager()" vertex="1">
          <mxGeometry height="26" width="185" y="112" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-338" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="+ getInstance(): ViewManager" vertex="1">
          <mxGeometry height="26" width="185" y="138" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-339" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="+ addView(id: String, view: View,&lt;div&gt;controller: Controller): void&lt;/div&gt;" vertex="1">
          <mxGeometry height="36" width="185" y="164" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-340" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="+ getView(id: String): View" vertex="1">
          <mxGeometry height="26" width="185" y="200" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-341" parent="xVZ0B1wGVQ6wQnNV2vCi-332" style="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;whiteSpace=wrap;html=1;" value="+ switchTo(id: String): void" vertex="1">
          <mxGeometry height="26" width="185" y="226" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-342" parent="WIyWlLk6GJQsqaUBKTNV-1" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" value="ViewEntry" vertex="1">
          <mxGeometry height="112" width="259.5" x="5072" y="6619" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-343" parent="xVZ0B1wGVQ6wQnNV2vCi-342" style="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;whiteSpace=wrap;html=1;" value="~ view: View" vertex="1">
          <mxGeometry height="26" width="259.5" y="26" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-344" parent="xVZ0B1wGVQ6wQnNV2vCi-342" style="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;whiteSpace=wrap;html=1;" value="~ controller: Controller" vertex="1">
          <mxGeometry height="26" width="259.5" y="52" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-345" parent="xVZ0B1wGVQ6wQnNV2vCi-342" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" value="" vertex="1">
          <mxGeometry height="8" width="259.5" y="78" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-346" parent="xVZ0B1wGVQ6wQnNV2vCi-342" style="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;whiteSpace=wrap;html=1;" value="~ ViewEntry(view: View, controller: Controller)" vertex="1">
          <mxGeometry height="26" width="259.5" y="86" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-347" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-342" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-332" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="5612" y="6124" as="sourcePoint" />
            <mxPoint x="5745" y="6124" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-348" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;View&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ View(title: String, width: int, height: int)&lt;/p&gt;" vertex="1">
          <mxGeometry height="89" width="225" x="4903" y="6305" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-349" parent="WIyWlLk6GJQsqaUBKTNV-1" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=146;height=28;" value="Kapcsolat a modellel" vertex="1">
          <mxGeometry height="109" width="233" x="4510.5" y="6510" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-350" parent="WIyWlLk6GJQsqaUBKTNV-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;Abstract&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Controller&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;# owningView: View&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;# model: App&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ Controller(view: View, model: App)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ init(): void&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ deinit(): void&lt;/p&gt;" vertex="1">
          <mxGeometry height="140" width="203" x="4659.5" y="6284" as="geometry" />
        </mxCell>
        <mxCell id="xVZ0B1wGVQ6wQnNV2vCi-351" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="xVZ0B1wGVQ6wQnNV2vCi-350" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="xVZ0B1wGVQ6wQnNV2vCi-348" value="Use">
          <mxGeometry relative="1" width="160" as="geometry">
            <mxPoint x="4937" y="6372" as="sourcePoint" />
            <mxPoint x="4783" y="6438" as="targetPoint" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
