Merge pull request #1715 from gavin-ts/grid-label-position

custom label positions for grid containers
This commit is contained in:
gavin-ts 2023-11-09 10:07:47 -08:00 committed by GitHub
commit 903313dab9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 22572 additions and 1621 deletions

View file

@ -2,6 +2,7 @@
- ELK now routes `sql_table` edges to the exact columns (ty @landmaj) [#1681](https://github.com/terrastruct/d2/pull/1681) - ELK now routes `sql_table` edges to the exact columns (ty @landmaj) [#1681](https://github.com/terrastruct/d2/pull/1681)
- Adds new unfilled triangle arrowhead. [#1711](https://github.com/terrastruct/d2/pull/1711) - Adds new unfilled triangle arrowhead. [#1711](https://github.com/terrastruct/d2/pull/1711)
- Grid containers can now have custom label positions. [#1715](https://github.com/terrastruct/d2/pull/1715)
#### Improvements 🧹 #### Improvements 🧹

View file

@ -1938,3 +1938,72 @@ func (obj *Object) IsMultiple() bool {
func (obj *Object) Is3D() bool { func (obj *Object) Is3D() bool {
return obj.Style.ThreeDee != nil && obj.Style.ThreeDee.Value == "true" return obj.Style.ThreeDee != nil && obj.Style.ThreeDee.Value == "true"
} }
func (obj *Object) Spacing() (margin, padding geo.Spacing) {
if obj.HasLabel() {
var position label.Position
if obj.LabelPosition != nil {
position = label.FromString(*obj.LabelPosition)
}
var labelWidth, labelHeight float64
if obj.LabelDimensions.Width > 0 {
labelWidth = float64(obj.LabelDimensions.Width) + 2*label.PADDING
}
if obj.LabelDimensions.Height > 0 {
labelHeight = float64(obj.LabelDimensions.Height) + 2*label.PADDING
}
switch position {
case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight:
margin.Top = labelHeight
case label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
margin.Bottom = labelHeight
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
margin.Left = labelWidth
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
margin.Right = labelWidth
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
padding.Top = labelHeight
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
padding.Bottom = labelHeight
case label.InsideMiddleLeft:
padding.Left = labelWidth
case label.InsideMiddleRight:
padding.Right = labelWidth
}
}
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage {
var position label.Position
if obj.IconPosition != nil {
position = label.FromString(*obj.IconPosition)
}
iconSize := float64(d2target.MAX_ICON_SIZE + 2*label.PADDING)
switch position {
case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight:
margin.Top = math.Max(margin.Top, iconSize)
case label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
margin.Bottom = math.Max(margin.Bottom, iconSize)
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
margin.Left = math.Max(margin.Left, iconSize)
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
margin.Right = math.Max(margin.Right, iconSize)
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
padding.Top = math.Max(padding.Top, iconSize)
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
padding.Bottom = math.Max(padding.Bottom, iconSize)
case label.InsideMiddleLeft:
padding.Left = math.Max(padding.Left, iconSize)
case label.InsideMiddleRight:
padding.Right = math.Max(padding.Right, iconSize)
}
}
dx, dy := obj.GetModifierElementAdjustments()
margin.Right += dx
margin.Top += dy
return
}

View file

@ -546,76 +546,6 @@ func inContainer(obj, container *d2graph.Object) *d2graph.Object {
return inContainer(obj.Parent, container) return inContainer(obj.Parent, container)
} }
type spacing struct {
top, bottom, left, right float64
}
func getSpacing(obj *d2graph.Object) (margin, padding spacing) {
if obj.HasLabel() {
var position label.Position
if obj.LabelPosition != nil {
position = label.FromString(*obj.LabelPosition)
} else if len(obj.ChildrenArray) == 0 && obj.HasOutsideBottomLabel() {
position = label.OutsideBottomCenter
}
labelWidth := float64(obj.LabelDimensions.Width) + 2*label.PADDING
labelHeight := float64(obj.LabelDimensions.Height) + 2*label.PADDING
switch position {
case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight:
margin.top = labelHeight
case label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
margin.bottom = labelHeight
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
margin.left = labelWidth
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
margin.right = labelWidth
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
padding.top = labelHeight
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
padding.bottom = labelHeight
case label.InsideMiddleLeft:
padding.left = labelWidth
case label.InsideMiddleRight:
padding.right = labelWidth
}
}
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage {
var position label.Position
if obj.IconPosition != nil {
position = label.FromString(*obj.IconPosition)
}
iconSize := float64(d2target.MAX_ICON_SIZE + 2*label.PADDING)
switch position {
case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight:
margin.top = math.Max(margin.top, iconSize)
case label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
margin.bottom = math.Max(margin.bottom, iconSize)
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
margin.left = math.Max(margin.left, iconSize)
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
margin.right = math.Max(margin.right, iconSize)
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
padding.top = math.Max(padding.top, iconSize)
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
padding.bottom = math.Max(padding.bottom, iconSize)
case label.InsideMiddleLeft:
padding.left = math.Max(padding.left, iconSize)
case label.InsideMiddleRight:
padding.right = math.Max(padding.right, iconSize)
}
}
dx, dy := obj.GetModifierElementAdjustments()
margin.right += dx
margin.top += dy
return
}
func positionLabelsIcons(obj *d2graph.Object) { func positionLabelsIcons(obj *d2graph.Object) {
if obj.Icon != nil && obj.IconPosition == nil { if obj.Icon != nil && obj.IconPosition == nil {
if len(obj.ChildrenArray) > 0 { if len(obj.ChildrenArray) > 0 {
@ -1136,16 +1066,16 @@ func adjustRankSpacing(g *d2graph.Graph, rankSep float64, isHorizontal bool) {
for len(startingParents) > 0 { for len(startingParents) > 0 {
var ancestors []*d2graph.Object var ancestors []*d2graph.Object
for _, parent := range startingParents { for _, parent := range startingParents {
_, padding := getSpacing(parent) _, padding := parent.Spacing()
if _, has := startingAncestorPositions[parent]; !has { if _, has := startingAncestorPositions[parent]; !has {
startingAncestorPositions[parent] = math.Inf(1) startingAncestorPositions[parent] = math.Inf(1)
} }
var startPosition float64 var startPosition float64
if isHorizontal { if isHorizontal {
paddingIncrease := math.Max(0, padding.left-rankSep/2) paddingIncrease := math.Max(0, padding.Left-rankSep/2)
startPosition = parent.TopLeft.X - paddingIncrease startPosition = parent.TopLeft.X - paddingIncrease
} else { } else {
paddingIncrease := math.Max(0, padding.top-rankSep/2) paddingIncrease := math.Max(0, padding.Top-rankSep/2)
startPosition = parent.TopLeft.Y - paddingIncrease startPosition = parent.TopLeft.Y - paddingIncrease
} }
startingAncestorPositions[parent] = math.Min(startingAncestorPositions[parent], startPosition) startingAncestorPositions[parent] = math.Min(startingAncestorPositions[parent], startPosition)
@ -1159,11 +1089,11 @@ func adjustRankSpacing(g *d2graph.Graph, rankSep float64, isHorizontal bool) {
continue continue
} }
} }
margin, _ := getSpacing(child) margin, _ := child.Spacing()
if isHorizontal { if isHorizontal {
startPosition = child.TopLeft.X - margin.left - padding.left startPosition = child.TopLeft.X - margin.Left - padding.Left
} else { } else {
startPosition = child.TopLeft.Y - margin.top - padding.top startPosition = child.TopLeft.Y - margin.Top - padding.Top
} }
startingAncestorPositions[parent] = math.Min(startingAncestorPositions[parent], startPosition) startingAncestorPositions[parent] = math.Min(startingAncestorPositions[parent], startPosition)
} }
@ -1178,15 +1108,15 @@ func adjustRankSpacing(g *d2graph.Graph, rankSep float64, isHorizontal bool) {
for len(endingParents) > 0 { for len(endingParents) > 0 {
var ancestors []*d2graph.Object var ancestors []*d2graph.Object
for _, parent := range endingParents { for _, parent := range endingParents {
_, padding := getSpacing(parent) _, padding := parent.Spacing()
if _, has := endingAncestorPositions[parent]; !has { if _, has := endingAncestorPositions[parent]; !has {
endingAncestorPositions[parent] = math.Inf(-1) endingAncestorPositions[parent] = math.Inf(-1)
} }
var endPosition float64 var endPosition float64
if isHorizontal { if isHorizontal {
endPosition = parent.TopLeft.X + parent.Width + padding.right - rankSep/2. endPosition = parent.TopLeft.X + parent.Width + padding.Right - rankSep/2.
} else { } else {
endPosition = parent.TopLeft.Y + parent.Height + padding.bottom - rankSep/2. endPosition = parent.TopLeft.Y + parent.Height + padding.Bottom - rankSep/2.
} }
endingAncestorPositions[parent] = math.Max(endingAncestorPositions[parent], endPosition) endingAncestorPositions[parent] = math.Max(endingAncestorPositions[parent], endPosition)
@ -1200,12 +1130,12 @@ func adjustRankSpacing(g *d2graph.Graph, rankSep float64, isHorizontal bool) {
continue continue
} }
} }
margin, _ := getSpacing(child) margin, _ := child.Spacing()
if isHorizontal { if isHorizontal {
endPosition = child.TopLeft.X + child.Width + margin.right + padding.right endPosition = child.TopLeft.X + child.Width + margin.Right + padding.Right
} else { } else {
endPosition = child.TopLeft.Y + child.Height + margin.bottom + padding.bottom endPosition = child.TopLeft.Y + child.Height + margin.Bottom + padding.Bottom
} }
endingAncestorPositions[parent] = math.Max(endingAncestorPositions[parent], endPosition) endingAncestorPositions[parent] = math.Max(endingAncestorPositions[parent], endPosition)
} }
@ -1309,60 +1239,60 @@ func adjustCrossRankSpacing(g *d2graph.Graph, rankSep float64, isHorizontal bool
if obj.IsGridDiagram() { if obj.IsGridDiagram() {
continue continue
} }
margin, padding := getSpacing(obj) margin, padding := obj.Spacing()
if !isHorizontal { if !isHorizontal {
if prevShift, has := prevMarginBottom[obj]; has { if prevShift, has := prevMarginBottom[obj]; has {
margin.bottom -= prevShift margin.Bottom -= prevShift
} }
if margin.bottom > 0 { if margin.Bottom > 0 {
increased := shiftReachableDown(g, obj, obj.TopLeft.Y+obj.Height, margin.bottom, isHorizontal, true) increased := shiftReachableDown(g, obj, obj.TopLeft.Y+obj.Height, margin.Bottom, isHorizontal, true)
for o := range increased { for o := range increased {
prevMarginBottom[o] = math.Max(prevMarginBottom[o], margin.bottom) prevMarginBottom[o] = math.Max(prevMarginBottom[o], margin.Bottom)
} }
} }
if padding.bottom > 0 { if padding.Bottom > 0 {
shiftReachableDown(g, obj, obj.TopLeft.Y+obj.Height, padding.bottom, isHorizontal, false) shiftReachableDown(g, obj, obj.TopLeft.Y+obj.Height, padding.Bottom, isHorizontal, false)
obj.Height += padding.bottom obj.Height += padding.Bottom
} }
if prevShift, has := prevMarginTop[obj]; has { if prevShift, has := prevMarginTop[obj]; has {
margin.top -= prevShift margin.Top -= prevShift
} }
if margin.top > 0 { if margin.Top > 0 {
increased := shiftReachableDown(g, obj, obj.TopLeft.Y, margin.top, isHorizontal, true) increased := shiftReachableDown(g, obj, obj.TopLeft.Y, margin.Top, isHorizontal, true)
for o := range increased { for o := range increased {
prevMarginTop[o] = math.Max(prevMarginTop[o], margin.top) prevMarginTop[o] = math.Max(prevMarginTop[o], margin.Top)
} }
} }
if padding.top > 0 { if padding.Top > 0 {
shiftReachableDown(g, obj, obj.TopLeft.Y, padding.top, isHorizontal, false) shiftReachableDown(g, obj, obj.TopLeft.Y, padding.Top, isHorizontal, false)
obj.Height += padding.top obj.Height += padding.Top
} }
} else { } else {
if prevShift, has := prevMarginRight[obj]; has { if prevShift, has := prevMarginRight[obj]; has {
margin.right -= prevShift margin.Right -= prevShift
} }
if margin.right > 0 { if margin.Right > 0 {
increased := shiftReachableDown(g, obj, obj.TopLeft.X+obj.Width, margin.right, isHorizontal, true) increased := shiftReachableDown(g, obj, obj.TopLeft.X+obj.Width, margin.Right, isHorizontal, true)
for o := range increased { for o := range increased {
prevMarginRight[o] = math.Max(prevMarginRight[o], margin.right) prevMarginRight[o] = math.Max(prevMarginRight[o], margin.Right)
} }
} }
if padding.right > 0 { if padding.Right > 0 {
shiftReachableDown(g, obj, obj.TopLeft.X+obj.Width, padding.right, isHorizontal, false) shiftReachableDown(g, obj, obj.TopLeft.X+obj.Width, padding.Right, isHorizontal, false)
obj.Width += padding.right obj.Width += padding.Right
} }
if prevShift, has := prevMarginLeft[obj]; has { if prevShift, has := prevMarginLeft[obj]; has {
margin.left -= prevShift margin.Left -= prevShift
} }
if margin.left > 0 { if margin.Left > 0 {
increased := shiftReachableDown(g, obj, obj.TopLeft.X, margin.left, isHorizontal, true) increased := shiftReachableDown(g, obj, obj.TopLeft.X, margin.Left, isHorizontal, true)
for o := range increased { for o := range increased {
prevMarginLeft[o] = math.Max(prevMarginLeft[o], margin.left) prevMarginLeft[o] = math.Max(prevMarginLeft[o], margin.Left)
} }
} }
if padding.left > 0 { if padding.Left > 0 {
shiftReachableDown(g, obj, obj.TopLeft.X, padding.left, isHorizontal, false) shiftReachableDown(g, obj, obj.TopLeft.X, padding.Left, isHorizontal, false)
obj.Width += padding.left obj.Width += padding.Left
} }
} }
} }
@ -1387,11 +1317,11 @@ func fitPadding(obj *d2graph.Object) {
// we will compute a perfectly fit innerBox merging our padding with children's margin, // we will compute a perfectly fit innerBox merging our padding with children's margin,
// but we need to add padding and margin together if an outside child label will overlap with our inside label // but we need to add padding and margin together if an outside child label will overlap with our inside label
_, padding := getSpacing(obj) _, padding := obj.Spacing()
padding.top = math.Max(padding.top, DEFAULT_PADDING) padding.Top = math.Max(padding.Top, DEFAULT_PADDING)
padding.bottom = math.Max(padding.bottom, DEFAULT_PADDING) padding.Bottom = math.Max(padding.Bottom, DEFAULT_PADDING)
padding.left = math.Max(padding.left, DEFAULT_PADDING) padding.Left = math.Max(padding.Left, DEFAULT_PADDING)
padding.right = math.Max(padding.right, DEFAULT_PADDING) padding.Right = math.Max(padding.Right, DEFAULT_PADDING)
// where we are (current*) vs where we want to fit each side to (inner*) // where we are (current*) vs where we want to fit each side to (inner*)
currentTop := obj.TopLeft.Y currentTop := obj.TopLeft.Y
@ -1435,7 +1365,7 @@ func fitPadding(obj *d2graph.Object) {
// update the inner positions for children's margin and collect the outside boxes that we cannot overlap with // update the inner positions for children's margin and collect the outside boxes that we cannot overlap with
var innerBoxes []geo.Box var innerBoxes []geo.Box
for _, child := range obj.ChildrenArray { for _, child := range obj.ChildrenArray {
margin, _ := getSpacing(child) margin, _ := child.Spacing()
dx, dy := child.GetModifierElementAdjustments() dx, dy := child.GetModifierElementAdjustments()
if labelBox != nil || iconBox != nil { if labelBox != nil || iconBox != nil {
@ -1465,10 +1395,10 @@ func fitPadding(obj *d2graph.Object) {
} }
} }
innerTop = math.Min(innerTop, child.TopLeft.Y-dy-math.Max(margin.top, padding.top)) innerTop = math.Min(innerTop, child.TopLeft.Y-dy-math.Max(margin.Top, padding.Top))
innerBottom = math.Max(innerBottom, child.TopLeft.Y+child.Height+math.Max(margin.bottom, padding.bottom)) innerBottom = math.Max(innerBottom, child.TopLeft.Y+child.Height+math.Max(margin.Bottom, padding.Bottom))
innerLeft = math.Min(innerLeft, child.TopLeft.X-math.Max(margin.left, padding.left)) innerLeft = math.Min(innerLeft, child.TopLeft.X-math.Max(margin.Left, padding.Left))
innerRight = math.Max(innerRight, child.TopLeft.X+child.Width+dx+math.Max(margin.right, padding.right)) innerRight = math.Max(innerRight, child.TopLeft.X+child.Width+dx+math.Max(margin.Right, padding.Right))
} }
// collect edge label boxes and update inner box for internal edges // collect edge label boxes and update inner box for internal edges
@ -1490,16 +1420,16 @@ func fitPadding(obj *d2graph.Object) {
innerBoxes = append(innerBoxes, geo.Box{TopLeft: point, Width: labelWidth, Height: labelHeight}) innerBoxes = append(innerBoxes, geo.Box{TopLeft: point, Width: labelWidth, Height: labelHeight})
} }
innerTop = math.Min(innerTop, point.Y-padding.top) innerTop = math.Min(innerTop, point.Y-padding.Top)
innerBottom = math.Max(innerBottom, point.Y+labelHeight+padding.bottom) innerBottom = math.Max(innerBottom, point.Y+labelHeight+padding.Bottom)
innerLeft = math.Min(innerLeft, point.X-padding.left) innerLeft = math.Min(innerLeft, point.X-padding.Left)
innerRight = math.Max(innerRight, point.X+labelWidth+padding.right) innerRight = math.Max(innerRight, point.X+labelWidth+padding.Right)
} }
for _, point := range edge.Route { for _, point := range edge.Route {
innerTop = math.Min(innerTop, point.Y-padding.top) innerTop = math.Min(innerTop, point.Y-padding.Top)
innerBottom = math.Max(innerBottom, point.Y+padding.bottom) innerBottom = math.Max(innerBottom, point.Y+padding.Bottom)
innerLeft = math.Min(innerLeft, point.X-padding.left) innerLeft = math.Min(innerLeft, point.X-padding.Left)
innerRight = math.Max(innerRight, point.X+padding.right) innerRight = math.Max(innerRight, point.X+padding.Right)
} }
} }

View file

@ -30,6 +30,13 @@ func Layout(ctx context.Context, g *d2graph.Graph) error {
return err return err
} }
if obj.HasLabel() && obj.LabelPosition == nil {
obj.LabelPosition = go2.Pointer(label.InsideTopCenter.String())
}
if obj.Icon != nil && obj.IconPosition == nil {
obj.IconPosition = go2.Pointer(label.InsideTopLeft.String())
}
if obj.Box != nil { if obj.Box != nil {
// CONTAINER_PADDING is default, but use gap value if set // CONTAINER_PADDING is default, but use gap value if set
horizontalPadding, verticalPadding := CONTAINER_PADDING, CONTAINER_PADDING horizontalPadding, verticalPadding := CONTAINER_PADDING, CONTAINER_PADDING
@ -50,37 +57,85 @@ func Layout(ctx context.Context, g *d2graph.Graph) error {
gd.shift(innerBox.TopLeft.X, innerBox.TopLeft.Y) gd.shift(innerBox.TopLeft.X, innerBox.TopLeft.Y)
} }
var labelPosition, iconPosition label.Position
if obj.LabelPosition != nil {
labelPosition = label.FromString(*obj.LabelPosition)
}
if obj.IconPosition != nil {
iconPosition = label.FromString(*obj.IconPosition)
}
// compute how much space the label and icon occupy // compute how much space the label and icon occupy
var occupiedWidth, occupiedHeight float64 _, padding := obj.Spacing()
if obj.Icon != nil {
iconSpace := float64(d2target.MAX_ICON_SIZE + 2*label.PADDING) var labelWidth, labelHeight float64
occupiedWidth = iconSpace if obj.LabelDimensions.Width > 0 {
occupiedHeight = iconSpace labelWidth = float64(obj.LabelDimensions.Width) + 2*label.PADDING
}
if obj.LabelDimensions.Height > 0 {
labelHeight = float64(obj.LabelDimensions.Height) + 2*label.PADDING
} }
var dx, dy float64 var dx, dy float64
if obj.LabelDimensions.Height != 0 { if labelWidth > 0 {
occupiedHeight = math.Max( switch labelPosition {
occupiedHeight, case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight,
float64(obj.LabelDimensions.Height)+2*label.PADDING, label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight,
) label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight,
label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
overflow := labelWidth - (obj.Width - float64(2*horizontalPadding))
if overflow > 0 {
padding.Left += overflow / 2
padding.Right += overflow / 2
}
}
}
if labelHeight > 0 {
switch labelPosition {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom,
label.InsideMiddleLeft, label.InsideMiddleCenter, label.InsideMiddleRight,
label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
overflow := labelHeight - (obj.Height - float64(2*verticalPadding))
if overflow > 0 {
padding.Top += overflow / 2
padding.Bottom += overflow / 2
} }
if obj.LabelDimensions.Width != 0 {
// . ├────┤───────├────┤
// . icon label icon
// with an icon in top left we need 2x the space to fit the label in the center
occupiedWidth *= 2
occupiedWidth += float64(obj.LabelDimensions.Width) + 2*label.PADDING
if occupiedWidth > obj.Width {
dx = (occupiedWidth - obj.Width) / 2
obj.Width = occupiedWidth
} }
} }
if occupiedHeight > float64(verticalPadding) { // configure spacing for default label+icon
// if the label doesn't fit within the padding, we need to add more if iconPosition == label.InsideTopLeft && labelPosition == label.InsideTopCenter {
dy = occupiedHeight - float64(verticalPadding) // . ├────┤───────├────┤
obj.Height += dy // . icon label icon
// with an icon in top left we need 2x the space to fit the label in the center
iconSize := float64(d2target.MAX_ICON_SIZE) + 2*label.PADDING
padding.Left = math.Max(padding.Left, iconSize)
padding.Right = math.Max(padding.Right, iconSize)
minWidth := 2*iconSize + float64(obj.LabelDimensions.Width) + 2*label.PADDING
overflow := minWidth - (obj.Width - float64(2*horizontalPadding))
if overflow > 0 {
padding.Left = math.Max(padding.Left, overflow/2)
padding.Right = math.Max(padding.Right, overflow/2)
}
}
overflowTop := padding.Top - float64(verticalPadding)
if overflowTop > 0 {
obj.Height += overflowTop
dy += overflowTop
}
overflowBottom := padding.Bottom - float64(verticalPadding)
if overflowBottom > 0 {
obj.Height += overflowBottom
}
overflowLeft := padding.Left - float64(horizontalPadding)
if overflowLeft > 0 {
obj.Width += overflowLeft
dx += overflowLeft
}
overflowRight := padding.Right - float64(horizontalPadding)
if overflowRight > 0 {
obj.Width += overflowRight
} }
// we need to center children if we have to expand to fit the container label // we need to center children if we have to expand to fit the container label
@ -89,13 +144,6 @@ func Layout(ctx context.Context, g *d2graph.Graph) error {
} }
} }
if obj.HasLabel() {
obj.LabelPosition = go2.Pointer(label.InsideTopCenter.String())
}
if obj.Icon != nil {
obj.IconPosition = go2.Pointer(label.InsideTopLeft.String())
}
// simple straight line edge routing between grid objects // simple straight line edge routing between grid objects
for _, e := range g.Edges { for _, e := range g.Edges {
if !e.Src.Parent.IsDescendantOf(obj) && !e.Dst.Parent.IsDescendantOf(obj) { if !e.Src.Parent.IsDescendantOf(obj) && !e.Dst.Parent.IsDescendantOf(obj) {
@ -119,8 +167,6 @@ func Layout(ctx context.Context, g *d2graph.Graph) error {
g.Root.TopLeft = geo.NewPoint(0, 0) g.Root.TopLeft = geo.NewPoint(0, 0)
} }
obj.LabelPosition = go2.Pointer(label.InsideTopCenter.String())
if g.RootLevel > 0 { if g.RootLevel > 0 {
horizontalPadding, verticalPadding := CONTAINER_PADDING, CONTAINER_PADDING horizontalPadding, verticalPadding := CONTAINER_PADDING, CONTAINER_PADDING
if obj.GridGap != nil || obj.HorizontalGap != nil { if obj.GridGap != nil || obj.HorizontalGap != nil {

View file

@ -305,6 +305,8 @@ func ExtractSubgraph(container *d2graph.Object, includeSelf bool) (nestedGraph *
} }
nestedGraph.Root.Attributes = container.Attributes nestedGraph.Root.Attributes = container.Attributes
nestedGraph.Root.Box = &geo.Box{} nestedGraph.Root.Box = &geo.Box{}
nestedGraph.Root.LabelPosition = container.LabelPosition
nestedGraph.Root.IconPosition = container.IconPosition
isNestedObject := func(obj *d2graph.Object) bool { isNestedObject := func(obj *d2graph.Object) bool {
if includeSelf { if includeSelf {

View file

@ -2869,6 +2869,7 @@ y: profits {
loadFromFile(t, "grid_edge_across_cell"), loadFromFile(t, "grid_edge_across_cell"),
loadFromFile(t, "nesting_power"), loadFromFile(t, "nesting_power"),
loadFromFile(t, "unfilled_triangle"), loadFromFile(t, "unfilled_triangle"),
loadFromFile(t, "grid_label_positions"),
} }
runa(t, tcs) runa(t, tcs)

View file

@ -0,0 +1,154 @@
vars: {
grid: {
grid-rows: 2
grid-columns: 5
a
b
c
d
e
f
g
h
i
j
grid-gap: 0
}
}
direction: down
**.blank*: {
label: ""
style: {
stroke: transparent
fill: transparent
}
}
blank*: {
label: ""
style: {
stroke: transparent
fill: transparent
}
}
blank_ot -> blank_t -> blank_c -> blank_b -> blank_ob
blank_ot: {
blank1
OutsideTopLeft: {
label.near: outside-top-left
...${grid}
}
OutsideTopCenter: {
label.near: outside-top-center
...${grid}
}
OutsideTopRight: {
label.near: outside-top-right
...${grid}
}
blank2
}
blank_t: {
OutsideLeftTop: {
label.near: outside-left-top
...${grid}
}
TopLeft: {
label.near: top-left
...${grid}
}
TopCenter: {
label.near: top-center
...${grid}
}
TopRight: {
label.near: top-right
...${grid}
}
OutsideRightTop: {
label.near: outside-right-top
...${grid}
}
}
blank_c: {
OutsideLeftCenter: {
label.near: outside-left-center
...${grid}
}
CenterLeft: {
label.near: center-left
...${grid}
}
CenterCenter: {
label.near: center-center
...${grid}
}
CenterRight: {
label.near: center-right
...${grid}
}
OutsideRightCenter: {
label.near: outside-right-center
...${grid}
}
}
blank_b: {
OutsideLeftBottom: {
label.near: outside-left-bottom
...${grid}
}
BottomLeft: {
label.near: bottom-left
...${grid}
}
BottomCenter: {
label.near: bottom-center
...${grid}
}
BottomRight: {
label.near: bottom-right
...${grid}
}
OutsideRightBottom: {
label.near: outside-right-bottom
...${grid}
}
}
blank_ob: {
blank3
OutsideBottomLeft: {
label.near: outside-bottom-left
...${grid}
}
OutsideBottomCenter: {
label.near: outside-bottom-center
...${grid}
}
OutsideBottomRight: {
label.near: outside-bottom-right
...${grid}
}
blank4
}

View file

@ -40,7 +40,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 297 200"><svg id="d2-svg" class="d2-3501266100" width="297" height="200" viewBox="-1 -1 297 200"><rect x="-1.000000" y="-1.000000" width="297.000000" height="200.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[ <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 297 200"><svg id="d2-svg" class="d2-3034358831" width="297" height="200" viewBox="-1 -1 297 200"><rect x="-1.000000" y="-1.000000" width="297.000000" height="200.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3501266100 .text-bold { .d2-3034358831 .text-bold {
font-family: "d2-3501266100-font-bold"; font-family: "d2-3034358831-font-bold";
} }
@font-face { @font-face {
font-family: d2-3501266100-font-bold; font-family: d2-3034358831-font-bold;
src: url("data:application/font-woff;base64,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"); src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape { }]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision; shape-rendering: geometricPrecision;
@ -18,78 +18,78 @@
opacity: 0.5; opacity: 0.5;
} }
.d2-3501266100 .fill-N1{fill:#0A0F25;} .d2-3034358831 .fill-N1{fill:#0A0F25;}
.d2-3501266100 .fill-N2{fill:#676C7E;} .d2-3034358831 .fill-N2{fill:#676C7E;}
.d2-3501266100 .fill-N3{fill:#9499AB;} .d2-3034358831 .fill-N3{fill:#9499AB;}
.d2-3501266100 .fill-N4{fill:#CFD2DD;} .d2-3034358831 .fill-N4{fill:#CFD2DD;}
.d2-3501266100 .fill-N5{fill:#DEE1EB;} .d2-3034358831 .fill-N5{fill:#DEE1EB;}
.d2-3501266100 .fill-N6{fill:#EEF1F8;} .d2-3034358831 .fill-N6{fill:#EEF1F8;}
.d2-3501266100 .fill-N7{fill:#FFFFFF;} .d2-3034358831 .fill-N7{fill:#FFFFFF;}
.d2-3501266100 .fill-B1{fill:#0D32B2;} .d2-3034358831 .fill-B1{fill:#0D32B2;}
.d2-3501266100 .fill-B2{fill:#0D32B2;} .d2-3034358831 .fill-B2{fill:#0D32B2;}
.d2-3501266100 .fill-B3{fill:#E3E9FD;} .d2-3034358831 .fill-B3{fill:#E3E9FD;}
.d2-3501266100 .fill-B4{fill:#E3E9FD;} .d2-3034358831 .fill-B4{fill:#E3E9FD;}
.d2-3501266100 .fill-B5{fill:#EDF0FD;} .d2-3034358831 .fill-B5{fill:#EDF0FD;}
.d2-3501266100 .fill-B6{fill:#F7F8FE;} .d2-3034358831 .fill-B6{fill:#F7F8FE;}
.d2-3501266100 .fill-AA2{fill:#4A6FF3;} .d2-3034358831 .fill-AA2{fill:#4A6FF3;}
.d2-3501266100 .fill-AA4{fill:#EDF0FD;} .d2-3034358831 .fill-AA4{fill:#EDF0FD;}
.d2-3501266100 .fill-AA5{fill:#F7F8FE;} .d2-3034358831 .fill-AA5{fill:#F7F8FE;}
.d2-3501266100 .fill-AB4{fill:#EDF0FD;} .d2-3034358831 .fill-AB4{fill:#EDF0FD;}
.d2-3501266100 .fill-AB5{fill:#F7F8FE;} .d2-3034358831 .fill-AB5{fill:#F7F8FE;}
.d2-3501266100 .stroke-N1{stroke:#0A0F25;} .d2-3034358831 .stroke-N1{stroke:#0A0F25;}
.d2-3501266100 .stroke-N2{stroke:#676C7E;} .d2-3034358831 .stroke-N2{stroke:#676C7E;}
.d2-3501266100 .stroke-N3{stroke:#9499AB;} .d2-3034358831 .stroke-N3{stroke:#9499AB;}
.d2-3501266100 .stroke-N4{stroke:#CFD2DD;} .d2-3034358831 .stroke-N4{stroke:#CFD2DD;}
.d2-3501266100 .stroke-N5{stroke:#DEE1EB;} .d2-3034358831 .stroke-N5{stroke:#DEE1EB;}
.d2-3501266100 .stroke-N6{stroke:#EEF1F8;} .d2-3034358831 .stroke-N6{stroke:#EEF1F8;}
.d2-3501266100 .stroke-N7{stroke:#FFFFFF;} .d2-3034358831 .stroke-N7{stroke:#FFFFFF;}
.d2-3501266100 .stroke-B1{stroke:#0D32B2;} .d2-3034358831 .stroke-B1{stroke:#0D32B2;}
.d2-3501266100 .stroke-B2{stroke:#0D32B2;} .d2-3034358831 .stroke-B2{stroke:#0D32B2;}
.d2-3501266100 .stroke-B3{stroke:#E3E9FD;} .d2-3034358831 .stroke-B3{stroke:#E3E9FD;}
.d2-3501266100 .stroke-B4{stroke:#E3E9FD;} .d2-3034358831 .stroke-B4{stroke:#E3E9FD;}
.d2-3501266100 .stroke-B5{stroke:#EDF0FD;} .d2-3034358831 .stroke-B5{stroke:#EDF0FD;}
.d2-3501266100 .stroke-B6{stroke:#F7F8FE;} .d2-3034358831 .stroke-B6{stroke:#F7F8FE;}
.d2-3501266100 .stroke-AA2{stroke:#4A6FF3;} .d2-3034358831 .stroke-AA2{stroke:#4A6FF3;}
.d2-3501266100 .stroke-AA4{stroke:#EDF0FD;} .d2-3034358831 .stroke-AA4{stroke:#EDF0FD;}
.d2-3501266100 .stroke-AA5{stroke:#F7F8FE;} .d2-3034358831 .stroke-AA5{stroke:#F7F8FE;}
.d2-3501266100 .stroke-AB4{stroke:#EDF0FD;} .d2-3034358831 .stroke-AB4{stroke:#EDF0FD;}
.d2-3501266100 .stroke-AB5{stroke:#F7F8FE;} .d2-3034358831 .stroke-AB5{stroke:#F7F8FE;}
.d2-3501266100 .background-color-N1{background-color:#0A0F25;} .d2-3034358831 .background-color-N1{background-color:#0A0F25;}
.d2-3501266100 .background-color-N2{background-color:#676C7E;} .d2-3034358831 .background-color-N2{background-color:#676C7E;}
.d2-3501266100 .background-color-N3{background-color:#9499AB;} .d2-3034358831 .background-color-N3{background-color:#9499AB;}
.d2-3501266100 .background-color-N4{background-color:#CFD2DD;} .d2-3034358831 .background-color-N4{background-color:#CFD2DD;}
.d2-3501266100 .background-color-N5{background-color:#DEE1EB;} .d2-3034358831 .background-color-N5{background-color:#DEE1EB;}
.d2-3501266100 .background-color-N6{background-color:#EEF1F8;} .d2-3034358831 .background-color-N6{background-color:#EEF1F8;}
.d2-3501266100 .background-color-N7{background-color:#FFFFFF;} .d2-3034358831 .background-color-N7{background-color:#FFFFFF;}
.d2-3501266100 .background-color-B1{background-color:#0D32B2;} .d2-3034358831 .background-color-B1{background-color:#0D32B2;}
.d2-3501266100 .background-color-B2{background-color:#0D32B2;} .d2-3034358831 .background-color-B2{background-color:#0D32B2;}
.d2-3501266100 .background-color-B3{background-color:#E3E9FD;} .d2-3034358831 .background-color-B3{background-color:#E3E9FD;}
.d2-3501266100 .background-color-B4{background-color:#E3E9FD;} .d2-3034358831 .background-color-B4{background-color:#E3E9FD;}
.d2-3501266100 .background-color-B5{background-color:#EDF0FD;} .d2-3034358831 .background-color-B5{background-color:#EDF0FD;}
.d2-3501266100 .background-color-B6{background-color:#F7F8FE;} .d2-3034358831 .background-color-B6{background-color:#F7F8FE;}
.d2-3501266100 .background-color-AA2{background-color:#4A6FF3;} .d2-3034358831 .background-color-AA2{background-color:#4A6FF3;}
.d2-3501266100 .background-color-AA4{background-color:#EDF0FD;} .d2-3034358831 .background-color-AA4{background-color:#EDF0FD;}
.d2-3501266100 .background-color-AA5{background-color:#F7F8FE;} .d2-3034358831 .background-color-AA5{background-color:#F7F8FE;}
.d2-3501266100 .background-color-AB4{background-color:#EDF0FD;} .d2-3034358831 .background-color-AB4{background-color:#EDF0FD;}
.d2-3501266100 .background-color-AB5{background-color:#F7F8FE;} .d2-3034358831 .background-color-AB5{background-color:#F7F8FE;}
.d2-3501266100 .color-N1{color:#0A0F25;} .d2-3034358831 .color-N1{color:#0A0F25;}
.d2-3501266100 .color-N2{color:#676C7E;} .d2-3034358831 .color-N2{color:#676C7E;}
.d2-3501266100 .color-N3{color:#9499AB;} .d2-3034358831 .color-N3{color:#9499AB;}
.d2-3501266100 .color-N4{color:#CFD2DD;} .d2-3034358831 .color-N4{color:#CFD2DD;}
.d2-3501266100 .color-N5{color:#DEE1EB;} .d2-3034358831 .color-N5{color:#DEE1EB;}
.d2-3501266100 .color-N6{color:#EEF1F8;} .d2-3034358831 .color-N6{color:#EEF1F8;}
.d2-3501266100 .color-N7{color:#FFFFFF;} .d2-3034358831 .color-N7{color:#FFFFFF;}
.d2-3501266100 .color-B1{color:#0D32B2;} .d2-3034358831 .color-B1{color:#0D32B2;}
.d2-3501266100 .color-B2{color:#0D32B2;} .d2-3034358831 .color-B2{color:#0D32B2;}
.d2-3501266100 .color-B3{color:#E3E9FD;} .d2-3034358831 .color-B3{color:#E3E9FD;}
.d2-3501266100 .color-B4{color:#E3E9FD;} .d2-3034358831 .color-B4{color:#E3E9FD;}
.d2-3501266100 .color-B5{color:#EDF0FD;} .d2-3034358831 .color-B5{color:#EDF0FD;}
.d2-3501266100 .color-B6{color:#F7F8FE;} .d2-3034358831 .color-B6{color:#F7F8FE;}
.d2-3501266100 .color-AA2{color:#4A6FF3;} .d2-3034358831 .color-AA2{color:#4A6FF3;}
.d2-3501266100 .color-AA4{color:#EDF0FD;} .d2-3034358831 .color-AA4{color:#EDF0FD;}
.d2-3501266100 .color-AA5{color:#F7F8FE;} .d2-3034358831 .color-AA5{color:#F7F8FE;}
.d2-3501266100 .color-AB4{color:#EDF0FD;} .d2-3034358831 .color-AB4{color:#EDF0FD;}
.d2-3501266100 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="0.000000" y="0.000000" width="295.000000" height="198.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g></g><g id="grid.first"><g class="shape" ><rect x="100.000000" y="0.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">first</text></g><g id="grid.second"><g class="shape" ><rect x="100.000000" y="66.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="104.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">second</text></g><g id="grid.third"><g class="shape" ><rect x="100.000000" y="132.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="170.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">third</text></g><mask id="d2-3501266100" maskUnits="userSpaceOnUse" x="-1" y="-1" width="297" height="200"> .d2-3034358831 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="0.000000" y="0.000000" width="295.000000" height="198.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g></g><g id="grid.first"><g class="shape" ><rect x="100.000000" y="0.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">first</text></g><g id="grid.second"><g class="shape" ><rect x="100.000000" y="66.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="104.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">second</text></g><g id="grid.third"><g class="shape" ><rect x="100.000000" y="132.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="147.500000" y="170.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">third</text></g><mask id="d2-3034358831" maskUnits="userSpaceOnUse" x="-1" y="-1" width="297" height="200">
<rect x="-1" y="-1" width="297" height="200" fill="white"></rect> <rect x="-1" y="-1" width="297" height="200" fill="white"></rect>
<rect x="132.500000" y="22.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="132.500000" y="22.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="122.500000" y="88.500000" width="50" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="122.500000" y="88.500000" width="50" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -40,7 +40,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 297 200"><svg id="d2-svg" class="d2-3322634070" width="297" height="200" viewBox="11 11 297 200"><rect x="11.000000" y="11.000000" width="297.000000" height="200.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[ <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 297 200"><svg id="d2-svg" class="d2-3033250019" width="297" height="200" viewBox="11 11 297 200"><rect x="11.000000" y="11.000000" width="297.000000" height="200.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3322634070 .text-bold { .d2-3033250019 .text-bold {
font-family: "d2-3322634070-font-bold"; font-family: "d2-3033250019-font-bold";
} }
@font-face { @font-face {
font-family: d2-3322634070-font-bold; font-family: d2-3033250019-font-bold;
src: url("data:application/font-woff;base64,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"); src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape { }]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision; shape-rendering: geometricPrecision;
@ -18,78 +18,78 @@
opacity: 0.5; opacity: 0.5;
} }
.d2-3322634070 .fill-N1{fill:#0A0F25;} .d2-3033250019 .fill-N1{fill:#0A0F25;}
.d2-3322634070 .fill-N2{fill:#676C7E;} .d2-3033250019 .fill-N2{fill:#676C7E;}
.d2-3322634070 .fill-N3{fill:#9499AB;} .d2-3033250019 .fill-N3{fill:#9499AB;}
.d2-3322634070 .fill-N4{fill:#CFD2DD;} .d2-3033250019 .fill-N4{fill:#CFD2DD;}
.d2-3322634070 .fill-N5{fill:#DEE1EB;} .d2-3033250019 .fill-N5{fill:#DEE1EB;}
.d2-3322634070 .fill-N6{fill:#EEF1F8;} .d2-3033250019 .fill-N6{fill:#EEF1F8;}
.d2-3322634070 .fill-N7{fill:#FFFFFF;} .d2-3033250019 .fill-N7{fill:#FFFFFF;}
.d2-3322634070 .fill-B1{fill:#0D32B2;} .d2-3033250019 .fill-B1{fill:#0D32B2;}
.d2-3322634070 .fill-B2{fill:#0D32B2;} .d2-3033250019 .fill-B2{fill:#0D32B2;}
.d2-3322634070 .fill-B3{fill:#E3E9FD;} .d2-3033250019 .fill-B3{fill:#E3E9FD;}
.d2-3322634070 .fill-B4{fill:#E3E9FD;} .d2-3033250019 .fill-B4{fill:#E3E9FD;}
.d2-3322634070 .fill-B5{fill:#EDF0FD;} .d2-3033250019 .fill-B5{fill:#EDF0FD;}
.d2-3322634070 .fill-B6{fill:#F7F8FE;} .d2-3033250019 .fill-B6{fill:#F7F8FE;}
.d2-3322634070 .fill-AA2{fill:#4A6FF3;} .d2-3033250019 .fill-AA2{fill:#4A6FF3;}
.d2-3322634070 .fill-AA4{fill:#EDF0FD;} .d2-3033250019 .fill-AA4{fill:#EDF0FD;}
.d2-3322634070 .fill-AA5{fill:#F7F8FE;} .d2-3033250019 .fill-AA5{fill:#F7F8FE;}
.d2-3322634070 .fill-AB4{fill:#EDF0FD;} .d2-3033250019 .fill-AB4{fill:#EDF0FD;}
.d2-3322634070 .fill-AB5{fill:#F7F8FE;} .d2-3033250019 .fill-AB5{fill:#F7F8FE;}
.d2-3322634070 .stroke-N1{stroke:#0A0F25;} .d2-3033250019 .stroke-N1{stroke:#0A0F25;}
.d2-3322634070 .stroke-N2{stroke:#676C7E;} .d2-3033250019 .stroke-N2{stroke:#676C7E;}
.d2-3322634070 .stroke-N3{stroke:#9499AB;} .d2-3033250019 .stroke-N3{stroke:#9499AB;}
.d2-3322634070 .stroke-N4{stroke:#CFD2DD;} .d2-3033250019 .stroke-N4{stroke:#CFD2DD;}
.d2-3322634070 .stroke-N5{stroke:#DEE1EB;} .d2-3033250019 .stroke-N5{stroke:#DEE1EB;}
.d2-3322634070 .stroke-N6{stroke:#EEF1F8;} .d2-3033250019 .stroke-N6{stroke:#EEF1F8;}
.d2-3322634070 .stroke-N7{stroke:#FFFFFF;} .d2-3033250019 .stroke-N7{stroke:#FFFFFF;}
.d2-3322634070 .stroke-B1{stroke:#0D32B2;} .d2-3033250019 .stroke-B1{stroke:#0D32B2;}
.d2-3322634070 .stroke-B2{stroke:#0D32B2;} .d2-3033250019 .stroke-B2{stroke:#0D32B2;}
.d2-3322634070 .stroke-B3{stroke:#E3E9FD;} .d2-3033250019 .stroke-B3{stroke:#E3E9FD;}
.d2-3322634070 .stroke-B4{stroke:#E3E9FD;} .d2-3033250019 .stroke-B4{stroke:#E3E9FD;}
.d2-3322634070 .stroke-B5{stroke:#EDF0FD;} .d2-3033250019 .stroke-B5{stroke:#EDF0FD;}
.d2-3322634070 .stroke-B6{stroke:#F7F8FE;} .d2-3033250019 .stroke-B6{stroke:#F7F8FE;}
.d2-3322634070 .stroke-AA2{stroke:#4A6FF3;} .d2-3033250019 .stroke-AA2{stroke:#4A6FF3;}
.d2-3322634070 .stroke-AA4{stroke:#EDF0FD;} .d2-3033250019 .stroke-AA4{stroke:#EDF0FD;}
.d2-3322634070 .stroke-AA5{stroke:#F7F8FE;} .d2-3033250019 .stroke-AA5{stroke:#F7F8FE;}
.d2-3322634070 .stroke-AB4{stroke:#EDF0FD;} .d2-3033250019 .stroke-AB4{stroke:#EDF0FD;}
.d2-3322634070 .stroke-AB5{stroke:#F7F8FE;} .d2-3033250019 .stroke-AB5{stroke:#F7F8FE;}
.d2-3322634070 .background-color-N1{background-color:#0A0F25;} .d2-3033250019 .background-color-N1{background-color:#0A0F25;}
.d2-3322634070 .background-color-N2{background-color:#676C7E;} .d2-3033250019 .background-color-N2{background-color:#676C7E;}
.d2-3322634070 .background-color-N3{background-color:#9499AB;} .d2-3033250019 .background-color-N3{background-color:#9499AB;}
.d2-3322634070 .background-color-N4{background-color:#CFD2DD;} .d2-3033250019 .background-color-N4{background-color:#CFD2DD;}
.d2-3322634070 .background-color-N5{background-color:#DEE1EB;} .d2-3033250019 .background-color-N5{background-color:#DEE1EB;}
.d2-3322634070 .background-color-N6{background-color:#EEF1F8;} .d2-3033250019 .background-color-N6{background-color:#EEF1F8;}
.d2-3322634070 .background-color-N7{background-color:#FFFFFF;} .d2-3033250019 .background-color-N7{background-color:#FFFFFF;}
.d2-3322634070 .background-color-B1{background-color:#0D32B2;} .d2-3033250019 .background-color-B1{background-color:#0D32B2;}
.d2-3322634070 .background-color-B2{background-color:#0D32B2;} .d2-3033250019 .background-color-B2{background-color:#0D32B2;}
.d2-3322634070 .background-color-B3{background-color:#E3E9FD;} .d2-3033250019 .background-color-B3{background-color:#E3E9FD;}
.d2-3322634070 .background-color-B4{background-color:#E3E9FD;} .d2-3033250019 .background-color-B4{background-color:#E3E9FD;}
.d2-3322634070 .background-color-B5{background-color:#EDF0FD;} .d2-3033250019 .background-color-B5{background-color:#EDF0FD;}
.d2-3322634070 .background-color-B6{background-color:#F7F8FE;} .d2-3033250019 .background-color-B6{background-color:#F7F8FE;}
.d2-3322634070 .background-color-AA2{background-color:#4A6FF3;} .d2-3033250019 .background-color-AA2{background-color:#4A6FF3;}
.d2-3322634070 .background-color-AA4{background-color:#EDF0FD;} .d2-3033250019 .background-color-AA4{background-color:#EDF0FD;}
.d2-3322634070 .background-color-AA5{background-color:#F7F8FE;} .d2-3033250019 .background-color-AA5{background-color:#F7F8FE;}
.d2-3322634070 .background-color-AB4{background-color:#EDF0FD;} .d2-3033250019 .background-color-AB4{background-color:#EDF0FD;}
.d2-3322634070 .background-color-AB5{background-color:#F7F8FE;} .d2-3033250019 .background-color-AB5{background-color:#F7F8FE;}
.d2-3322634070 .color-N1{color:#0A0F25;} .d2-3033250019 .color-N1{color:#0A0F25;}
.d2-3322634070 .color-N2{color:#676C7E;} .d2-3033250019 .color-N2{color:#676C7E;}
.d2-3322634070 .color-N3{color:#9499AB;} .d2-3033250019 .color-N3{color:#9499AB;}
.d2-3322634070 .color-N4{color:#CFD2DD;} .d2-3033250019 .color-N4{color:#CFD2DD;}
.d2-3322634070 .color-N5{color:#DEE1EB;} .d2-3033250019 .color-N5{color:#DEE1EB;}
.d2-3322634070 .color-N6{color:#EEF1F8;} .d2-3033250019 .color-N6{color:#EEF1F8;}
.d2-3322634070 .color-N7{color:#FFFFFF;} .d2-3033250019 .color-N7{color:#FFFFFF;}
.d2-3322634070 .color-B1{color:#0D32B2;} .d2-3033250019 .color-B1{color:#0D32B2;}
.d2-3322634070 .color-B2{color:#0D32B2;} .d2-3033250019 .color-B2{color:#0D32B2;}
.d2-3322634070 .color-B3{color:#E3E9FD;} .d2-3033250019 .color-B3{color:#E3E9FD;}
.d2-3322634070 .color-B4{color:#E3E9FD;} .d2-3033250019 .color-B4{color:#E3E9FD;}
.d2-3322634070 .color-B5{color:#EDF0FD;} .d2-3033250019 .color-B5{color:#EDF0FD;}
.d2-3322634070 .color-B6{color:#F7F8FE;} .d2-3033250019 .color-B6{color:#F7F8FE;}
.d2-3322634070 .color-AA2{color:#4A6FF3;} .d2-3033250019 .color-AA2{color:#4A6FF3;}
.d2-3322634070 .color-AA4{color:#EDF0FD;} .d2-3033250019 .color-AA4{color:#EDF0FD;}
.d2-3322634070 .color-AA5{color:#F7F8FE;} .d2-3033250019 .color-AA5{color:#F7F8FE;}
.d2-3322634070 .color-AB4{color:#EDF0FD;} .d2-3033250019 .color-AB4{color:#EDF0FD;}
.d2-3322634070 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="12.000000" y="12.000000" width="295.000000" height="198.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g></g><g id="grid.first"><g class="shape" ><rect x="112.000000" y="12.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">first</text></g><g id="grid.second"><g class="shape" ><rect x="112.000000" y="78.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="116.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">second</text></g><g id="grid.third"><g class="shape" ><rect x="112.000000" y="144.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="182.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">third</text></g><mask id="d2-3322634070" maskUnits="userSpaceOnUse" x="11" y="11" width="297" height="200"> .d2-3033250019 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="12.000000" y="12.000000" width="295.000000" height="198.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g></g><g id="grid.first"><g class="shape" ><rect x="112.000000" y="12.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">first</text></g><g id="grid.second"><g class="shape" ><rect x="112.000000" y="78.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="116.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">second</text></g><g id="grid.third"><g class="shape" ><rect x="112.000000" y="144.000000" width="95.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="159.500000" y="182.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">third</text></g><mask id="d2-3033250019" maskUnits="userSpaceOnUse" x="11" y="11" width="297" height="200">
<rect x="11" y="11" width="297" height="200" fill="white"></rect> <rect x="11" y="11" width="297" height="200" fill="white"></rect>
<rect x="144.500000" y="34.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="144.500000" y="34.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="134.500000" y="100.500000" width="50" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="134.500000" y="100.500000" width="50" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -274,7 +274,7 @@
"x": 424, "x": 424,
"y": 58 "y": 58
}, },
"width": 278, "width": 295,
"height": 306, "height": 306,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -324,7 +324,7 @@
"id": "grid + icon.a", "id": "grid + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 489, "x": 498,
"y": 132 "y": 132
}, },
"width": 53, "width": 53,
@ -365,7 +365,7 @@
"id": "grid + icon.b", "id": "grid + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 582, "x": 591,
"y": 132 "y": 132
}, },
"width": 54, "width": 54,
@ -406,7 +406,7 @@
"id": "grid + icon.c", "id": "grid + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 489, "x": 498,
"y": 238 "y": 238
}, },
"width": 53, "width": 53,
@ -447,7 +447,7 @@
"id": "grid + icon.d", "id": "grid + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 582, "x": 591,
"y": 238 "y": 238
}, },
"width": 54, "width": 54,
@ -491,7 +491,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 762, "x": 779,
"y": 10 "y": 10
}, },
"width": 433, "width": 433,
@ -544,7 +544,7 @@
"id": "grid + icon w/ container.a", "id": "grid + icon w/ container.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 856, "x": 873,
"y": 84 "y": 84
}, },
"width": 53, "width": 53,
@ -585,7 +585,7 @@
"id": "grid + icon w/ container.b", "id": "grid + icon w/ container.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 949, "x": 966,
"y": 120 "y": 120
}, },
"width": 151, "width": 151,
@ -626,7 +626,7 @@
"id": "grid + icon w/ container.b.b child", "id": "grid + icon w/ container.b.b child",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 979, "x": 996,
"y": 150 "y": 150
}, },
"width": 91, "width": 91,
@ -667,7 +667,7 @@
"id": "grid + icon w/ container.c", "id": "grid + icon w/ container.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 856, "x": 873,
"y": 286 "y": 286
}, },
"width": 53, "width": 53,
@ -708,7 +708,7 @@
"id": "grid + icon w/ container.d", "id": "grid + icon w/ container.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 949, "x": 966,
"y": 286 "y": 286
}, },
"width": 151, "width": 151,
@ -752,7 +752,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 1255, "x": 1272,
"y": 0 "y": 0
}, },
"width": 364, "width": 364,
@ -785,7 +785,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -793,7 +792,7 @@
"id": "no label grid w/ container + icon.a", "id": "no label grid w/ container + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1315, "x": 1332,
"y": 60 "y": 60
}, },
"width": 53, "width": 53,
@ -834,7 +833,7 @@
"id": "no label grid w/ container + icon.b", "id": "no label grid w/ container + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1408, "x": 1425,
"y": 129 "y": 129
}, },
"width": 151, "width": 151,
@ -887,7 +886,7 @@
"id": "no label grid w/ container + icon.b.b child", "id": "no label grid w/ container + icon.b.b child",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1438, "x": 1455,
"y": 159 "y": 159
}, },
"width": 91, "width": 91,
@ -928,7 +927,7 @@
"id": "no label grid w/ container + icon.c", "id": "no label grid w/ container + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1315, "x": 1332,
"y": 295 "y": 295
}, },
"width": 53, "width": 53,
@ -969,7 +968,7 @@
"id": "no label grid w/ container + icon.d", "id": "no label grid w/ container + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1408, "x": 1425,
"y": 295 "y": 295
}, },
"width": 151, "width": 151,
@ -1013,7 +1012,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 1679, "x": 1696,
"y": 58 "y": 58
}, },
"width": 267, "width": 267,
@ -1058,7 +1057,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -1066,7 +1064,7 @@
"id": "no label grid + icon.a", "id": "no label grid + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1739, "x": 1756,
"y": 132 "y": 132
}, },
"width": 53, "width": 53,
@ -1107,7 +1105,7 @@
"id": "no label grid + icon.b", "id": "no label grid + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1832, "x": 1849,
"y": 132 "y": 132
}, },
"width": 54, "width": 54,
@ -1148,7 +1146,7 @@
"id": "no label grid + icon.c", "id": "no label grid + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1739, "x": 1756,
"y": 238 "y": 238
}, },
"width": 53, "width": 53,
@ -1189,7 +1187,7 @@
"id": "no label grid + icon.d", "id": "no label grid + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1832, "x": 1849,
"y": 238 "y": 238
}, },
"width": 54, "width": 54,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -274,7 +274,7 @@
"x": 436, "x": 436,
"y": 62 "y": 62
}, },
"width": 278, "width": 295,
"height": 347, "height": 347,
"opacity": 1, "opacity": 1,
"strokeDash": 0, "strokeDash": 0,
@ -324,7 +324,7 @@
"id": "grid + icon.a", "id": "grid + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 501, "x": 510,
"y": 136 "y": 136
}, },
"width": 53, "width": 53,
@ -365,7 +365,7 @@
"id": "grid + icon.b", "id": "grid + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 594, "x": 603,
"y": 136 "y": 136
}, },
"width": 54, "width": 54,
@ -406,7 +406,7 @@
"id": "grid + icon.c", "id": "grid + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 501, "x": 510,
"y": 242 "y": 242
}, },
"width": 53, "width": 53,
@ -447,7 +447,7 @@
"id": "grid + icon.d", "id": "grid + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 594, "x": 603,
"y": 242 "y": 242
}, },
"width": 54, "width": 54,
@ -491,7 +491,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 734, "x": 751,
"y": 12 "y": 12
}, },
"width": 433, "width": 433,
@ -544,7 +544,7 @@
"id": "grid + icon w/ container.a", "id": "grid + icon w/ container.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 808, "x": 825,
"y": 86 "y": 86
}, },
"width": 53, "width": 53,
@ -585,7 +585,7 @@
"id": "grid + icon w/ container.b", "id": "grid + icon w/ container.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 901, "x": 918,
"y": 86 "y": 86
}, },
"width": 191, "width": 191,
@ -626,7 +626,7 @@
"id": "grid + icon w/ container.b.b child", "id": "grid + icon w/ container.b.b child",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 951, "x": 968,
"y": 136 "y": 136
}, },
"width": 91, "width": 91,
@ -667,7 +667,7 @@
"id": "grid + icon w/ container.c", "id": "grid + icon w/ container.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 808, "x": 825,
"y": 292 "y": 292
}, },
"width": 53, "width": 53,
@ -708,7 +708,7 @@
"id": "grid + icon w/ container.d", "id": "grid + icon w/ container.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 901, "x": 918,
"y": 292 "y": 292
}, },
"width": 191, "width": 191,
@ -752,7 +752,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 1187, "x": 1204,
"y": 27 "y": 27
}, },
"width": 404, "width": 404,
@ -785,7 +785,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -793,7 +792,7 @@
"id": "no label grid w/ container + icon.a", "id": "no label grid w/ container + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1247, "x": 1264,
"y": 87 "y": 87
}, },
"width": 53, "width": 53,
@ -834,7 +833,7 @@
"id": "no label grid w/ container + icon.b", "id": "no label grid w/ container + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1340, "x": 1357,
"y": 87 "y": 87
}, },
"width": 191, "width": 191,
@ -887,7 +886,7 @@
"id": "no label grid w/ container + icon.b.b child", "id": "no label grid w/ container + icon.b.b child",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1390, "x": 1407,
"y": 161 "y": 161
}, },
"width": 91, "width": 91,
@ -928,7 +927,7 @@
"id": "no label grid w/ container + icon.c", "id": "no label grid w/ container + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1247, "x": 1264,
"y": 317 "y": 317
}, },
"width": 53, "width": 53,
@ -969,7 +968,7 @@
"id": "no label grid w/ container + icon.d", "id": "no label grid w/ container + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1340, "x": 1357,
"y": 317 "y": 317
}, },
"width": 191, "width": 191,
@ -1013,7 +1012,7 @@
"2x2" "2x2"
], ],
"pos": { "pos": {
"x": 1611, "x": 1628,
"y": 82 "y": 82
}, },
"width": 267, "width": 267,
@ -1058,7 +1057,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -1066,7 +1064,7 @@
"id": "no label grid + icon.a", "id": "no label grid + icon.a",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1671, "x": 1688,
"y": 156 "y": 156
}, },
"width": 53, "width": 53,
@ -1107,7 +1105,7 @@
"id": "no label grid + icon.b", "id": "no label grid + icon.b",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1764, "x": 1781,
"y": 156 "y": 156
}, },
"width": 54, "width": 54,
@ -1148,7 +1146,7 @@
"id": "no label grid + icon.c", "id": "no label grid + icon.c",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1671, "x": 1688,
"y": 262 "y": 262
}, },
"width": 53, "width": 53,
@ -1189,7 +1187,7 @@
"id": "no label grid + icon.d", "id": "no label grid + icon.d",
"type": "rectangle", "type": "rectangle",
"pos": { "pos": {
"x": 1764, "x": 1781,
"y": 262 "y": 262
}, },
"width": 54, "width": 54,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 106 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 106 KiB

View file

@ -163,7 +163,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 2 "level": 2
}, },

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 402 368"><svg id="d2-svg" class="d2-616560491" width="402" height="368" viewBox="-1 -1 402 368"><rect x="-1.000000" y="-1.000000" width="402.000000" height="368.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[ <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 402 368"><svg id="d2-svg" class="d2-2272637932" width="402" height="368" viewBox="-1 -1 402 368"><rect x="-1.000000" y="-1.000000" width="402.000000" height="368.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-616560491 .text { .d2-2272637932 .text {
font-family: "d2-616560491-font-regular"; font-family: "d2-2272637932-font-regular";
} }
@font-face { @font-face {
font-family: d2-616560491-font-regular; font-family: d2-2272637932-font-regular;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAv0AAoAAAAAEmwAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXd/Vo2NtYXAAAAFUAAAAlgAAAL4C4wQRZ2x5ZgAAAewAAAWkAAAHTKtVOSVoZWFkAAAHkAAAADYAAAA2G4Ue32hoZWEAAAfIAAAAJAAAACQKhAXdaG10eAAAB+wAAABsAAAAbDCyBW1sb2NhAAAIWAAAADgAAAA4F+wZwG1heHAAAAiQAAAAIAAAACAAMwD2bmFtZQAACLAAAAMjAAAIFAbDVU1wb3N0AAAL1AAAAB0AAAAg/9EAMgADAgkBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIwAAAgsFAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPAEAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAeYClAAAACAAA3icdM09SsMAAIbhJyb+R43/Dg6ewRuI4uSoBwgiKAQFF68jiuhsty5tj9Kl1/gKoWvf9RleFEoFapV/nGuUahcuXblx686D1pMXnTcfCQu97vVe69Gzzqv3JNPMMsk4owwzyF9+85PvfOWz/yyvcGZFqbJqzboNm7Zsq+3Ytaex78ChI8dOnDIHAAD//wEAAP//RkYk3wAAeJxsVVtsI1cZ/s/xxBMnTp1Zezy249vMJDO2k9iJx/bk4oyb+BI3Nzv2Rttc1dAQp7tsQYlKFQisSlq2AiGMtEgr0QIPfamEqBBSAPWtoiXQqhISonSFVisezEqLBLL8gFabMZqxE22AtyP5+P+/2/kGOmAVAMfxHTCACSxwBWgAiWKpAVYUeVKWZJlnDLKIKHIV/VWtIvRcjEgkiNGZRzOHt26h57+J75x9aeL1SuXDrVdfVb9Xe6hG0acPAYMBAHtwFUxAAVhJSRQEkTcaDVbJyos8+bHvQ98Vfy9h8d+7v3V/VflnCn15Z0e+OT5+U13D1bOvnJ4CACCINRu4D78FHoAOThDisURCitoZUhB4zmikbXa7FE3IjNGISqXX5hdeLyc33MOumZCyKUXXlcicLyx+wbx898b1u6VRf8LNTX+1VDqcCXCx4SgAYFgDwDFchU4Np0RJUTttM/KiFE3EYwLPr71z98dv/3Bl/uDg4GAeV9996+2fZ757dPSGjm0NAP1J56hpRrO0RPPUGvqa+vnjx7iau59T713c+wRXoUPfQLH0Whn5cPXsV7Mtjm4A9ARXgdR+5+MszVN/+wg9+AjP5XJnJ60715oNHMZVzR9dB0qiWtwT+tFoROn0DaUczA4O5YJF5bo5cfQSek39RmFdENYL6Fi99dJRArCmJ/oFqoML+gEYThNUjulikqIuLU3xmlFiNCHHdYE/mFr+/o+owUBozuPnXpxYLWZIA7ds5xX+cDtqfm66uEL5xni/bdwevLmu/nnCHZrhfLctyUhwABCEmw30HqprHP+/f+f2XXl2Lzl9QxnJOkN0xDOUFctpbsLezxbNyf1iaT/JMQmrI7IyVq54bLKH1byLNBvoc3wKVvCfc9GHi3HpnIQcv1j07/WXJ7flkOInyhnS4F5wPpv0jXvFlJAzv3FYOFC8rvL7Z2Pj7mA2rbqZSHns2ouAdfx/QHVwgO8SA9pmJNmL8BnYmLYGMdPXldSOvPlFhNVfd1zL8ZN9Hl/hY0SkxqVl89R+obivHO31OE2LGzSVsHmRMLdY0P0tAaDP8CnY9IzQ5LkXlD6YpEolA78YXZwtDY0MTA7g0w922Mj2pvoJCmYUYUD9KTSbkAWAX+ITLIATAIzgOmplp9RswF/wKVhaKunRaQN/NxwsPWMiSLK7024ej+PdsztWCiGFIM4xoXobEyP9D6YMaeCXLkChWo6/jKmt379QHSzQd0k/TUAtZHF9Fm2zI8tkJZWqTCZ3U6ndZGpxMaUsLbW9T+6XivvJTKV8dW/varlyrtcWqrdfbQtbO1UtYM580MP0mm0WX9qJas+HE115gogqartX3M0GOkZ1COmaiLJuZTwmCGIYx2NPZVSrGMaLNbh/jG3xQX9mcGSElfq4mdBqYXjJHXAm/OFB70gfnxkOFsyiW3aywz4nx3T1sPHgZMHPxKyOkJvx0N09rBwWZwL6fkezgbL4ZWDanvBxWZb0Arnw5tHSVH6hK3t8zIZ6vOZeW8S8lkc9Ssebb6bV+vCoiVDIbn3WfLOBPkU1zadL/lLtZ/BgMV8eHBEmOU0XbsG8vYli6mcZRRxEq6prITACCMwA6HeoBj0AkkGy2u2apLJVMrz/3spGN9NNdDNdG8s/QzX1H/15ns/3I5vq0ngA4BNUA/a//vfUBN7Q6n7S8JPbV/Odz5BEZ69pvrhgojqJTgs5u/StnZzJYiI6e7syqKb+nUtzXJpDzqdOLtTBZwYGsrz6BJDWXOi3+DtaoqS4glsROq8vm9GoPR6JDrzw7VxyKpBxRwLryupu+pUF15jzN6Mv/OAVSc4N+yND8cpK8uu3C5iYbeUJ3kE17buldXSphGoav+bv8RzI+AS6ASi9YVo7HD6fw+Hz4TmP0+H1Opwe+A8AAAD//wEAAP//jtuNPQABAAAAAguFoorxJV8PPPUAAwPoAAAAANhdoKEAAAAA3WYvNv46/tsIbwPIAAAAAwACAAAAAAAAAAEAAAPY/u8AAAiY/jr+OghvAAEAAAAAAAAAAAAAAAAAAAAbAo0AWQDIAAACIAADAjsANAJnAFoB7gBaAeYAWgIYABwChQBXAfgANAHIAC4CKwAvAfAALgIgAFIA9gBFAP8AUgIjAFICHgAuAVsAUgGjABwBUgAYAiAASwHTAAwCzgAYAfEAJAD2AFIAAP/JAAAALAAsAFAAgACeALIAwgDUAPgBMAFeAZABxAHmAfICDgIwAlwCfAK8AuIDBAMgA1oDhAOQA6YAAQAAABsAjAAMAGYABwABAAAAAAAAAAAAAAAAAAQAA3icnJTdThtXFIU/B9ttVDUXFYrIDTqXbZWM3QiiBK5MCYpVhFOP0x+pqjR4xj9iPDPyDFCqPkCv+xZ9i1z1OfoQVa+rs7wNNqoUgRCwzpy991lnr7UPsMm/bFCrPwT+av5guMZ2c8/wAx41nxre4Ljxt+H6SkyDuPGb4SZfNvqGP+J9/Q/DH7NT/9nwQ7bqR4Y/4Xl90/CnG45/DD9ih/cLXIOX/G64xhaF4Qds8pPhDR5jNWt1HtM23OAztg032QYGTKlImZIxxjFiyphz5iSUhCTMmTIiIcbRpUNKpa8ZkZBj/L9fI0Iq5kSqOKHCkRKSElEysYq/KivnrU4caTW3vQ4VEyJOlXFGRIYjZ0xORsKZ6lRUFOzRokXJUHwLKkoCSqakBOTMGdOixxHHDJgwpcRxpEqeWUjOiIpLIp3vLMJ3ZkhCRmmszsmIxdOJX6LsLsc4ehSKXa18vFbhKY7vlO255Yr9ikC/boXZ+rlLNhEX6meqrqTauZSCE+36czt8K1yxh7tXf9aZfLhHsf5XqnzKufSPpVQmJhnObdEhlINC9wTHgdZdQnXke7oMeEOPdwy07tCnT4cTBnR5rdwefRxf0+OEQ2V0hRd7R3LMCT/i+IauYnztxPqzUCzhFwpzdymOc91jRqGee+aB7prohndX2M9QvuaOUjlDzZGPdNIv05xFjM0VhRjO1MulN0rrX2yOmOkuXtubfT8NFzZ7yym+ItcMe7cuOHnlFow+pGpwyzOX+gmIiMk5VcSQnBktKq7E+y0R56Q4DtW9N5qSis51jj/nSi5JmIlBl0x15hT6G5lvQuM+XPO9s7ckVr5nenZ9q/uc4tSrG43eqXvLvdC6nKwo0DJV8xU3DcU1M+8nmqlV/qFyS71uOc/ok0j1VDe4/Q48J6DNDrvsM9E5Q+1c2BvR1jvR5hX76sEZiaJGcnViFXYJeMEuu7zixVrNDocc0GP/DhwXWT0OeH1rZ12nZRVndf4Um7b4Op5dr17eW6/P7+DLLzRRNy9jX9r4bl9YtRv/nxAx81zc1uqd3BOC/wAAAP//AQAA//8HW0wwAHicYmBmAIP/5xiMGLAAAAAAAP//AQAA//8vAQIDAAAA"); src: url("data:application/font-woff;base64,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");
} }
.d2-616560491 .text-bold { .d2-2272637932 .text-bold {
font-family: "d2-616560491-font-bold"; font-family: "d2-2272637932-font-bold";
} }
@font-face { @font-face {
font-family: d2-616560491-font-bold; font-family: d2-2272637932-font-bold;
src: url("data:application/font-woff;base64,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"); src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape { }]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision; shape-rendering: geometricPrecision;
@ -25,78 +25,78 @@
opacity: 0.5; opacity: 0.5;
} }
.d2-616560491 .fill-N1{fill:#0A0F25;} .d2-2272637932 .fill-N1{fill:#0A0F25;}
.d2-616560491 .fill-N2{fill:#676C7E;} .d2-2272637932 .fill-N2{fill:#676C7E;}
.d2-616560491 .fill-N3{fill:#9499AB;} .d2-2272637932 .fill-N3{fill:#9499AB;}
.d2-616560491 .fill-N4{fill:#CFD2DD;} .d2-2272637932 .fill-N4{fill:#CFD2DD;}
.d2-616560491 .fill-N5{fill:#DEE1EB;} .d2-2272637932 .fill-N5{fill:#DEE1EB;}
.d2-616560491 .fill-N6{fill:#EEF1F8;} .d2-2272637932 .fill-N6{fill:#EEF1F8;}
.d2-616560491 .fill-N7{fill:#FFFFFF;} .d2-2272637932 .fill-N7{fill:#FFFFFF;}
.d2-616560491 .fill-B1{fill:#0D32B2;} .d2-2272637932 .fill-B1{fill:#0D32B2;}
.d2-616560491 .fill-B2{fill:#0D32B2;} .d2-2272637932 .fill-B2{fill:#0D32B2;}
.d2-616560491 .fill-B3{fill:#E3E9FD;} .d2-2272637932 .fill-B3{fill:#E3E9FD;}
.d2-616560491 .fill-B4{fill:#E3E9FD;} .d2-2272637932 .fill-B4{fill:#E3E9FD;}
.d2-616560491 .fill-B5{fill:#EDF0FD;} .d2-2272637932 .fill-B5{fill:#EDF0FD;}
.d2-616560491 .fill-B6{fill:#F7F8FE;} .d2-2272637932 .fill-B6{fill:#F7F8FE;}
.d2-616560491 .fill-AA2{fill:#4A6FF3;} .d2-2272637932 .fill-AA2{fill:#4A6FF3;}
.d2-616560491 .fill-AA4{fill:#EDF0FD;} .d2-2272637932 .fill-AA4{fill:#EDF0FD;}
.d2-616560491 .fill-AA5{fill:#F7F8FE;} .d2-2272637932 .fill-AA5{fill:#F7F8FE;}
.d2-616560491 .fill-AB4{fill:#EDF0FD;} .d2-2272637932 .fill-AB4{fill:#EDF0FD;}
.d2-616560491 .fill-AB5{fill:#F7F8FE;} .d2-2272637932 .fill-AB5{fill:#F7F8FE;}
.d2-616560491 .stroke-N1{stroke:#0A0F25;} .d2-2272637932 .stroke-N1{stroke:#0A0F25;}
.d2-616560491 .stroke-N2{stroke:#676C7E;} .d2-2272637932 .stroke-N2{stroke:#676C7E;}
.d2-616560491 .stroke-N3{stroke:#9499AB;} .d2-2272637932 .stroke-N3{stroke:#9499AB;}
.d2-616560491 .stroke-N4{stroke:#CFD2DD;} .d2-2272637932 .stroke-N4{stroke:#CFD2DD;}
.d2-616560491 .stroke-N5{stroke:#DEE1EB;} .d2-2272637932 .stroke-N5{stroke:#DEE1EB;}
.d2-616560491 .stroke-N6{stroke:#EEF1F8;} .d2-2272637932 .stroke-N6{stroke:#EEF1F8;}
.d2-616560491 .stroke-N7{stroke:#FFFFFF;} .d2-2272637932 .stroke-N7{stroke:#FFFFFF;}
.d2-616560491 .stroke-B1{stroke:#0D32B2;} .d2-2272637932 .stroke-B1{stroke:#0D32B2;}
.d2-616560491 .stroke-B2{stroke:#0D32B2;} .d2-2272637932 .stroke-B2{stroke:#0D32B2;}
.d2-616560491 .stroke-B3{stroke:#E3E9FD;} .d2-2272637932 .stroke-B3{stroke:#E3E9FD;}
.d2-616560491 .stroke-B4{stroke:#E3E9FD;} .d2-2272637932 .stroke-B4{stroke:#E3E9FD;}
.d2-616560491 .stroke-B5{stroke:#EDF0FD;} .d2-2272637932 .stroke-B5{stroke:#EDF0FD;}
.d2-616560491 .stroke-B6{stroke:#F7F8FE;} .d2-2272637932 .stroke-B6{stroke:#F7F8FE;}
.d2-616560491 .stroke-AA2{stroke:#4A6FF3;} .d2-2272637932 .stroke-AA2{stroke:#4A6FF3;}
.d2-616560491 .stroke-AA4{stroke:#EDF0FD;} .d2-2272637932 .stroke-AA4{stroke:#EDF0FD;}
.d2-616560491 .stroke-AA5{stroke:#F7F8FE;} .d2-2272637932 .stroke-AA5{stroke:#F7F8FE;}
.d2-616560491 .stroke-AB4{stroke:#EDF0FD;} .d2-2272637932 .stroke-AB4{stroke:#EDF0FD;}
.d2-616560491 .stroke-AB5{stroke:#F7F8FE;} .d2-2272637932 .stroke-AB5{stroke:#F7F8FE;}
.d2-616560491 .background-color-N1{background-color:#0A0F25;} .d2-2272637932 .background-color-N1{background-color:#0A0F25;}
.d2-616560491 .background-color-N2{background-color:#676C7E;} .d2-2272637932 .background-color-N2{background-color:#676C7E;}
.d2-616560491 .background-color-N3{background-color:#9499AB;} .d2-2272637932 .background-color-N3{background-color:#9499AB;}
.d2-616560491 .background-color-N4{background-color:#CFD2DD;} .d2-2272637932 .background-color-N4{background-color:#CFD2DD;}
.d2-616560491 .background-color-N5{background-color:#DEE1EB;} .d2-2272637932 .background-color-N5{background-color:#DEE1EB;}
.d2-616560491 .background-color-N6{background-color:#EEF1F8;} .d2-2272637932 .background-color-N6{background-color:#EEF1F8;}
.d2-616560491 .background-color-N7{background-color:#FFFFFF;} .d2-2272637932 .background-color-N7{background-color:#FFFFFF;}
.d2-616560491 .background-color-B1{background-color:#0D32B2;} .d2-2272637932 .background-color-B1{background-color:#0D32B2;}
.d2-616560491 .background-color-B2{background-color:#0D32B2;} .d2-2272637932 .background-color-B2{background-color:#0D32B2;}
.d2-616560491 .background-color-B3{background-color:#E3E9FD;} .d2-2272637932 .background-color-B3{background-color:#E3E9FD;}
.d2-616560491 .background-color-B4{background-color:#E3E9FD;} .d2-2272637932 .background-color-B4{background-color:#E3E9FD;}
.d2-616560491 .background-color-B5{background-color:#EDF0FD;} .d2-2272637932 .background-color-B5{background-color:#EDF0FD;}
.d2-616560491 .background-color-B6{background-color:#F7F8FE;} .d2-2272637932 .background-color-B6{background-color:#F7F8FE;}
.d2-616560491 .background-color-AA2{background-color:#4A6FF3;} .d2-2272637932 .background-color-AA2{background-color:#4A6FF3;}
.d2-616560491 .background-color-AA4{background-color:#EDF0FD;} .d2-2272637932 .background-color-AA4{background-color:#EDF0FD;}
.d2-616560491 .background-color-AA5{background-color:#F7F8FE;} .d2-2272637932 .background-color-AA5{background-color:#F7F8FE;}
.d2-616560491 .background-color-AB4{background-color:#EDF0FD;} .d2-2272637932 .background-color-AB4{background-color:#EDF0FD;}
.d2-616560491 .background-color-AB5{background-color:#F7F8FE;} .d2-2272637932 .background-color-AB5{background-color:#F7F8FE;}
.d2-616560491 .color-N1{color:#0A0F25;} .d2-2272637932 .color-N1{color:#0A0F25;}
.d2-616560491 .color-N2{color:#676C7E;} .d2-2272637932 .color-N2{color:#676C7E;}
.d2-616560491 .color-N3{color:#9499AB;} .d2-2272637932 .color-N3{color:#9499AB;}
.d2-616560491 .color-N4{color:#CFD2DD;} .d2-2272637932 .color-N4{color:#CFD2DD;}
.d2-616560491 .color-N5{color:#DEE1EB;} .d2-2272637932 .color-N5{color:#DEE1EB;}
.d2-616560491 .color-N6{color:#EEF1F8;} .d2-2272637932 .color-N6{color:#EEF1F8;}
.d2-616560491 .color-N7{color:#FFFFFF;} .d2-2272637932 .color-N7{color:#FFFFFF;}
.d2-616560491 .color-B1{color:#0D32B2;} .d2-2272637932 .color-B1{color:#0D32B2;}
.d2-616560491 .color-B2{color:#0D32B2;} .d2-2272637932 .color-B2{color:#0D32B2;}
.d2-616560491 .color-B3{color:#E3E9FD;} .d2-2272637932 .color-B3{color:#E3E9FD;}
.d2-616560491 .color-B4{color:#E3E9FD;} .d2-2272637932 .color-B4{color:#E3E9FD;}
.d2-616560491 .color-B5{color:#EDF0FD;} .d2-2272637932 .color-B5{color:#EDF0FD;}
.d2-616560491 .color-B6{color:#F7F8FE;} .d2-2272637932 .color-B6{color:#F7F8FE;}
.d2-616560491 .color-AA2{color:#4A6FF3;} .d2-2272637932 .color-AA2{color:#4A6FF3;}
.d2-616560491 .color-AA4{color:#EDF0FD;} .d2-2272637932 .color-AA4{color:#EDF0FD;}
.d2-616560491 .color-AA5{color:#F7F8FE;} .d2-2272637932 .color-AA5{color:#F7F8FE;}
.d2-616560491 .color-AB4{color:#EDF0FD;} .d2-2272637932 .color-AB4{color:#EDF0FD;}
.d2-616560491 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="The Universe"><g class="shape" ><rect x="0.000000" y="0.000000" width="400.000000" height="366.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="200.000000" y="33.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">The Universe</text></g><g id="The Universe.FirstTwo"><g class="shape" ><rect x="0.000000" y="46.000000" width="300.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="150.000000" y="84.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">FirstTwo</text></g><g id="The Universe.Last"><g class="shape" ><rect x="300.000000" y="46.000000" width="100.000000" height="66.000000" fill="red" class=" stroke-B1" style="stroke-width:2;" /></g><text x="350.000000" y="84.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Last</text></g><g id="The Universe.TALA"><g class="shape" ><rect x="0.000000" y="112.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="The Universe.D2"><g class="shape" ><rect x="100.000000" y="112.000000" width="200.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="200.000000" y="214.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.Cloud"><g class="shape" ><rect x="300.000000" y="112.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="350.000000" y="214.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><g id="The Universe.Terrastruct"><g class="shape" ><rect x="0.000000" y="305.000000" width="400.000000" height="61.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="200.000000" y="341.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Terrastruct</text></g><g id="The Universe.TALA.TALA"><g class="shape" ><rect x="0.000000" y="112.000000" width="100.000000" height="61.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="148.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">TALA</text></g><g id="The Universe.TALA.D2"><g class="shape" ><rect x="0.000000" y="173.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="211.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.TALA.Cloud"><g class="shape" ><rect x="0.000000" y="239.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="277.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><mask id="d2-616560491" maskUnits="userSpaceOnUse" x="-1" y="-1" width="402" height="368"> .d2-2272637932 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="The Universe"><g class="shape" ><rect x="0.000000" y="0.000000" width="400.000000" height="366.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="200.000000" y="33.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">The Universe</text></g><g id="The Universe.FirstTwo"><g class="shape" ><rect x="0.000000" y="46.000000" width="300.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="150.000000" y="84.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">FirstTwo</text></g><g id="The Universe.Last"><g class="shape" ><rect x="300.000000" y="46.000000" width="100.000000" height="66.000000" fill="red" class=" stroke-B1" style="stroke-width:2;" /></g><text x="350.000000" y="84.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Last</text></g><g id="The Universe.TALA"><g class="shape" ><rect x="0.000000" y="112.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="The Universe.D2"><g class="shape" ><rect x="100.000000" y="112.000000" width="200.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="200.000000" y="214.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.Cloud"><g class="shape" ><rect x="300.000000" y="112.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="350.000000" y="214.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><g id="The Universe.Terrastruct"><g class="shape" ><rect x="0.000000" y="305.000000" width="400.000000" height="61.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="200.000000" y="341.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Terrastruct</text></g><g id="The Universe.TALA.TALA"><g class="shape" ><rect x="0.000000" y="112.000000" width="100.000000" height="61.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="148.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">TALA</text></g><g id="The Universe.TALA.D2"><g class="shape" ><rect x="0.000000" y="173.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="211.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.TALA.Cloud"><g class="shape" ><rect x="0.000000" y="239.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="50.000000" y="277.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><mask id="d2-2272637932" maskUnits="userSpaceOnUse" x="-1" y="-1" width="402" height="368">
<rect x="-1" y="-1" width="402" height="368" fill="white"></rect> <rect x="-1" y="-1" width="402" height="368" fill="white"></rect>
<rect x="124.000000" y="5.000000" width="152" height="36" fill="rgba(0,0,0,0.75)"></rect> <rect x="124.000000" y="5.000000" width="152" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="119.000000" y="68.500000" width="62" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="119.000000" y="68.500000" width="62" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -163,7 +163,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 2 "level": 2
}, },

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 402 368"><svg id="d2-svg" class="d2-974195226" width="402" height="368" viewBox="11 11 402 368"><rect x="11.000000" y="11.000000" width="402.000000" height="368.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[ <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 402 368"><svg id="d2-svg" class="d2-1702214057" width="402" height="368" viewBox="11 11 402 368"><rect x="11.000000" y="11.000000" width="402.000000" height="368.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-974195226 .text { .d2-1702214057 .text {
font-family: "d2-974195226-font-regular"; font-family: "d2-1702214057-font-regular";
} }
@font-face { @font-face {
font-family: d2-974195226-font-regular; font-family: d2-1702214057-font-regular;
src: url("data:application/font-woff;base64,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"); src: url("data:application/font-woff;base64,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");
} }
.d2-974195226 .text-bold { .d2-1702214057 .text-bold {
font-family: "d2-974195226-font-bold"; font-family: "d2-1702214057-font-bold";
} }
@font-face { @font-face {
font-family: d2-974195226-font-bold; font-family: d2-1702214057-font-bold;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAvoAAoAAAAAEnAAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXxHXrmNtYXAAAAFUAAAAlgAAAL4C4wQRZ2x5ZgAAAewAAAWSAAAHOFlx0/FoZWFkAAAHgAAAADYAAAA2G38e1GhoZWEAAAe4AAAAJAAAACQKfwXaaG10eAAAB9wAAABsAAAAbDOBBEtsb2NhAAAISAAAADgAAAA4F6YZem1heHAAAAiAAAAAIAAAACAAMwD3bmFtZQAACKAAAAMoAAAIKgjwVkFwb3N0AAALyAAAAB0AAAAg/9EAMgADAioCvAAFAAACigJYAAAASwKKAlgAAAFeADIBKQAAAgsHAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPACAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAfAClAAAACAAA3icdM09SsMAAIbhJyb+R43/Dg6ewRuI4uSoBwgiKAQFF68jiuhsty5tj9Kl1/gKoWvf9RleFEoFapV/nGuUahcuXblx686D1pMXnTcfCQu97vVe69Gzzqv3JNPMMsk4owwzyF9+85PvfOWz/yyvcGZFqbJqzboNm7Zsq+3Ytaex78ChI8dOnDIHAAD//wEAAP//RkYk3wAAeJxkVFts0+wZfr8vib2k7t86ieMkzdm1nbRNSuI47pH0kJ74k9LD/vZH9LQKbWOlLYKydqiISWMHQRgS6Rgb0yYhpmkSu0C92ZC6S9i03oHG1bQNoWriKpqiCaHUmeyknP4Ly5a+z+/7vM/hBRNMAOBlvAMGMEMDWIEBkOggzUuiyJGKpCgca1BERJMT2Kr+9oEYMUYixpbAXf/lxUWUW8A7h+dO55aX/7fY3a3++k+P1Zvo4mMAXHkLgAdxHsxAA9hISRQEkSMIg02ycSJHHjTeaKhvqjdSrrf7j/Z/FX4aRid6euJrUnJV/SHOH27cuwcAgCBWKeFj+C40AZhCgiAnUykp4WBJQeBCBMHYHVIipbAEmp+6Pv3Fzan0meC4S+HaxlpnRsNp5/gUlf3Z6rlfTEqhBdabWBg4c77ZNbcEGHIAOIvzYKlOLCUcDsZOEJwoJVIpOSkIHJf745nbkxO3lqKejulYbLrDg/OZW+fP3x7ZDM+Nj5/idXw5APQffU6NNybISAzH5NA99c3Llzi//fPtQ3h37yXOg0nvRgeZXAFhnD8sblfPXQDYhvNAauecHGQ4en8Xvd3Fjdvbh8XqnbFKCZ/EeY1RU0iQaYnWx9c/CDR+9Uc7XYrS89MfUHceoAW1sJTNLqFV9f6DO4ChpVJCz1EZXMABsCGNSEXnkBR1Rhma0/RREilF1nn9c2biWgFzEX9fs9y+0rX4zS2L0T/yNRdvG+/xU7Pp8S8bgqKT+Ya3ee2C+krycBdY26yl1etkdazNlRLaQ2Vwf6obF3qvGoFcQ+v9o9/NxEY8Q1xATqePOWO2Ln6G6r00Nb3R62MXvdn+vhzTsBRo0jjAIFZKqIz3wAaBozn0wqIsfTCBUGvz37n17sVkpMNFFLYsRvcwdopWW6udS7VTN743eem4x5n9/eFg3M1t2V1/s342ODI2BFjH/m9UBif4P0KvOYQMOhxSQsNukJJaF+QfuTAweK57ZL7diNUXluG4nIoLC7/cFdtCKer4xtTkRjq9krHx5pQUPOX2oa6I3F7Vs18bCO+BXfcEQx4JQeuFSbq/QHo+T0yOFbwBT9iJ9x6ecrWuzKv7KJgKu1j1EVQqoADAP/AzLGgOAhLccL1au1JCVrwHDVWWjryiAf9LtrtAm00kYaV46vTnmDt8wVoRWjWRR5hQuYaJlb6CactiDOTegULFtC/6EaYqf5hEZWj4JLV6wsSEFq+qPMiRXs9k1tPptUxmLR2NxaKxaLSmfe/G9NSl3s1cX39Ws0CNL3QLlcH6IbbaKqgia8oKjMfirHc1enrtqDibiJtMV43GSEL9FyBgKiX0G1QGUedEVBx6epKCIMawnHxfjLE7WB9m7MSz+LeEgVDaH/R5Y25fd/jsF52z/gF30t3ZKQR6I9+mBP+cq4m10Q6bhWrujAzNiM4v7Q7R6fqsjuuMDc5XdaYrJbSGN4Ct5lbmZEWR9EXxPggwdzKTpS9vbnJeymVhbQr1nZm/rhLXrl182sITxhWCqtbqqZTQG1TU9PlIV7pm/79PjhV8AY/gKGzVGfwnqJV5lFT/KUfcXjSqNg7xbYCAAkAVVIR6AMkgsQ6HRqWiSIbd3+30WWwWo9lm6b95HxVf8zlRzPGv1Ua9txMAF1ERgp/890EFrrbnSXJn+/YxwkIYyXqzcrXD3EAaSTPZ/pPNh1GynjSSdWQbKh7wo4JwgjvQ36P8gdr4hBsOh4e5J3o/HwB6hX8MHgBJPo6rtqntK91LWmIkhp+8MhyPhBTnRPtyJr0gd88lnT2O7389d+VstD0uuk8mpMTpXnl9PWUwbdd8BM9REQzVXdxfQEW1EVDlD7gTpvEzqAOg9c2iWd9O8LEYz8diuLOF41q0B/4PAAD//wEAAP//a46HeAAAAAEAAAACC4U6l7jrXw889QABA+gAAAAA2F2ghAAAAADdZi82/jf+xAhtA/EAAQADAAIAAAAAAAAAAQAAA9j+7wAACJj+N/43CG0AAQAAAAAAAAAAAAAAAAAAABsCsgBQAMgAAAI9//oCRgAuAnsATQIMAE0CBgBNAiwAGQKZAEkCDwAqAdMAJAI9ACcCBgAkAjsAQQEUADcBHgBBAjwAQQIrACQBjgBBAbsAFQF/ABECOAA8AgsADAMIABgCEAAeARQAQQAA/60AAAAsACwAUAB8AKAAtADEANYA9AEsAVgBigG+AeAB7AIIAioCVgJ2ArIC2AL6AxYDTgN6A4YDnAABAAAAGwCQAAwAYwAHAAEAAAAAAAAAAAAAAAAABAADeJyclM9uG1UUxn9ObNMKwQJFVbqJ7oJFkejYVEnVNiuH1IpFFAePC0JCSBPP+I8ynhl5Jg7hCVjzFrxFVzwEz4FYo/l87NgF0SaKknx37vnznXO+c4Ed/mabSvUh8Ec9MVxhr35ueIsH9RPD27TrW4arPKn9abhGWJsbrvN5rWf4I95WfzP8gP3qT4YfslttG/6YZ9Udw59sO/4y/Cn7vF3gCrzgV8MVdskMb7HDj4a3eYTFrFR5RNNwjc/YM1xnD+gzoSBmQsIIx5AJI66YEZHjEzFjwpCIEEeHFjGFviYEQo7Rf34N8CmYESjimAJHjE9MQM7YIv4ir5RzZRzqNLO7FgVjAi7kcUlAgiNlREpCxKXiFBRkvKJBg5yB+GYU5HjkTIjxSJkxokGXNqf0GTMhx9FWpJKZT8qQgmsC5XdmUXZmQERCbqyuSAjF04lfJO8Opzi6ZLJdj3y6EeFLHN/Ju+SWyvYrPP26NWabeZdsAubqZ6yuxLq51gTHui3ztvhWuOAV7l792WTy/h6F+l8o8gVXmn+oSSVikuDcLi18Kch3j3Ec6dzBV0e+p0OfE7q8oa9zix49WpzRp8Nr+Xbp4fiaLmccy6MjvLhrSzFn/IDjGzqyKWNH1p/FxCJ+JjN15+I4Ux1TMvW8ZO6p1kgV3n3C5Q6lG+rI5TPQHpWWTvNLtGcBI1NFJoZT9XKpjdz6F5oipqqlnO3tfbkNc9u95RbfkGqHS7UuOJWTWzB631S9dzRzrR+PgJCUC1kMSJnSoOBGvM8JuCLGcazunWhLClornzLPjVQSMRWDDonizMj0NzDd+MZ9sKF7Z29JKP+S6eWqqvtkcerV7YzeqHvLO9+6HK1NoGFTTdfUNBDXxLQfaafW+fvyzfW6pTzliJSY8F8vwDM8muxzwCFjZRjoZm6vQ1MvRJOXHKr6SyJZDaXnyCIc4PGcAw54yfN3+rhk4oyLW3FZz93imCO6HH5QFQv7Lke8Xn37/6y/i2lTtTierk4v7j3FJ3dQ6xfas9v3sqeJlZOYW7TbrTgjYFpycbvrNbnHeP8AAAD//wEAAP//9LdPUXicYmBmAIP/5xiMGLAAAAAAAP//AQAA//8vAQIDAAAA"); src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape { }]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision; shape-rendering: geometricPrecision;
@ -25,78 +25,78 @@
opacity: 0.5; opacity: 0.5;
} }
.d2-974195226 .fill-N1{fill:#0A0F25;} .d2-1702214057 .fill-N1{fill:#0A0F25;}
.d2-974195226 .fill-N2{fill:#676C7E;} .d2-1702214057 .fill-N2{fill:#676C7E;}
.d2-974195226 .fill-N3{fill:#9499AB;} .d2-1702214057 .fill-N3{fill:#9499AB;}
.d2-974195226 .fill-N4{fill:#CFD2DD;} .d2-1702214057 .fill-N4{fill:#CFD2DD;}
.d2-974195226 .fill-N5{fill:#DEE1EB;} .d2-1702214057 .fill-N5{fill:#DEE1EB;}
.d2-974195226 .fill-N6{fill:#EEF1F8;} .d2-1702214057 .fill-N6{fill:#EEF1F8;}
.d2-974195226 .fill-N7{fill:#FFFFFF;} .d2-1702214057 .fill-N7{fill:#FFFFFF;}
.d2-974195226 .fill-B1{fill:#0D32B2;} .d2-1702214057 .fill-B1{fill:#0D32B2;}
.d2-974195226 .fill-B2{fill:#0D32B2;} .d2-1702214057 .fill-B2{fill:#0D32B2;}
.d2-974195226 .fill-B3{fill:#E3E9FD;} .d2-1702214057 .fill-B3{fill:#E3E9FD;}
.d2-974195226 .fill-B4{fill:#E3E9FD;} .d2-1702214057 .fill-B4{fill:#E3E9FD;}
.d2-974195226 .fill-B5{fill:#EDF0FD;} .d2-1702214057 .fill-B5{fill:#EDF0FD;}
.d2-974195226 .fill-B6{fill:#F7F8FE;} .d2-1702214057 .fill-B6{fill:#F7F8FE;}
.d2-974195226 .fill-AA2{fill:#4A6FF3;} .d2-1702214057 .fill-AA2{fill:#4A6FF3;}
.d2-974195226 .fill-AA4{fill:#EDF0FD;} .d2-1702214057 .fill-AA4{fill:#EDF0FD;}
.d2-974195226 .fill-AA5{fill:#F7F8FE;} .d2-1702214057 .fill-AA5{fill:#F7F8FE;}
.d2-974195226 .fill-AB4{fill:#EDF0FD;} .d2-1702214057 .fill-AB4{fill:#EDF0FD;}
.d2-974195226 .fill-AB5{fill:#F7F8FE;} .d2-1702214057 .fill-AB5{fill:#F7F8FE;}
.d2-974195226 .stroke-N1{stroke:#0A0F25;} .d2-1702214057 .stroke-N1{stroke:#0A0F25;}
.d2-974195226 .stroke-N2{stroke:#676C7E;} .d2-1702214057 .stroke-N2{stroke:#676C7E;}
.d2-974195226 .stroke-N3{stroke:#9499AB;} .d2-1702214057 .stroke-N3{stroke:#9499AB;}
.d2-974195226 .stroke-N4{stroke:#CFD2DD;} .d2-1702214057 .stroke-N4{stroke:#CFD2DD;}
.d2-974195226 .stroke-N5{stroke:#DEE1EB;} .d2-1702214057 .stroke-N5{stroke:#DEE1EB;}
.d2-974195226 .stroke-N6{stroke:#EEF1F8;} .d2-1702214057 .stroke-N6{stroke:#EEF1F8;}
.d2-974195226 .stroke-N7{stroke:#FFFFFF;} .d2-1702214057 .stroke-N7{stroke:#FFFFFF;}
.d2-974195226 .stroke-B1{stroke:#0D32B2;} .d2-1702214057 .stroke-B1{stroke:#0D32B2;}
.d2-974195226 .stroke-B2{stroke:#0D32B2;} .d2-1702214057 .stroke-B2{stroke:#0D32B2;}
.d2-974195226 .stroke-B3{stroke:#E3E9FD;} .d2-1702214057 .stroke-B3{stroke:#E3E9FD;}
.d2-974195226 .stroke-B4{stroke:#E3E9FD;} .d2-1702214057 .stroke-B4{stroke:#E3E9FD;}
.d2-974195226 .stroke-B5{stroke:#EDF0FD;} .d2-1702214057 .stroke-B5{stroke:#EDF0FD;}
.d2-974195226 .stroke-B6{stroke:#F7F8FE;} .d2-1702214057 .stroke-B6{stroke:#F7F8FE;}
.d2-974195226 .stroke-AA2{stroke:#4A6FF3;} .d2-1702214057 .stroke-AA2{stroke:#4A6FF3;}
.d2-974195226 .stroke-AA4{stroke:#EDF0FD;} .d2-1702214057 .stroke-AA4{stroke:#EDF0FD;}
.d2-974195226 .stroke-AA5{stroke:#F7F8FE;} .d2-1702214057 .stroke-AA5{stroke:#F7F8FE;}
.d2-974195226 .stroke-AB4{stroke:#EDF0FD;} .d2-1702214057 .stroke-AB4{stroke:#EDF0FD;}
.d2-974195226 .stroke-AB5{stroke:#F7F8FE;} .d2-1702214057 .stroke-AB5{stroke:#F7F8FE;}
.d2-974195226 .background-color-N1{background-color:#0A0F25;} .d2-1702214057 .background-color-N1{background-color:#0A0F25;}
.d2-974195226 .background-color-N2{background-color:#676C7E;} .d2-1702214057 .background-color-N2{background-color:#676C7E;}
.d2-974195226 .background-color-N3{background-color:#9499AB;} .d2-1702214057 .background-color-N3{background-color:#9499AB;}
.d2-974195226 .background-color-N4{background-color:#CFD2DD;} .d2-1702214057 .background-color-N4{background-color:#CFD2DD;}
.d2-974195226 .background-color-N5{background-color:#DEE1EB;} .d2-1702214057 .background-color-N5{background-color:#DEE1EB;}
.d2-974195226 .background-color-N6{background-color:#EEF1F8;} .d2-1702214057 .background-color-N6{background-color:#EEF1F8;}
.d2-974195226 .background-color-N7{background-color:#FFFFFF;} .d2-1702214057 .background-color-N7{background-color:#FFFFFF;}
.d2-974195226 .background-color-B1{background-color:#0D32B2;} .d2-1702214057 .background-color-B1{background-color:#0D32B2;}
.d2-974195226 .background-color-B2{background-color:#0D32B2;} .d2-1702214057 .background-color-B2{background-color:#0D32B2;}
.d2-974195226 .background-color-B3{background-color:#E3E9FD;} .d2-1702214057 .background-color-B3{background-color:#E3E9FD;}
.d2-974195226 .background-color-B4{background-color:#E3E9FD;} .d2-1702214057 .background-color-B4{background-color:#E3E9FD;}
.d2-974195226 .background-color-B5{background-color:#EDF0FD;} .d2-1702214057 .background-color-B5{background-color:#EDF0FD;}
.d2-974195226 .background-color-B6{background-color:#F7F8FE;} .d2-1702214057 .background-color-B6{background-color:#F7F8FE;}
.d2-974195226 .background-color-AA2{background-color:#4A6FF3;} .d2-1702214057 .background-color-AA2{background-color:#4A6FF3;}
.d2-974195226 .background-color-AA4{background-color:#EDF0FD;} .d2-1702214057 .background-color-AA4{background-color:#EDF0FD;}
.d2-974195226 .background-color-AA5{background-color:#F7F8FE;} .d2-1702214057 .background-color-AA5{background-color:#F7F8FE;}
.d2-974195226 .background-color-AB4{background-color:#EDF0FD;} .d2-1702214057 .background-color-AB4{background-color:#EDF0FD;}
.d2-974195226 .background-color-AB5{background-color:#F7F8FE;} .d2-1702214057 .background-color-AB5{background-color:#F7F8FE;}
.d2-974195226 .color-N1{color:#0A0F25;} .d2-1702214057 .color-N1{color:#0A0F25;}
.d2-974195226 .color-N2{color:#676C7E;} .d2-1702214057 .color-N2{color:#676C7E;}
.d2-974195226 .color-N3{color:#9499AB;} .d2-1702214057 .color-N3{color:#9499AB;}
.d2-974195226 .color-N4{color:#CFD2DD;} .d2-1702214057 .color-N4{color:#CFD2DD;}
.d2-974195226 .color-N5{color:#DEE1EB;} .d2-1702214057 .color-N5{color:#DEE1EB;}
.d2-974195226 .color-N6{color:#EEF1F8;} .d2-1702214057 .color-N6{color:#EEF1F8;}
.d2-974195226 .color-N7{color:#FFFFFF;} .d2-1702214057 .color-N7{color:#FFFFFF;}
.d2-974195226 .color-B1{color:#0D32B2;} .d2-1702214057 .color-B1{color:#0D32B2;}
.d2-974195226 .color-B2{color:#0D32B2;} .d2-1702214057 .color-B2{color:#0D32B2;}
.d2-974195226 .color-B3{color:#E3E9FD;} .d2-1702214057 .color-B3{color:#E3E9FD;}
.d2-974195226 .color-B4{color:#E3E9FD;} .d2-1702214057 .color-B4{color:#E3E9FD;}
.d2-974195226 .color-B5{color:#EDF0FD;} .d2-1702214057 .color-B5{color:#EDF0FD;}
.d2-974195226 .color-B6{color:#F7F8FE;} .d2-1702214057 .color-B6{color:#F7F8FE;}
.d2-974195226 .color-AA2{color:#4A6FF3;} .d2-1702214057 .color-AA2{color:#4A6FF3;}
.d2-974195226 .color-AA4{color:#EDF0FD;} .d2-1702214057 .color-AA4{color:#EDF0FD;}
.d2-974195226 .color-AA5{color:#F7F8FE;} .d2-1702214057 .color-AA5{color:#F7F8FE;}
.d2-974195226 .color-AB4{color:#EDF0FD;} .d2-1702214057 .color-AB4{color:#EDF0FD;}
.d2-974195226 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="The Universe"><g class="shape" ><rect x="12.000000" y="12.000000" width="400.000000" height="366.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="212.000000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">The Universe</text></g><g id="The Universe.FirstTwo"><g class="shape" ><rect x="12.000000" y="58.000000" width="300.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="162.000000" y="96.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">FirstTwo</text></g><g id="The Universe.Last"><g class="shape" ><rect x="312.000000" y="58.000000" width="100.000000" height="66.000000" fill="red" class=" stroke-B1" style="stroke-width:2;" /></g><text x="362.000000" y="96.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Last</text></g><g id="The Universe.TALA"><g class="shape" ><rect x="12.000000" y="124.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="The Universe.D2"><g class="shape" ><rect x="112.000000" y="124.000000" width="200.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="212.000000" y="226.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.Cloud"><g class="shape" ><rect x="312.000000" y="124.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="362.000000" y="226.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><g id="The Universe.Terrastruct"><g class="shape" ><rect x="12.000000" y="317.000000" width="400.000000" height="61.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="212.000000" y="353.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Terrastruct</text></g><g id="The Universe.TALA.TALA"><g class="shape" ><rect x="12.000000" y="124.000000" width="100.000000" height="61.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="160.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">TALA</text></g><g id="The Universe.TALA.D2"><g class="shape" ><rect x="12.000000" y="185.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="223.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.TALA.Cloud"><g class="shape" ><rect x="12.000000" y="251.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="289.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><mask id="d2-974195226" maskUnits="userSpaceOnUse" x="11" y="11" width="402" height="368"> .d2-1702214057 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="The Universe"><g class="shape" ><rect x="12.000000" y="12.000000" width="400.000000" height="366.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="212.000000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">The Universe</text></g><g id="The Universe.FirstTwo"><g class="shape" ><rect x="12.000000" y="58.000000" width="300.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="162.000000" y="96.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">FirstTwo</text></g><g id="The Universe.Last"><g class="shape" ><rect x="312.000000" y="58.000000" width="100.000000" height="66.000000" fill="red" class=" stroke-B1" style="stroke-width:2;" /></g><text x="362.000000" y="96.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Last</text></g><g id="The Universe.TALA"><g class="shape" ><rect x="12.000000" y="124.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="The Universe.D2"><g class="shape" ><rect x="112.000000" y="124.000000" width="200.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="212.000000" y="226.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.Cloud"><g class="shape" ><rect x="312.000000" y="124.000000" width="100.000000" height="193.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="362.000000" y="226.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><g id="The Universe.Terrastruct"><g class="shape" ><rect x="12.000000" y="317.000000" width="400.000000" height="61.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="212.000000" y="353.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Terrastruct</text></g><g id="The Universe.TALA.TALA"><g class="shape" ><rect x="12.000000" y="124.000000" width="100.000000" height="61.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="160.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">TALA</text></g><g id="The Universe.TALA.D2"><g class="shape" ><rect x="12.000000" y="185.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="223.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">D2</text></g><g id="The Universe.TALA.Cloud"><g class="shape" ><rect x="12.000000" y="251.000000" width="100.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="62.000000" y="289.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Cloud</text></g><mask id="d2-1702214057" maskUnits="userSpaceOnUse" x="11" y="11" width="402" height="368">
<rect x="11" y="11" width="402" height="368" fill="white"></rect> <rect x="11" y="11" width="402" height="368" fill="white"></rect>
<rect x="136.000000" y="17.000000" width="152" height="36" fill="rgba(0,0,0,0.75)"></rect> <rect x="136.000000" y="17.000000" width="152" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="131.000000" y="80.500000" width="62" height="21" fill="rgba(0,0,0,0.75)"></rect> <rect x="131.000000" y="80.500000" width="62" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -2499,7 +2499,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 2 "level": 2
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View file

@ -2499,7 +2499,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 2 "level": 2
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View file

@ -922,7 +922,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -922,7 +922,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -40,7 +40,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -81,7 +80,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View file

@ -40,7 +40,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },
@ -81,7 +80,6 @@
"underline": false, "underline": false,
"labelWidth": 0, "labelWidth": 0,
"labelHeight": 0, "labelHeight": 0,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0, "zIndex": 0,
"level": 1 "level": 1
}, },

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB