mirror of
https://github.com/number571/go-peer.git
synced 2026-09-12 19:50:00 +05:00
update
This commit is contained in:
parent
aec4252865
commit
feef44f0cd
@ -29,6 +29,7 @@ type sNode struct {
|
||||
fMutex sync.RWMutex
|
||||
fState state.IState
|
||||
fSettings ISettings
|
||||
fHandlerF IHandlerF
|
||||
fLogger logger.ILogger
|
||||
fAdapter adapters.IAdapter
|
||||
fKVDatavase database.IKVDatabase
|
||||
@ -40,6 +41,7 @@ type sNode struct {
|
||||
|
||||
func NewNode(
|
||||
pSett ISettings,
|
||||
pHandlerF IHandlerF,
|
||||
pLogger logger.ILogger,
|
||||
pAdapter adapters.IAdapter,
|
||||
pKVDatavase database.IKVDatabase,
|
||||
@ -49,6 +51,7 @@ func NewNode(
|
||||
return &sNode{
|
||||
fState: state.NewBoolState(),
|
||||
fSettings: pSett,
|
||||
fHandlerF: pHandlerF,
|
||||
fLogger: pLogger,
|
||||
fAdapter: pAdapter,
|
||||
fKVDatavase: pKVDatavase,
|
||||
@ -156,11 +159,6 @@ func (p *sNode) GetKeysContainer() layer2.IKeysContainer {
|
||||
return p.fKeysContainer
|
||||
}
|
||||
|
||||
func (p *sNode) HandleFunc(pHead uint32, pHandle IHandlerF) INode {
|
||||
p.setRoute(pHead, pHandle)
|
||||
return p
|
||||
}
|
||||
|
||||
// Send message without response waiting.
|
||||
func (p *sNode) SendPayload(
|
||||
_ context.Context,
|
||||
@ -338,15 +336,8 @@ func (p *sNode) handleRequest(
|
||||
pHead iHead,
|
||||
pBody []byte,
|
||||
) {
|
||||
// get function by payload head
|
||||
f, ok := p.getRoute(pHead.getRoute())
|
||||
if !ok || f == nil {
|
||||
p.fLogger.PushWarn(pLogBuilder.WithType(anon_logger.CLogWarnUnknownRoute))
|
||||
return
|
||||
}
|
||||
|
||||
// response can be nil
|
||||
resp, err := f(pCtx, p, pSender, pBody)
|
||||
resp, err := p.fHandlerF(pCtx, p, pSender, pBody)
|
||||
if err != nil {
|
||||
p.fLogger.PushWarn(pLogBuilder.WithType(anon_logger.CLogWarnIncorrectResponse))
|
||||
return
|
||||
@ -459,21 +450,6 @@ func (p *sNode) storeHashIntoDatabase(pLogBuilder anon_logger.ILogBuilder, pNetM
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *sNode) setRoute(pHead uint32, pHandle IHandlerF) {
|
||||
p.fMutex.Lock()
|
||||
defer p.fMutex.Unlock()
|
||||
|
||||
p.fHandleRoutes[pHead] = pHandle
|
||||
}
|
||||
|
||||
func (p *sNode) getRoute(pHead uint32) (IHandlerF, bool) {
|
||||
p.fMutex.RLock()
|
||||
defer p.fMutex.RUnlock()
|
||||
|
||||
f, ok := p.fHandleRoutes[pHead]
|
||||
return f, ok
|
||||
}
|
||||
|
||||
func (p *sNode) getAction(pActionKey string) (chan []byte, bool) {
|
||||
p.fMutex.RLock()
|
||||
defer p.fMutex.RUnlock()
|
||||
|
||||
@ -56,7 +56,9 @@ func TestNodeSettings(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
node, _, _ := testRunNodeWithDB(ctx, time.Minute, "", &tsDatabase{})
|
||||
node, _, _ := testRunNodeWithDB(ctx, time.Minute, "", &tsDatabase{}, func(ctx context.Context, i INode, ik layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
return nil, nil
|
||||
})
|
||||
defer testFreeNodes([]INode{node}, 9)
|
||||
|
||||
sett := node.GetSettings()
|
||||
@ -107,7 +109,9 @@ func TestComplexFetchPayload(t *testing.T) {
|
||||
defer cancel()
|
||||
|
||||
addresses := [2]string{testutils.TgAddrs[2], testutils.TgAddrs[3]}
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 0)
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 0, func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
return []byte(string(reqBytes) + " (response)"), nil
|
||||
})
|
||||
if nodes[0] == nil {
|
||||
t.Fatal("nodes is null")
|
||||
}
|
||||
@ -150,7 +154,9 @@ func TestF2FWithoutFriends(t *testing.T) {
|
||||
|
||||
// 3 seconds for wait
|
||||
addresses := [2]string{testutils.TgAddrs[10], testutils.TgAddrs[11]}
|
||||
nodes, privKeys := testRunNodes(ctx, t, 3*time.Second, addresses, 1)
|
||||
nodes, privKeys := testRunNodes(ctx, t, 3*time.Second, addresses, 1, func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
return []byte(string(reqBytes) + " (response)"), nil
|
||||
})
|
||||
if nodes[0] == nil {
|
||||
t.Fatal("nodes is null")
|
||||
}
|
||||
@ -179,19 +185,14 @@ func TestFetchPayload(t *testing.T) {
|
||||
defer cancel()
|
||||
|
||||
addresses := [2]string{testutils.TgAddrs[12], testutils.TgAddrs[13]}
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 4)
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 4, func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
return []byte(fmt.Sprintf("echo: '%s'", string(reqBytes))), nil
|
||||
})
|
||||
if nodes[0] == nil {
|
||||
t.Fatal("nodes is null")
|
||||
}
|
||||
defer testFreeNodes(nodes[:], 4)
|
||||
|
||||
nodes[1].HandleFunc(
|
||||
tcHead,
|
||||
func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
return []byte(fmt.Sprintf("echo: '%s'", string(reqBytes))), nil
|
||||
},
|
||||
)
|
||||
|
||||
largeBodySize := nodes[0].GetQBProcessor().GetScheme().GetPayloadLimit() - encoding.CSizeUint64 + 1
|
||||
_, err := nodes[0].FetchPayload(
|
||||
ctx,
|
||||
@ -222,23 +223,18 @@ func TestBroadcastPayload(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
chResult := make(chan string)
|
||||
addresses := [2]string{testutils.TgAddrs[14], testutils.TgAddrs[15]}
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 3)
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 3, func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
res := fmt.Sprintf("echo: '%s'", string(reqBytes))
|
||||
go func() { chResult <- res }()
|
||||
return nil, nil
|
||||
})
|
||||
if nodes[0] == nil {
|
||||
t.Fatal("nodes is null")
|
||||
}
|
||||
defer testFreeNodes(nodes[:], 3)
|
||||
|
||||
chResult := make(chan string)
|
||||
nodes[1].HandleFunc(
|
||||
tcHead,
|
||||
func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
res := fmt.Sprintf("echo: '%s'", string(reqBytes))
|
||||
go func() { chResult <- res }()
|
||||
return nil, nil
|
||||
},
|
||||
)
|
||||
|
||||
largeBodySize := nodes[0].GetQBProcessor().GetScheme().GetPayloadLimit() - encoding.CSizeUint64 + 1
|
||||
err := nodes[0].SendPayload(
|
||||
context.Background(),
|
||||
@ -276,7 +272,9 @@ func TestEnqueuePayload(t *testing.T) {
|
||||
defer cancel()
|
||||
|
||||
addresses := [2]string{testutils.TgAddrs[16], testutils.TgAddrs[17]}
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 8)
|
||||
nodes, privKeys := testRunNodes(ctx, t, time.Minute, addresses, 8, func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
return []byte(string(reqBytes) + " (response)"), nil
|
||||
})
|
||||
if nodes[0] == nil {
|
||||
t.Fatal("nodes is null")
|
||||
}
|
||||
@ -321,7 +319,9 @@ func TestHandleWrapper(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 7, 0)
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 7, 0, func(_ context.Context, _ INode, _ layer2.IParticipantKey, _ []byte) ([]byte, error) {
|
||||
return nil, errors.New("some error") //nolint:err113
|
||||
})
|
||||
defer testFreeNodes([]INode{_node}, 7)
|
||||
|
||||
node := _node.(*sNode)
|
||||
@ -372,13 +372,6 @@ func TestHandleWrapper(t *testing.T) {
|
||||
t.Fatal(err) // works only logger
|
||||
}
|
||||
|
||||
node.HandleFunc(
|
||||
111,
|
||||
func(_ context.Context, _ INode, _ layer2.IParticipantKey, _ []byte) ([]byte, error) {
|
||||
return nil, errors.New("some error") //nolint:err113
|
||||
},
|
||||
)
|
||||
|
||||
msg2, err := scheme.EncryptMessage(
|
||||
pubKey,
|
||||
payload.NewPayload64(
|
||||
@ -445,7 +438,9 @@ func TestStoreHashWithBroadcastMessage(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 6, 0)
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 6, 0, func(ctx context.Context, i INode, ik layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
return nil, nil
|
||||
})
|
||||
defer testFreeNodes([]INode{_node}, 6)
|
||||
|
||||
node := _node.(*sNode)
|
||||
@ -487,7 +482,9 @@ func TestRecvSendMessage(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 5, 0)
|
||||
_node, _, privKey := testRunNode(ctx, time.Minute, "", 5, 0, func(ctx context.Context, i INode, ik layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
return nil, nil
|
||||
})
|
||||
defer testFreeNodes([]INode{_node}, 5)
|
||||
|
||||
node := _node.(*sNode)
|
||||
@ -549,14 +546,14 @@ func TestRecvSendMessage(t *testing.T) {
|
||||
// nodes[2], nodes[3], nodes[4] = routes
|
||||
// nodes[2], nodes[4] are have open ports
|
||||
// Scheme: (nodes[0]) -> nodes[2] -> nodes[3] -> nodes[4] -> (nodes[1])
|
||||
func testRunNodes(ctx context.Context, t *testing.T, timeWait time.Duration, addresses [2]string, typeDB int) ([5]INode, [5]asymmetric.IPrivKey) {
|
||||
func testRunNodes(ctx context.Context, t *testing.T, timeWait time.Duration, addresses [2]string, typeDB int, handlerF IHandlerF) ([5]INode, [5]asymmetric.IPrivKey) {
|
||||
nodes := [5]INode{}
|
||||
networkNodes := [5]network.INode{}
|
||||
privKeys := [5]asymmetric.IPrivKey{}
|
||||
addrs := [5]string{"", "", addresses[0], "", addresses[1]}
|
||||
|
||||
for i := 0; i < 5; i++ {
|
||||
nodes[i], networkNodes[i], privKeys[i] = testRunNode(ctx, timeWait, addrs[i], typeDB, i)
|
||||
nodes[i], networkNodes[i], privKeys[i] = testRunNode(ctx, timeWait, addrs[i], typeDB, i, handlerF)
|
||||
if nodes[i] == nil {
|
||||
t.Errorf("node (%d) is not running %d", i, typeDB)
|
||||
return [5]INode{}, [5]asymmetric.IPrivKey{}
|
||||
@ -569,16 +566,6 @@ func testRunNodes(ctx context.Context, t *testing.T, timeWait time.Duration, add
|
||||
nodes[0].GetKeysContainer().Add(pubKey1)
|
||||
nodes[1].GetKeysContainer().Add(pubKey0)
|
||||
|
||||
for _, node := range nodes {
|
||||
node.HandleFunc(
|
||||
tcHead,
|
||||
func(_ context.Context, _ INode, _ layer2.IParticipantKey, reqBytes []byte) ([]byte, error) {
|
||||
// send response
|
||||
return []byte(string(reqBytes) + " (response)"), nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
go func() {
|
||||
if err := networkNodes[2].Run(ctx); err != nil && !errors.Is(err, net.ErrClosed) && !errors.Is(err, context.Canceled) {
|
||||
t.Error(err)
|
||||
@ -645,7 +632,7 @@ func (p *stLogging) HasErro() bool {
|
||||
}
|
||||
*/
|
||||
|
||||
func testRunNodeWithDB(ctx context.Context, timeWait time.Duration, addr string, db database.IKVDatabase) (INode, network.INode, asymmetric.IPrivKey) {
|
||||
func testRunNodeWithDB(ctx context.Context, timeWait time.Duration, addr string, db database.IKVDatabase, handlerF IHandlerF) (INode, network.INode, asymmetric.IPrivKey) {
|
||||
privKey := asymmetric.NewPrivKey()
|
||||
msgChan := make(chan layer1.IMessage)
|
||||
parallel := uint64(1)
|
||||
@ -678,6 +665,7 @@ func testRunNodeWithDB(ctx context.Context, timeWait time.Duration, addr string,
|
||||
FServiceName: "TEST",
|
||||
FFetchTimeout: timeWait,
|
||||
}),
|
||||
handlerF,
|
||||
// internal_std_logger.NewStdLogger(&stLogging{}, internal_anon_logger.GetLogFunc()),
|
||||
logger.NewLogger(
|
||||
logger.NewSettings(&logger.SSettings{}),
|
||||
@ -721,12 +709,12 @@ func testRunNodeWithDB(ctx context.Context, timeWait time.Duration, addr string,
|
||||
return node, networkNode, privKey
|
||||
}
|
||||
|
||||
func testRunNode(ctx context.Context, timeWait time.Duration, addr string, typeDB, numDB int) (INode, network.INode, asymmetric.IPrivKey) {
|
||||
func testRunNode(ctx context.Context, timeWait time.Duration, addr string, typeDB, numDB int, handlerF IHandlerF) (INode, network.INode, asymmetric.IPrivKey) {
|
||||
db, err := database.NewKVDatabase(fmt.Sprintf(tcPathDBTemplate, typeDB, numDB))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return testRunNodeWithDB(ctx, timeWait, addr, db)
|
||||
return testRunNodeWithDB(ctx, timeWait, addr, db, handlerF)
|
||||
}
|
||||
|
||||
func testFreeNodes(nodes []INode, typeDB int) {
|
||||
|
||||
@ -69,6 +69,9 @@ func newNode(serviceName, address string) *sNode {
|
||||
FServiceName: serviceName,
|
||||
FFetchTimeout: time.Minute,
|
||||
}),
|
||||
func(_ context.Context, _ anonymity.INode, _ layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
return []byte("echo: " + string(b)), nil
|
||||
},
|
||||
logger.NewLogger(
|
||||
logger.NewSettings(&logger.SSettings{
|
||||
FInfo: os.Stdout,
|
||||
|
||||
@ -5,8 +5,6 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
anonymity "github.com/number571/go-peer/pkg/anonymity/qb"
|
||||
"github.com/number571/go-peer/pkg/crypto/scheme/layer2"
|
||||
"github.com/number571/go-peer/pkg/payload"
|
||||
)
|
||||
|
||||
@ -49,12 +47,6 @@ func runClientNode() *sNode {
|
||||
func runServiceNode() *sNode {
|
||||
ctx := context.Background()
|
||||
node := newNode("snode", nodeAddress)
|
||||
node.fAnonymity.HandleFunc(
|
||||
nodeRouter,
|
||||
func(_ context.Context, _ anonymity.INode, _ layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
return []byte("echo: " + string(b)), nil
|
||||
},
|
||||
)
|
||||
|
||||
go func() { _ = node.fAnonymity.Run(ctx) }()
|
||||
go func() { _ = node.fNetwork.Run(ctx) }()
|
||||
|
||||
@ -16,9 +16,11 @@ import (
|
||||
"github.com/number571/go-peer/pkg/crypto/scheme/layer1"
|
||||
"github.com/number571/go-peer/pkg/crypto/scheme/layer2"
|
||||
"github.com/number571/go-peer/pkg/crypto/scheme/layer2/hybrid"
|
||||
"github.com/number571/go-peer/pkg/encoding"
|
||||
"github.com/number571/go-peer/pkg/logger"
|
||||
"github.com/number571/go-peer/pkg/network"
|
||||
"github.com/number571/go-peer/pkg/network/conn"
|
||||
"github.com/number571/go-peer/pkg/payload"
|
||||
"github.com/number571/go-peer/pkg/storage/cache"
|
||||
"github.com/number571/go-peer/pkg/storage/database"
|
||||
)
|
||||
@ -69,6 +71,7 @@ func newNode(serviceName, address string) *sNode {
|
||||
FServiceName: serviceName,
|
||||
FFetchTimeout: time.Minute,
|
||||
}),
|
||||
handler,
|
||||
logger.NewLogger(
|
||||
logger.NewSettings(&logger.SSettings{
|
||||
FInfo: os.Stdout,
|
||||
@ -141,3 +144,25 @@ func exchangeKeys(node1, node2 *sNode) (layer2.IParticipantKey, layer2.IParticip
|
||||
|
||||
return pubKey1, pubKey2
|
||||
}
|
||||
|
||||
var (
|
||||
handler = func(ctx context.Context, n anonymity.INode, pKey layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
numBytes := [encoding.CSizeUint64]byte{}
|
||||
copy(numBytes[:], b)
|
||||
|
||||
num := encoding.BytesToUint64(numBytes)
|
||||
msg := "ping"
|
||||
if num%2 == 1 {
|
||||
msg = "pong"
|
||||
}
|
||||
fmt.Printf("%s-%d\n", msg, num)
|
||||
|
||||
numBytes = encoding.Uint64ToBytes(num + 1)
|
||||
_ = n.SendPayload(
|
||||
ctx,
|
||||
pKey,
|
||||
payload.NewPayload64(uint64(nodeRouter), numBytes[:]),
|
||||
)
|
||||
return nil, nil
|
||||
}
|
||||
)
|
||||
|
||||
@ -2,11 +2,8 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
anonymity "github.com/number571/go-peer/pkg/anonymity/qb"
|
||||
"github.com/number571/go-peer/pkg/crypto/scheme/layer2"
|
||||
"github.com/number571/go-peer/pkg/encoding"
|
||||
"github.com/number571/go-peer/pkg/payload"
|
||||
)
|
||||
@ -16,28 +13,6 @@ const (
|
||||
nodeRouter = uint32(0xA557711A)
|
||||
)
|
||||
|
||||
var (
|
||||
handler = func(ctx context.Context, n anonymity.INode, pKey layer2.IParticipantKey, b []byte) ([]byte, error) {
|
||||
numBytes := [encoding.CSizeUint64]byte{}
|
||||
copy(numBytes[:], b)
|
||||
|
||||
num := encoding.BytesToUint64(numBytes)
|
||||
msg := "ping"
|
||||
if num%2 == 1 {
|
||||
msg = "pong"
|
||||
}
|
||||
fmt.Printf("%s-%d\n", msg, num)
|
||||
|
||||
numBytes = encoding.Uint64ToBytes(num + 1)
|
||||
_ = n.SendPayload(
|
||||
ctx,
|
||||
pKey,
|
||||
payload.NewPayload64(uint64(nodeRouter), numBytes[:]),
|
||||
)
|
||||
return nil, nil
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
printTagVersion()
|
||||
}
|
||||
@ -61,7 +36,6 @@ func main() {
|
||||
func runClientNode() *sNode {
|
||||
ctx := context.Background()
|
||||
node := newNode("cnode", "")
|
||||
node.fAnonymity.HandleFunc(nodeRouter, handler)
|
||||
|
||||
go func() { _ = node.fAnonymity.Run(ctx) }()
|
||||
_ = node.fNetwork.AddConnection(ctx, nodeAddress)
|
||||
@ -72,7 +46,6 @@ func runClientNode() *sNode {
|
||||
func runServiceNode() *sNode {
|
||||
ctx := context.Background()
|
||||
node := newNode("snode", nodeAddress)
|
||||
node.fAnonymity.HandleFunc(nodeRouter, handler)
|
||||
|
||||
go func() { _ = node.fAnonymity.Run(ctx) }()
|
||||
go func() { _ = node.fNetwork.Run(ctx) }()
|
||||
|
||||
@ -19,7 +19,6 @@ type (
|
||||
|
||||
type INode interface {
|
||||
types.IRunner
|
||||
HandleFunc(uint32, IHandlerF) INode
|
||||
|
||||
GetLogger() logger.ILogger
|
||||
GetSettings() ISettings
|
||||
|
||||
@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="code lines: 12931"><title>code lines: 12931</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="57" height="20" fill="#555"/><rect x="57" width="40" height="20" fill="#4682b4"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">code lines</text><text x="295" y="140" transform="scale(.1)" fill="#fff" textLength="510">code lines</text><text aria-hidden="true" x="770" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="320">12931</text><text x="770" y="140" transform="scale(.1)" fill="#fff" textLength="320">12931</text></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="code lines: 12887"><title>code lines: 12887</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="57" height="20" fill="#555"/><rect x="57" width="40" height="20" fill="#4682b4"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">code lines</text><text x="295" y="140" transform="scale(.1)" fill="#fff" textLength="510">code lines</text><text aria-hidden="true" x="770" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="320">12887</text><text x="770" y="140" transform="scale(.1)" fill="#fff" textLength="320">12887</text></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -7,7 +7,7 @@
|
||||
>
|
||||
|
||||
<g>
|
||||
<rect x="20.000000" y="20.000000" width="988.000000" height="600.000000" style="fill: rgb(4, 115, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="20.000000" y="20.000000" width="988.000000" height="600.000000" style="fill: rgb(5, 116, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="28.000000" y="41.600000" width="961.936809" height="570.400000" style="fill: rgb(4, 116, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="28.000000" y="41.600000" width="961.832402" height="570.400000" style="fill: rgb(5, 116, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -33,18 +33,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="997.936809" y="41.600000" width="2.063191" height="570.400000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="997.832402" y="41.600000" width="2.167598" height="570.400000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="383.924279" y="63.200000" width="449.554686" height="290.598336" style="fill: rgb(3, 114, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="387.533393" y="63.200000" width="444.301171" height="285.066667" style="fill: rgb(4, 114, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(391.924279,78.800000) scale(1.000000)"
|
||||
transform="translate(395.533393,78.800000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">anonymity/qb</text>
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="36.000000" y="63.200000" width="339.924279" height="540.800000" style="fill: rgb(4, 115, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="36.000000" y="63.200000" width="343.533393" height="540.800000" style="fill: rgb(4, 115, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -65,12 +65,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="841.478965" y="445.952821" width="140.457843" height="70.802051" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="839.834565" y="445.952821" width="141.997837" height="70.802051" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(849.478965,461.552821) scale(1.000000)"
|
||||
transform="translate(847.834565,461.552821) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">encoding</text>
|
||||
|
||||
@ -78,12 +78,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="841.478965" y="350.264615" width="140.457843" height="87.688205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="839.834565" y="350.264615" width="141.997837" height="87.688205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(849.478965,365.864615) scale(1.000000)"
|
||||
transform="translate(847.834565,365.864615) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">logger</text>
|
||||
|
||||
@ -91,12 +91,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="383.924279" y="361.798336" width="449.554686" height="242.201664" style="fill: rgb(8, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="387.533393" y="356.266667" width="444.301171" height="247.733333" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(391.924279,377.398336) scale(1.000000)"
|
||||
transform="translate(395.533393,371.866667) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">network</text>
|
||||
|
||||
@ -104,12 +104,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="841.478965" y="240.504615" width="140.457843" height="101.760000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="839.834565" y="240.504615" width="141.997837" height="101.760000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(849.478965,256.104615) scale(1.000000)"
|
||||
transform="translate(847.834565,256.104615) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">payload</text>
|
||||
|
||||
@ -117,12 +117,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="841.478965" y="524.754872" width="87.779254" height="79.245128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="839.834565" y="524.754872" width="88.772798" height="79.245128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(849.478965,540.354872) scale(1.000000)"
|
||||
transform="translate(847.834565,540.354872) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">state</text>
|
||||
|
||||
@ -130,12 +130,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="841.478965" y="63.200000" width="140.457843" height="169.304615" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="839.834565" y="63.200000" width="141.997837" height="169.304615" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(849.478965,78.800000) scale(1.000000)"
|
||||
transform="translate(847.834565,78.800000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">storage</text>
|
||||
|
||||
@ -143,12 +143,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="937.258219" y="524.754872" width="44.678590" height="79.245128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="936.607363" y="524.754872" width="45.225039" height="79.245128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(945.258219,540.354872) scale(0.165964)"
|
||||
transform="translate(944.607363,540.354872) scale(0.169126)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">types/converter.go</text>
|
||||
|
||||
@ -156,12 +156,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="739.835834" y="272.341093" width="45.510361" height="32.728621" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="735.474759" y="268.484507" width="47.062746" height="31.891080" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(747.835834,287.941093) scale(0.341555)"
|
||||
transform="translate(743.474759,284.084507) scale(0.359523)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">action.go</text>
|
||||
|
||||
@ -169,18 +169,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="793.346195" y="317.595117" width="22.099578" height="28.203219" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="790.537505" y="312.807929" width="22.972795" height="27.458738" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="391.924279" y="84.800000" width="241.809226" height="260.998336" style="fill: rgb(2, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="395.533393" y="84.800000" width="230.992998" height="255.466667" style="fill: rgb(3, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(399.924279,100.400000) scale(1.000000)"
|
||||
transform="translate(403.533393,100.400000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">anonymity.go</text>
|
||||
|
||||
@ -188,18 +188,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="823.445773" y="317.595117" width="2.033193" height="28.203219" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="821.510300" y="312.807929" width="2.324265" height="27.458738" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="793.346195" y="272.341093" width="32.132771" height="37.254024" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="790.537505" y="268.484507" width="33.297059" height="36.323422" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(801.346195,287.941093) scale(0.240071)"
|
||||
transform="translate(798.537505,284.084507) scale(0.257397)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">head.go</text>
|
||||
|
||||
@ -207,12 +207,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="641.733505" y="272.341093" width="90.102328" height="73.457243" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="634.526392" y="268.484507" width="92.948368" height="71.782160" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(649.733505,287.941093) scale(0.367571)"
|
||||
transform="translate(642.526392,284.084507) scale(0.381688)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">logger/log_builder.go</text>
|
||||
|
||||
@ -220,12 +220,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="641.733505" y="84.800000" width="183.745460" height="179.541093" style="fill: rgb(8, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="634.526392" y="84.800000" width="189.308173" height="175.684507" style="fill: rgb(8, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(649.733505,100.400000) scale(1.000000)"
|
||||
transform="translate(642.526392,100.400000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">queue</text>
|
||||
|
||||
@ -233,12 +233,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="739.835834" y="313.069715" width="45.510361" height="32.728621" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="735.474759" y="308.375587" width="47.062746" height="31.891080" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(747.835834,328.669715) scale(0.279454)"
|
||||
transform="translate(743.474759,323.975587) scale(0.294155)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">settings.go</text>
|
||||
|
||||
@ -246,7 +246,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="44.000000" y="332.470897" width="153.101324" height="263.529103" style="fill: rgb(3, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="44.000000" y="332.470897" width="154.853028" height="263.529103" style="fill: rgb(3, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -259,12 +259,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="291.682822" y="442.848581" width="76.241457" height="77.052138" style="fill: rgb(12, 129, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="294.375953" y="442.848581" width="77.157441" height="77.052138" style="fill: rgb(12, 129, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(299.682822,458.448581) scale(0.896450)"
|
||||
transform="translate(302.375953,458.448581) scale(0.910081)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">hashing</text>
|
||||
|
||||
@ -272,18 +272,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="366.013519" y="527.900719" width="1.910760" height="68.099281" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="369.514871" y="527.900719" width="2.018522" height="68.099281" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="205.101324" y="442.848581" width="78.581498" height="153.151419" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="206.853028" y="442.848581" width="79.522925" height="153.151419" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(213.101324,458.448581) scale(0.407432)"
|
||||
transform="translate(214.853028,458.448581) scale(0.413561)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">puzzle/puzzle.go</text>
|
||||
|
||||
@ -291,12 +291,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="291.682822" y="527.900719" width="66.330698" height="68.099281" style="fill: rgb(16, 136, 71);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="294.375953" y="527.900719" width="67.138918" height="68.099281" style="fill: rgb(16, 136, 71);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(299.682822,543.500719) scale(0.327674)"
|
||||
transform="translate(302.375953,543.500719) scale(0.332936)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">random/random.go</text>
|
||||
|
||||
@ -304,7 +304,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="44.000000" y="84.800000" width="323.924279" height="239.670897" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="44.000000" y="84.800000" width="327.533393" height="239.670897" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -317,12 +317,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="205.101324" y="332.470897" width="162.822955" height="102.377684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="206.853028" y="332.470897" width="164.680366" height="102.377684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(213.101324,348.070897) scale(1.000000)"
|
||||
transform="translate(214.853028,348.070897) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">symmetric</text>
|
||||
|
||||
@ -330,12 +330,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="467.552821" width="48.767647" height="41.202051" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="467.552821" width="49.427645" height="41.202051" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,483.152821) scale(0.426662)"
|
||||
transform="translate(855.834565,483.152821) scale(0.435256)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">bytes.go</text>
|
||||
|
||||
@ -343,30 +343,30 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="953.552985" y="508.554530" width="20.383824" height="0.200342" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="953.118580" y="508.554530" width="20.713822" height="0.200342" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="906.246613" y="467.552821" width="39.306373" height="16.601026" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="905.262209" y="467.552821" width="39.856371" height="16.601026" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="906.246613" y="492.153846" width="39.306373" height="16.601026" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="905.262209" y="492.153846" width="39.856371" height="16.601026" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="953.552985" y="467.552821" width="20.383824" height="33.001709" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="953.118580" y="467.552821" width="20.713822" height="33.001709" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(961.552985,483.152821) scale(0.026862)"
|
||||
transform="translate(961.118580,483.152821) scale(0.028884)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">serialize_yaml.go</text>
|
||||
|
||||
@ -374,12 +374,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="371.864615" width="104.978749" height="58.088205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="371.864615" width="106.292273" height="58.088205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,387.464615) scale(1.000000)"
|
||||
transform="translate(855.834565,387.464615) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">logger.go</text>
|
||||
|
||||
@ -387,18 +387,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="962.457714" y="371.864615" width="11.479095" height="58.088205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="962.126838" y="371.864615" width="11.705564" height="58.088205" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="596.586488" y="383.398336" width="146.705292" height="212.601664" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="597.760579" y="377.866667" width="144.864644" height="218.133333" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(604.586488,398.998336) scale(1.000000)"
|
||||
transform="translate(605.760579,393.466667) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">conn</text>
|
||||
|
||||
@ -406,12 +406,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="751.291779" y="383.398336" width="74.187186" height="143.393299" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="750.625223" y="377.866667" width="73.209342" height="147.189542" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(759.291779,398.998336) scale(0.606117)"
|
||||
transform="translate(758.625223,393.466667) scale(0.595931)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">connkeeper</text>
|
||||
|
||||
@ -419,12 +419,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="391.924279" y="383.398336" width="196.662209" height="212.601664" style="fill: rgb(22, 145, 76);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="395.533393" y="377.866667" width="194.227185" height="218.133333" style="fill: rgb(29, 153, 80);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(399.924279,398.998336) scale(1.000000)"
|
||||
transform="translate(403.533393,393.466667) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">network.go</text>
|
||||
|
||||
@ -432,12 +432,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="751.291779" y="534.791635" width="69.050487" height="61.208365" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="750.625223" y="533.056209" width="68.133758" height="62.943791" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(759.291779,550.391635) scale(0.502372)"
|
||||
transform="translate(758.625223,548.656209) scale(0.493691)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">settings.go</text>
|
||||
|
||||
@ -445,12 +445,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="262.104615" width="56.530744" height="72.160000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="262.104615" width="57.280998" height="72.160000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,277.704615) scale(0.703659)"
|
||||
transform="translate(855.834565,277.704615) scale(0.716684)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">joiner</text>
|
||||
|
||||
@ -458,12 +458,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="914.009710" y="262.104615" width="59.927099" height="32.080000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="913.115563" y="262.104615" width="60.716840" height="32.080000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(922.009710,277.704615) scale(0.381312)"
|
||||
transform="translate(921.115563,277.704615) scale(0.388167)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">payload32.go</text>
|
||||
|
||||
@ -471,12 +471,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="914.009710" y="302.184615" width="59.927099" height="32.080000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="913.115563" y="302.184615" width="60.716840" height="32.080000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(922.009710,317.784615) scale(0.381312)"
|
||||
transform="translate(921.115563,317.784615) scale(0.388167)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">payload64.go</text>
|
||||
|
||||
@ -484,12 +484,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="546.354872" width="67.790291" height="49.645128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="546.354872" width="68.734158" height="49.645128" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,561.954872) scale(0.674353)"
|
||||
transform="translate(855.834565,561.954872) scale(0.686643)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">state.go</text>
|
||||
|
||||
@ -497,12 +497,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="178.580708" width="124.457843" height="45.923907" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="178.580708" width="125.997837" height="45.923907" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,194.180708) scale(0.941474)"
|
||||
transform="translate(855.834565,194.180708) scale(0.954842)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">cache/lru.go</text>
|
||||
|
||||
@ -510,12 +510,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="849.478965" y="84.800000" width="124.457843" height="85.780708" style="fill: rgb(11, 128, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="847.834565" y="84.800000" width="125.997837" height="85.780708" style="fill: rgb(11, 128, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(857.478965,100.400000) scale(1.000000)"
|
||||
transform="translate(855.834565,100.400000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">database</text>
|
||||
|
||||
@ -523,18 +523,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="798.850865" y="253.811687" width="18.628100" height="2.529406" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="796.363629" y="250.212207" width="19.470935" height="2.272300" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="649.733505" y="106.400000" width="141.117360" height="149.941093" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="642.526392" y="106.400000" width="145.837238" height="146.084507" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(657.733505,122.000000) scale(1.000000)"
|
||||
transform="translate(650.526392,122.000000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">queue.go</text>
|
||||
|
||||
@ -542,12 +542,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="798.850865" y="106.400000" width="18.628100" height="139.411687" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="796.363629" y="106.400000" width="19.470935" height="135.812207" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(806.850865,122.000000) scale(0.024887)"
|
||||
transform="translate(804.363629,122.000000) scale(0.032869)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">settings.go</text>
|
||||
|
||||
@ -555,12 +555,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="52.000000" y="464.607470" width="65.702260" height="123.392530" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="52.000000" y="464.607470" width="66.592014" height="123.392530" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(60.000000,480.207470) scale(0.862886)"
|
||||
transform="translate(60.000000,480.207470) scale(0.878334)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">dsa.go</text>
|
||||
|
||||
@ -568,12 +568,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="125.702260" y="464.607470" width="63.399064" height="123.392530" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="126.592014" y="464.607470" width="64.261014" height="123.392530" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(133.702260,480.207470) scale(0.822900)"
|
||||
transform="translate(134.592014,480.207470) scale(0.837865)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">kem.go</text>
|
||||
|
||||
@ -581,7 +581,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="52.000000" y="354.070897" width="137.101324" height="102.536573" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="52.000000" y="354.070897" width="138.853028" height="102.536573" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -594,12 +594,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="299.682822" y="464.448581" width="31.508212" height="47.452138" style="fill: rgb(23, 148, 78);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="302.375953" y="464.448581" width="32.038518" height="47.452138" style="fill: rgb(23, 148, 78);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(307.682822,480.048581) scale(0.161544)"
|
||||
transform="translate(310.375953,480.048581) scale(0.167068)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">hashing.go</text>
|
||||
|
||||
@ -607,12 +607,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="339.191034" y="464.448581" width="20.733245" height="47.452138" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="342.414471" y="464.448581" width="21.118922" height="47.452138" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(347.191034,480.048581) scale(0.070435)"
|
||||
transform="translate(350.414471,480.048581) scale(0.076174)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">hmac.go</text>
|
||||
|
||||
@ -620,12 +620,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="296.913776" y="106.400000" width="63.010503" height="210.070897" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="299.711667" y="106.400000" width="63.821726" height="210.070897" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(304.913776,122.000000) scale(0.816155)"
|
||||
transform="translate(307.711667,122.000000) scale(0.830238)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">layer1</text>
|
||||
|
||||
@ -633,7 +633,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="52.000000" y="106.400000" width="236.913776" height="210.070897" style="fill: rgb(9, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="52.000000" y="106.400000" width="239.711667" height="210.070897" style="fill: rgb(9, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -646,12 +646,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="278.126965" y="354.070897" width="47.736264" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="280.658781" y="354.070897" width="48.404932" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(286.126965,369.670897) scale(0.550977)"
|
||||
transform="translate(288.658781,369.670897) scale(0.562586)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">cfb.go</text>
|
||||
|
||||
@ -659,12 +659,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="333.863229" y="354.070897" width="26.061050" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="337.063713" y="354.070897" width="26.469680" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(341.863229,369.670897) scale(0.116447)"
|
||||
transform="translate(345.063713,369.670897) scale(0.121177)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">cipher.go</text>
|
||||
|
||||
@ -672,12 +672,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="213.101324" y="354.070897" width="57.025641" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="214.853028" y="354.070897" width="57.805754" height="72.777684" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(221.101324,369.670897) scale(0.712251)"
|
||||
transform="translate(222.853028,369.670897) scale(0.725794)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">gcm.go</text>
|
||||
|
||||
@ -685,12 +685,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="604.586488" y="404.998336" width="130.705292" height="141.220050" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="605.760579" y="399.466667" width="128.864644" height="145.541667" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(612.586488,420.598336) scale(1.000000)"
|
||||
transform="translate(613.760579,415.066667) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">conn.go</text>
|
||||
|
||||
@ -698,12 +698,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="604.586488" y="554.218386" width="124.100278" height="33.781614" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="605.760579" y="553.008333" width="122.347280" height="34.991667" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(612.586488,569.818386) scale(1.000000)"
|
||||
transform="translate(613.760579,568.608333) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">settings.go</text>
|
||||
|
||||
@ -711,12 +711,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="759.291779" y="404.998336" width="58.187186" height="82.475022" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="758.625223" y="399.466667" width="57.209342" height="85.295089" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(767.291779,420.598336) scale(0.338038)"
|
||||
transform="translate(766.625223,415.066667) scale(0.330203)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">connkeeper.go</text>
|
||||
|
||||
@ -724,18 +724,18 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="759.291779" y="495.473358" width="50.833054" height="23.318277" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="758.625223" y="492.761755" width="49.963860" height="24.294454" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
</g>
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="857.478965" y="283.704615" width="40.530744" height="39.898947" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="855.834565" y="283.704615" width="41.280998" height="39.898947" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(865.478965,299.304615) scale(0.232299)"
|
||||
transform="translate(863.834565,299.304615) scale(0.239403)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">joiner32.go</text>
|
||||
|
||||
@ -743,12 +743,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="857.478965" y="106.400000" width="105.546397" height="56.180708" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="855.834565" y="106.400000" width="107.047892" height="56.180708" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(865.478965,122.000000) scale(0.847977)"
|
||||
transform="translate(863.834565,122.000000) scale(0.862196)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">database.go</text>
|
||||
|
||||
@ -756,12 +756,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="304.913776" y="128.000000" width="47.010503" height="138.161104" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="307.711667" y="128.000000" width="47.821726" height="138.161104" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(312.913776,143.600000) scale(0.323026)"
|
||||
transform="translate(315.711667,143.600000) scale(0.331476)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">message.go</text>
|
||||
|
||||
@ -769,12 +769,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="304.913776" y="274.161104" width="42.009548" height="34.309793" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="307.711667" y="274.161104" width="42.747024" height="34.309793" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(312.913776,289.761104) scale(0.246303)"
|
||||
transform="translate(315.711667,289.761104) scale(0.253286)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">settings.go</text>
|
||||
|
||||
@ -782,7 +782,7 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="60.000000" y="128.000000" width="97.652512" height="180.470897" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="60.000000" y="128.000000" width="98.943846" height="180.470897" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
@ -795,12 +795,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="165.652512" y="239.839873" width="115.261264" height="68.631024" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="166.943846" y="239.839873" width="116.767821" height="68.631024" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(173.652512,255.439873) scale(0.795363)"
|
||||
transform="translate(174.943846,255.439873) scale(0.807434)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">kcontainer.go</text>
|
||||
|
||||
@ -808,12 +808,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="165.652512" y="128.000000" width="115.261264" height="103.839873" style="fill: rgb(13, 130, 69);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="166.943846" y="128.000000" width="116.767821" height="103.839873" style="fill: rgb(13, 130, 69);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(173.652512,143.600000) scale(1.000000)"
|
||||
transform="translate(174.943846,143.600000) scale(1.000000)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">symmetric</text>
|
||||
|
||||
@ -821,12 +821,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="68.000000" y="269.771576" width="76.933959" height="30.699321" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="68.000000" y="269.771576" width="78.157328" height="30.699321" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(76.000000,285.371576) scale(0.634729)"
|
||||
transform="translate(76.000000,285.371576) scale(0.647472)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">message.go</text>
|
||||
|
||||
@ -834,12 +834,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="68.000000" y="149.600000" width="81.652512" height="112.171576" style="fill: rgb(16, 136, 72);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="68.000000" y="149.600000" width="82.943846" height="112.171576" style="fill: rgb(16, 136, 72);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(76.000000,165.200000) scale(0.759867)"
|
||||
transform="translate(76.000000,165.200000) scale(0.774813)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">scheme.go</text>
|
||||
|
||||
@ -847,12 +847,12 @@
|
||||
|
||||
|
||||
<g>
|
||||
<rect x="173.652512" y="149.600000" width="97.274944" height="74.239873" style="fill: rgb(13, 131, 69);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
<rect x="174.943846" y="149.600000" width="98.753602" height="74.239873" style="fill: rgb(13, 131, 69);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
|
||||
|
||||
<text
|
||||
data-notex="1"
|
||||
text-anchor="start"
|
||||
transform="translate(181.652512,165.200000) scale(0.940682)"
|
||||
transform="translate(182.943846,165.200000) scale(0.957796)"
|
||||
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
|
||||
data-math="N">scheme.go</text>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Loading…
Reference in New Issue
Block a user