diff --git a/Makefile b/Makefile index 0e9d267c..39263e8c 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ tunnel-deps: tunnelrpc/tunnelrpc.capnp.go tunnelrpc/tunnelrpc.capnp.go: tunnelrpc/tunnelrpc.capnp which capnp # https://capnproto.org/install.html which capnpc-go # go get zombiezen.com/go/capnproto2/capnpc-go - capnp compile -ogo:tunnelrpc -I ./tunnelrpc tunnelrpc/tunnelrpc.capnp + capnp compile -ogo -I ./tunnelrpc tunnelrpc/tunnelrpc.capnp .PHONY: vet vet: diff --git a/connection/supervisor.go b/connection/supervisor.go index 6ba0e331..50855d3f 100644 --- a/connection/supervisor.go +++ b/connection/supervisor.go @@ -21,12 +21,13 @@ const ( ) type CloudflaredConfig struct { - ConnectionConfig *ConnectionConfig - OriginCert []byte - Tags []tunnelpogs.Tag - EdgeAddrs []string - HAConnections uint - Logger *logrus.Logger + ConnectionConfig *ConnectionConfig + OriginCert []byte + Tags []tunnelpogs.Tag + EdgeAddrs []string + HAConnections uint + Logger *logrus.Logger + CloudflaredVersion string } // Supervisor is a stateful object that manages connections with the edge @@ -140,6 +141,7 @@ func (s *Supervisor) connect(ctx context.Context, OriginCert: config.OriginCert, CloudflaredID: cloudflaredID, NumPreviousAttempts: 0, + CloudflaredVersion: config.CloudflaredVersion, } return h.connect(ctx, connectParameters) } diff --git a/origin/tunnel.go b/origin/tunnel.go index f8b66a28..bbc80046 100644 --- a/origin/tunnel.go +++ b/origin/tunnel.go @@ -161,11 +161,12 @@ func StartTunnelDaemon(config *TunnelConfig, shutdownC <-chan struct{}, connecte MaxHeartbeats: config.MaxHeartbeats, Logger: config.Logger.WithField("subsystem", "connection_supervisor"), }, - OriginCert: config.OriginCert, - Tags: config.Tags, - EdgeAddrs: config.EdgeAddrs, - HAConnections: uint(config.HAConnections), - Logger: config.Logger, + OriginCert: config.OriginCert, + Tags: config.Tags, + EdgeAddrs: config.EdgeAddrs, + HAConnections: uint(config.HAConnections), + Logger: config.Logger, + CloudflaredVersion: config.ReportedVersion, }).Run(ctx) } return NewSupervisor(config).Run(ctx, connectedSignal, u) diff --git a/tunnelrpc/pogs/tunnelrpc.go b/tunnelrpc/pogs/tunnelrpc.go index 25c3d225..5339d113 100644 --- a/tunnelrpc/pogs/tunnelrpc.go +++ b/tunnelrpc/pogs/tunnelrpc.go @@ -132,6 +132,7 @@ type ConnectParameters struct { CloudflaredID uuid.UUID NumPreviousAttempts uint8 Tags []Tag + CloudflaredVersion string } // CapnpConnectParameters is ConnectParameters represented in Cap'n Proto build-in types @@ -140,6 +141,7 @@ type CapnpConnectParameters struct { CloudflaredID []byte NumPreviousAttempts uint8 Tags []Tag + CloudflaredVersion string } func MarshalConnectParameters(s tunnelrpc.CapnpConnectParameters, p *ConnectParameters) error { @@ -151,6 +153,7 @@ func MarshalConnectParameters(s tunnelrpc.CapnpConnectParameters, p *ConnectPara OriginCert: p.OriginCert, CloudflaredID: cloudflaredIDBytes, NumPreviousAttempts: p.NumPreviousAttempts, + CloudflaredVersion: p.CloudflaredVersion, } return pogs.Insert(tunnelrpc.CapnpConnectParameters_TypeID, s.Struct, capnpConnectParameters) } @@ -169,6 +172,7 @@ func UnmarshalConnectParameters(s tunnelrpc.CapnpConnectParameters) (*ConnectPar OriginCert: p.OriginCert, CloudflaredID: cloudflaredID, NumPreviousAttempts: p.NumPreviousAttempts, + CloudflaredVersion: p.CloudflaredVersion, }, nil } diff --git a/tunnelrpc/tunnelrpc.capnp b/tunnelrpc/tunnelrpc.capnp index e2f4b515..db9b21a4 100644 --- a/tunnelrpc/tunnelrpc.capnp +++ b/tunnelrpc/tunnelrpc.capnp @@ -55,6 +55,8 @@ struct CapnpConnectParameters { numPreviousAttempts @2 :UInt8; # user defined labels for this cloudflared tags @3 :List(Tag); + # release version of cloudflared + cloudflaredVersion @4 :Text; } struct ConnectResult { diff --git a/tunnelrpc/tunnelrpc.capnp.go b/tunnelrpc/tunnelrpc.capnp.go index 6623a18f..c1e381d1 100644 --- a/tunnelrpc/tunnelrpc.capnp.go +++ b/tunnelrpc/tunnelrpc.capnp.go @@ -106,11 +106,6 @@ func (s Authentication_List) At(i int) Authentication { return Authentication{s. func (s Authentication_List) Set(i int, v Authentication) error { return s.List.SetStruct(i, v.Struct) } -func (s Authentication_List) String() string { - str, _ := text.MarshalList(0xc082ef6e0d42ed1d, s.List) - return str -} - // Authentication_Promise is a wrapper for a Authentication promised by a client call. type Authentication_Promise struct{ *capnp.Pipeline } @@ -251,11 +246,6 @@ func (s TunnelRegistration_List) Set(i int, v TunnelRegistration) error { return s.List.SetStruct(i, v.Struct) } -func (s TunnelRegistration_List) String() string { - str, _ := text.MarshalList(0xf41a0f001ad49e46, s.List) - return str -} - // TunnelRegistration_Promise is a wrapper for a TunnelRegistration promised by a client call. type TunnelRegistration_Promise struct{ *capnp.Pipeline } @@ -485,11 +475,6 @@ func (s RegistrationOptions_List) Set(i int, v RegistrationOptions) error { return s.List.SetStruct(i, v.Struct) } -func (s RegistrationOptions_List) String() string { - str, _ := text.MarshalList(0xc793e50592935b4a, s.List) - return str -} - // RegistrationOptions_Promise is a wrapper for a RegistrationOptions promised by a client call. type RegistrationOptions_Promise struct{ *capnp.Pipeline } @@ -504,12 +489,12 @@ type CapnpConnectParameters struct{ capnp.Struct } const CapnpConnectParameters_TypeID = 0xa78f37418c1077c8 func NewCapnpConnectParameters(s *capnp.Segment) (CapnpConnectParameters, error) { - st, err := capnp.NewStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 3}) + st, err := capnp.NewStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 4}) return CapnpConnectParameters{st}, err } func NewRootCapnpConnectParameters(s *capnp.Segment) (CapnpConnectParameters, error) { - st, err := capnp.NewRootStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 3}) + st, err := capnp.NewRootStruct(s, capnp.ObjectSize{DataSize: 8, PointerCount: 4}) return CapnpConnectParameters{st}, err } @@ -584,12 +569,31 @@ func (s CapnpConnectParameters) NewTags(n int32) (Tag_List, error) { return l, err } +func (s CapnpConnectParameters) CloudflaredVersion() (string, error) { + p, err := s.Struct.Ptr(3) + return p.Text(), err +} + +func (s CapnpConnectParameters) HasCloudflaredVersion() bool { + p, err := s.Struct.Ptr(3) + return p.IsValid() || err != nil +} + +func (s CapnpConnectParameters) CloudflaredVersionBytes() ([]byte, error) { + p, err := s.Struct.Ptr(3) + return p.TextBytes(), err +} + +func (s CapnpConnectParameters) SetCloudflaredVersion(v string) error { + return s.Struct.SetText(3, v) +} + // CapnpConnectParameters_List is a list of CapnpConnectParameters. type CapnpConnectParameters_List struct{ capnp.List } // NewCapnpConnectParameters creates a new list of CapnpConnectParameters. func NewCapnpConnectParameters_List(s *capnp.Segment, sz int32) (CapnpConnectParameters_List, error) { - l, err := capnp.NewCompositeList(s, capnp.ObjectSize{DataSize: 8, PointerCount: 3}, sz) + l, err := capnp.NewCompositeList(s, capnp.ObjectSize{DataSize: 8, PointerCount: 4}, sz) return CapnpConnectParameters_List{l}, err } @@ -601,11 +605,6 @@ func (s CapnpConnectParameters_List) Set(i int, v CapnpConnectParameters) error return s.List.SetStruct(i, v.Struct) } -func (s CapnpConnectParameters_List) String() string { - str, _ := text.MarshalList(0xa78f37418c1077c8, s.List) - return str -} - // CapnpConnectParameters_Promise is a wrapper for a CapnpConnectParameters promised by a client call. type CapnpConnectParameters_Promise struct{ *capnp.Pipeline } @@ -702,11 +701,6 @@ func (s ConnectResult_List) At(i int) ConnectResult { return ConnectResult{s.Lis func (s ConnectResult_List) Set(i int, v ConnectResult) error { return s.List.SetStruct(i, v.Struct) } -func (s ConnectResult_List) String() string { - str, _ := text.MarshalList(0xff8d9848747c956a, s.List) - return str -} - // ConnectResult_Promise is a wrapper for a ConnectResult promised by a client call. type ConnectResult_Promise struct{ *capnp.Pipeline } @@ -796,11 +790,6 @@ func (s ConnectError_List) At(i int) ConnectError { return ConnectError{s.List.S func (s ConnectError_List) Set(i int, v ConnectError) error { return s.List.SetStruct(i, v.Struct) } -func (s ConnectError_List) String() string { - str, _ := text.MarshalList(0xb14ce48f4e2abb0d, s.List) - return str -} - // ConnectError_Promise is a wrapper for a ConnectError promised by a client call. type ConnectError_Promise struct{ *capnp.Pipeline } @@ -949,11 +938,6 @@ func (s CloudflaredConfig_List) Set(i int, v CloudflaredConfig) error { return s.List.SetStruct(i, v.Struct) } -func (s CloudflaredConfig_List) String() string { - str, _ := text.MarshalList(0x984a5b060f122dd1, s.List) - return str -} - // CloudflaredConfig_Promise is a wrapper for a CloudflaredConfig promised by a client call. type CloudflaredConfig_Promise struct{ *capnp.Pipeline } @@ -1037,9 +1021,6 @@ func (s ReverseProxyConfig_origin) Which() ReverseProxyConfig_origin_Which { return ReverseProxyConfig_origin_Which(s.Struct.Uint16(0)) } func (s ReverseProxyConfig_origin) Http() (HTTPOriginConfig, error) { - if s.Struct.Uint16(0) != 0 { - panic("Which() != http") - } p, err := s.Struct.Ptr(1) return HTTPOriginConfig{Struct: p.Struct()}, err } @@ -1070,9 +1051,6 @@ func (s ReverseProxyConfig_origin) NewHttp() (HTTPOriginConfig, error) { } func (s ReverseProxyConfig_origin) Socket() (UnixSocketOriginConfig, error) { - if s.Struct.Uint16(0) != 1 { - panic("Which() != socket") - } p, err := s.Struct.Ptr(1) return UnixSocketOriginConfig{Struct: p.Struct()}, err } @@ -1103,9 +1081,6 @@ func (s ReverseProxyConfig_origin) NewSocket() (UnixSocketOriginConfig, error) { } func (s ReverseProxyConfig_origin) Websocket() (WebSocketOriginConfig, error) { - if s.Struct.Uint16(0) != 2 { - panic("Which() != websocket") - } p, err := s.Struct.Ptr(1) return WebSocketOriginConfig{Struct: p.Struct()}, err } @@ -1136,9 +1111,6 @@ func (s ReverseProxyConfig_origin) NewWebsocket() (WebSocketOriginConfig, error) } func (s ReverseProxyConfig_origin) HelloWorld() (HelloWorldOriginConfig, error) { - if s.Struct.Uint16(0) != 3 { - panic("Which() != helloWorld") - } p, err := s.Struct.Ptr(1) return HelloWorldOriginConfig{Struct: p.Struct()}, err } @@ -1217,11 +1189,6 @@ func (s ReverseProxyConfig_List) Set(i int, v ReverseProxyConfig) error { return s.List.SetStruct(i, v.Struct) } -func (s ReverseProxyConfig_List) String() string { - str, _ := text.MarshalList(0xc766a92976e389c4, s.List) - return str -} - // ReverseProxyConfig_Promise is a wrapper for a ReverseProxyConfig promised by a client call. type ReverseProxyConfig_Promise struct{ *capnp.Pipeline } @@ -1319,11 +1286,6 @@ func (s UnixSocketOriginConfig_List) Set(i int, v UnixSocketOriginConfig) error return s.List.SetStruct(i, v.Struct) } -func (s UnixSocketOriginConfig_List) String() string { - str, _ := text.MarshalList(0x935185ed60218ea3, s.List) - return str -} - // UnixSocketOriginConfig_Promise is a wrapper for a UnixSocketOriginConfig promised by a client call. type UnixSocketOriginConfig_Promise struct{ *capnp.Pipeline } @@ -1393,11 +1355,6 @@ func (s WebSocketOriginConfig_List) Set(i int, v WebSocketOriginConfig) error { return s.List.SetStruct(i, v.Struct) } -func (s WebSocketOriginConfig_List) String() string { - str, _ := text.MarshalList(0xf9c895683ed9ac4c, s.List) - return str -} - // WebSocketOriginConfig_Promise is a wrapper for a WebSocketOriginConfig promised by a client call. type WebSocketOriginConfig_Promise struct{ *capnp.Pipeline } @@ -1551,11 +1508,6 @@ func (s HTTPOriginConfig_List) Set(i int, v HTTPOriginConfig) error { return s.List.SetStruct(i, v.Struct) } -func (s HTTPOriginConfig_List) String() string { - str, _ := text.MarshalList(0xe4a6a1bc139211b4, s.List) - return str -} - // HTTPOriginConfig_Promise is a wrapper for a HTTPOriginConfig promised by a client call. type HTTPOriginConfig_Promise struct{ *capnp.Pipeline } @@ -1654,11 +1606,6 @@ func (s DoHProxyConfig_List) At(i int) DoHProxyConfig { return DoHProxyConfig{s. func (s DoHProxyConfig_List) Set(i int, v DoHProxyConfig) error { return s.List.SetStruct(i, v.Struct) } -func (s DoHProxyConfig_List) String() string { - str, _ := text.MarshalList(0xb167b0bebe562cd0, s.List) - return str -} - // DoHProxyConfig_Promise is a wrapper for a DoHProxyConfig promised by a client call. type DoHProxyConfig_Promise struct{ *capnp.Pipeline } @@ -1709,11 +1656,6 @@ func (s HelloWorldOriginConfig_List) Set(i int, v HelloWorldOriginConfig) error return s.List.SetStruct(i, v.Struct) } -func (s HelloWorldOriginConfig_List) String() string { - str, _ := text.MarshalList(0x8891f360e47c30d3, s.List) - return str -} - // HelloWorldOriginConfig_Promise is a wrapper for a HelloWorldOriginConfig promised by a client call. type HelloWorldOriginConfig_Promise struct{ *capnp.Pipeline } @@ -1798,11 +1740,6 @@ func (s Tag_List) At(i int) Tag { return Tag{s.List.Struct(i)} } func (s Tag_List) Set(i int, v Tag) error { return s.List.SetStruct(i, v.Struct) } -func (s Tag_List) String() string { - str, _ := text.MarshalList(0xcbd96442ae3bb01a, s.List) - return str -} - // Tag_Promise is a wrapper for a Tag promised by a client call. type Tag_Promise struct{ *capnp.Pipeline } @@ -1928,11 +1865,6 @@ func (s ServerInfo_List) At(i int) ServerInfo { return ServerInfo{s.List.Struct( func (s ServerInfo_List) Set(i int, v ServerInfo) error { return s.List.SetStruct(i, v.Struct) } -func (s ServerInfo_List) String() string { - str, _ := text.MarshalList(0xf2c68e2547ec3866, s.List) - return str -} - // ServerInfo_Promise is a wrapper for a ServerInfo promised by a client call. type ServerInfo_Promise struct{ *capnp.Pipeline } @@ -2010,11 +1942,6 @@ func (s UseConfigurationResult_List) Set(i int, v UseConfigurationResult) error return s.List.SetStruct(i, v.Struct) } -func (s UseConfigurationResult_List) String() string { - str, _ := text.MarshalList(0xd58a254e7a792b87, s.List) - return str -} - // UseConfigurationResult_Promise is a wrapper for a UseConfigurationResult promised by a client call. type UseConfigurationResult_Promise struct{ *capnp.Pipeline } @@ -2037,7 +1964,7 @@ func (c TunnelServer) RegisterTunnel(ctx context.Context, params func(TunnelServ Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 0, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "registerTunnel", }, Options: capnp.NewCallOptions(opts), @@ -2057,7 +1984,7 @@ func (c TunnelServer) GetServerInfo(ctx context.Context, params func(TunnelServe Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 1, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "getServerInfo", }, Options: capnp.NewCallOptions(opts), @@ -2077,7 +2004,7 @@ func (c TunnelServer) UnregisterTunnel(ctx context.Context, params func(TunnelSe Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 2, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "unregisterTunnel", }, Options: capnp.NewCallOptions(opts), @@ -2097,7 +2024,7 @@ func (c TunnelServer) Connect(ctx context.Context, params func(TunnelServer_conn Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 3, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "connect", }, Options: capnp.NewCallOptions(opts), @@ -2133,7 +2060,7 @@ func TunnelServer_Methods(methods []server.Method, s TunnelServer_Server) []serv Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 0, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "registerTunnel", }, Impl: func(c context.Context, opts capnp.CallOptions, p, r capnp.Struct) error { @@ -2147,7 +2074,7 @@ func TunnelServer_Methods(methods []server.Method, s TunnelServer_Server) []serv Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 1, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "getServerInfo", }, Impl: func(c context.Context, opts capnp.CallOptions, p, r capnp.Struct) error { @@ -2161,7 +2088,7 @@ func TunnelServer_Methods(methods []server.Method, s TunnelServer_Server) []serv Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 2, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "unregisterTunnel", }, Impl: func(c context.Context, opts capnp.CallOptions, p, r capnp.Struct) error { @@ -2175,7 +2102,7 @@ func TunnelServer_Methods(methods []server.Method, s TunnelServer_Server) []serv Method: capnp.Method{ InterfaceID: 0xea58385c65416035, MethodID: 3, - InterfaceName: "tunnelrpc.capnp:TunnelServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:TunnelServer", MethodName: "connect", }, Impl: func(c context.Context, opts capnp.CallOptions, p, r capnp.Struct) error { @@ -2320,11 +2247,6 @@ func (s TunnelServer_registerTunnel_Params_List) Set(i int, v TunnelServer_regis return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_registerTunnel_Params_List) String() string { - str, _ := text.MarshalList(0xb70431c0dc014915, s.List) - return str -} - // TunnelServer_registerTunnel_Params_Promise is a wrapper for a TunnelServer_registerTunnel_Params promised by a client call. type TunnelServer_registerTunnel_Params_Promise struct{ *capnp.Pipeline } @@ -2404,11 +2326,6 @@ func (s TunnelServer_registerTunnel_Results_List) Set(i int, v TunnelServer_regi return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_registerTunnel_Results_List) String() string { - str, _ := text.MarshalList(0xf2c122394f447e8e, s.List) - return str -} - // TunnelServer_registerTunnel_Results_Promise is a wrapper for a TunnelServer_registerTunnel_Results promised by a client call. type TunnelServer_registerTunnel_Results_Promise struct{ *capnp.Pipeline } @@ -2463,11 +2380,6 @@ func (s TunnelServer_getServerInfo_Params_List) Set(i int, v TunnelServer_getSer return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_getServerInfo_Params_List) String() string { - str, _ := text.MarshalList(0xdc3ed6801961e502, s.List) - return str -} - // TunnelServer_getServerInfo_Params_Promise is a wrapper for a TunnelServer_getServerInfo_Params promised by a client call. type TunnelServer_getServerInfo_Params_Promise struct{ *capnp.Pipeline } @@ -2543,11 +2455,6 @@ func (s TunnelServer_getServerInfo_Results_List) Set(i int, v TunnelServer_getSe return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_getServerInfo_Results_List) String() string { - str, _ := text.MarshalList(0xe3e37d096a5b564e, s.List) - return str -} - // TunnelServer_getServerInfo_Results_Promise is a wrapper for a TunnelServer_getServerInfo_Results promised by a client call. type TunnelServer_getServerInfo_Results_Promise struct{ *capnp.Pipeline } @@ -2610,11 +2517,6 @@ func (s TunnelServer_unregisterTunnel_Params_List) Set(i int, v TunnelServer_unr return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_unregisterTunnel_Params_List) String() string { - str, _ := text.MarshalList(0x9b87b390babc2ccf, s.List) - return str -} - // TunnelServer_unregisterTunnel_Params_Promise is a wrapper for a TunnelServer_unregisterTunnel_Params promised by a client call. type TunnelServer_unregisterTunnel_Params_Promise struct{ *capnp.Pipeline } @@ -2665,11 +2567,6 @@ func (s TunnelServer_unregisterTunnel_Results_List) Set(i int, v TunnelServer_un return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_unregisterTunnel_Results_List) String() string { - str, _ := text.MarshalList(0xa29a916d4ebdd894, s.List) - return str -} - // TunnelServer_unregisterTunnel_Results_Promise is a wrapper for a TunnelServer_unregisterTunnel_Results promised by a client call. type TunnelServer_unregisterTunnel_Results_Promise struct{ *capnp.Pipeline } @@ -2745,11 +2642,6 @@ func (s TunnelServer_connect_Params_List) Set(i int, v TunnelServer_connect_Para return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_connect_Params_List) String() string { - str, _ := text.MarshalList(0xa766b24d4fe5da35, s.List) - return str -} - // TunnelServer_connect_Params_Promise is a wrapper for a TunnelServer_connect_Params promised by a client call. type TunnelServer_connect_Params_Promise struct{ *capnp.Pipeline } @@ -2829,11 +2721,6 @@ func (s TunnelServer_connect_Results_List) Set(i int, v TunnelServer_connect_Res return s.List.SetStruct(i, v.Struct) } -func (s TunnelServer_connect_Results_List) String() string { - str, _ := text.MarshalList(0xfeac5c8f4899ef7c, s.List) - return str -} - // TunnelServer_connect_Results_Promise is a wrapper for a TunnelServer_connect_Results promised by a client call. type TunnelServer_connect_Results_Promise struct{ *capnp.Pipeline } @@ -2860,7 +2747,7 @@ func (c CloudflaredServer) UseConfiguration(ctx context.Context, params func(Clo Method: capnp.Method{ InterfaceID: 0xf548cef9dea2a4a1, MethodID: 0, - InterfaceName: "tunnelrpc.capnp:CloudflaredServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:CloudflaredServer", MethodName: "useConfiguration", }, Options: capnp.NewCallOptions(opts), @@ -2890,7 +2777,7 @@ func CloudflaredServer_Methods(methods []server.Method, s CloudflaredServer_Serv Method: capnp.Method{ InterfaceID: 0xf548cef9dea2a4a1, MethodID: 0, - InterfaceName: "tunnelrpc.capnp:CloudflaredServer", + InterfaceName: "tunnelrpc/tunnelrpc.capnp:CloudflaredServer", MethodName: "useConfiguration", }, Impl: func(c context.Context, opts capnp.CallOptions, p, r capnp.Struct) error { @@ -2978,11 +2865,6 @@ func (s CloudflaredServer_useConfiguration_Params_List) Set(i int, v Cloudflared return s.List.SetStruct(i, v.Struct) } -func (s CloudflaredServer_useConfiguration_Params_List) String() string { - str, _ := text.MarshalList(0xbcae494a1cb9c358, s.List) - return str -} - // CloudflaredServer_useConfiguration_Params_Promise is a wrapper for a CloudflaredServer_useConfiguration_Params promised by a client call. type CloudflaredServer_useConfiguration_Params_Promise struct{ *capnp.Pipeline } @@ -3062,11 +2944,6 @@ func (s CloudflaredServer_useConfiguration_Results_List) Set(i int, v Cloudflare return s.List.SetStruct(i, v.Struct) } -func (s CloudflaredServer_useConfiguration_Results_List) String() string { - str, _ := text.MarshalList(0xabe155b01da72ed9, s.List) - return str -} - // CloudflaredServer_useConfiguration_Results_Promise is a wrapper for a CloudflaredServer_useConfiguration_Results promised by a client call. type CloudflaredServer_useConfiguration_Results_Promise struct{ *capnp.Pipeline } @@ -3079,194 +2956,197 @@ func (p CloudflaredServer_useConfiguration_Results_Promise) Result() UseConfigur return UseConfigurationResult_Promise{Pipeline: p.Pipeline.GetPipeline(0)} } -const schema_db8274f9144abc7e = "x\xda\xa4X}l\x1c\xd5\xb5?g\xee\xae\xd7v\xec" + - "\xec\x8eg\x8dC\x84e\xf0\x0b\xd2#/\x89\x02yy" + - "/\xf8\xbdb;\xb1\x837\xe4c\xc7k\x07\x08A\xca" + - "x\xf7\xda\x9edvf3\x1fI\x8c\x02\x81()I" + - "\xc4G\x12\x88DR\xa8\x88K\x1b\xa0)\x0d\x94\x0aA" + - "\x13\x04jU\x90\x10\x85\xb4\xa5jh\xa8\x84 *E" + - "\x8d(_R\x83\x08S\x9d\x99\x9d\x99\xf5\xdai\x82\xfa" + - "\xcf\xea\xee\xb9g\xee9\xf7\x9c\xdf\xf9\xb8g\xfe\x9aD" + - "\x97pm\xfc\x85i\x00\xf2\xaex\x8d\xfb\xff\xc5\xb7\xc6" + - "\xff\xe7\xc0\x1b;@L\x09\xee]\xc7\x97\xa5\xcf\xd9\xdb" + - "\xff\x04\x80\x0b^\x8d\xcfF\xe9d<\x01 \xbd\x19_" + - "\x05\xe8\xfen\xfe\xd6\x0f\xd7}\xbeo\x17\x88)\x8c8" + - "c\x09\x80\x05g\xe2\x1d(}\x19O\x00s\x7f\xf0\xc0" + - "U\xeb\xce\xee\x94\x1f\x9a\xc8\x15Gb;Il\xef{" + - "G\xbe\x17\xef\x04tO\xcemJ\xd6\xdc\xb6\xec\x11\x90" + - "SXS\xc1-\x10\xf7\xf9x\x13J\x8d5\xb4\xac\xab" + - "y\x0d\x01\xdd\xb7\xe6\x1c\x7fi\xef\xcf\xee\xfd\x1e\xc8\xad" + - "\x88\xe0\x8b\xbe\xaa\xf6i\x04\x94\xae\xad\xa5\xf3\x1e\xfe\xe3" + - "\x89\x95\xc5}\x87\xc6Al\x0d\xf6o\xad}\x0e!\xe6" + - ".|\xf7\xcc\xaa\x15\xcf\x0d\x1f\xf1w|u2\xb5C" + - "\xf4\xe9\xa0\xf7\xe9\xeb\x9bS\xf7u\xff\xef\x83GH\x95" + - "J\xc5\x19q\x8e\xd5v\xa0\xb4\xbb\x96\x14\xdfY\xfb\x17" + - "@w\xcf\xf5'V\x7f\xfe]\xebi\x90\xff\x03c\xee" + - "\xafv\x7f\xb0\xe9\x9a\xa7\x86_\x83A!\x811\xe2\xaf" + - "\xeb\xa7\x93w\xd6\x11\xef\xa9yGZ\x8f\x0d\xbe\xffc" + - "\x10\xdbC\xd1J\xfd\xbb\xc4\xe0\xd4\x93\xe8\xc6_\xcc^" + - "\xf9\xe0\x87\xcb\x9f%\xd1B\x95\xcd\xa4\x03\xf5\x1fK\x87" + - "\xebi\xf5X\xfdO\x01\xdd\xb7\xe7\xac~\xf9\xe5c#" + - "\xcfV\xebI&\x93\xbe3\xed+)3\x8dV\xbd\xd3" + - "\x88\xb99\x83\xa7_\xb96\xf6B\xf9\xd6\xde]\xceM" + - ";D\xa2\xeb\x1a\x88\xe1\x96_\xbex\xc5\xb2\xcc3\xc7" + - "+u{\xaa\xe1\xb7\xc4p\xa2\x81tk=\xbb\xb8Q" + - "\xffd\xfb+U\xee\xa4\x93\xa43\x0d_I\x9f6\xd0" + - "\xea\xacwXh\x069\x85\xb1jo\xeen\x9c\x89\xd2" + - "\xc1FZ\x1eh\xbc\x99\xbc\xb9\xec\xb6\x87\xf6\xc7\xcf<" + - "\xf4Z\xf5\xb5\x13\xc4\xf3\xde\xf4v\x94\xceN\xa7\xe5_" + - "\xa7\x1f\x11\x00\xdd\x99\xc7\xfe\xef\x99\xc5\x85SoTi" + - "\xe2\xdd\xfb\x1dq\\zO\xa4\xd5)q3\xa0{\xef" + - "\x7f\x8d\xdd\xb1\xf2\xea=\xefT\x1b\xc9\xbb\xdf\xc2\xa6\x0e" + - "\x94z\x9b\x88\xbb\xbb\x89\xb8\x853\xca\xe5w\xff\xe1\x86" + - "\xd3\x15\xa89\xdc\xb4\x9fP\xb3r\xf5m\xeb\xeb\xee\xfc" + - "\xe0\x83J\xd4\xeck\xf2\xecw\xb8\x89\xcc\xf3\xbc\xb8_" + - ":~\xf8G\x1f\x92\xa0x5j^m\xaaG\xe9$" + - "\x09Z\xf0f\x93KW^\xb8\xae\x9b\xaf]t\xcb\xc7" + - " \xa6Xe\xb0I\xe7\xd3\x1fKu\xcd\xc4\x19oN" + - "\xa0\xf4sZ\xba\x0f\xdc\xd5\xb3\xea\xfa\xf6W?\xab\x94" + - "\xfeX\xf38I\xffI3I\x1f^\xf4\xb7\x1b\xaf~" + - "\xe0\xd7\x9fM\x11k\xd2\x9b\xcd\xefJ\xa7\x9a=\xe3\x10" + - "\xef'K\xbf\xff\xfb\x99\xc9\x99_T\x19\xc4\xbb\xec\xb9" + - "\xe6\x99(\xd5]\xe6I\xbf\xac\x8d\xf4<\xfc\xc4\xf8\x9f" + - "\xcf\xfd\xa6\xef\xcbj=\x17,liB\xa9\xb7\xc5\xb3" + - "]\xcb\x8d\xd2FZ\xb9\xcb\x8f\x9e\xbaa\xf4\xc0\xeb\xe7" + - "\xa6\x0a\xf9[[\xaeCI\xf5>\xe0-\xa4\xf3\xd6O" + - "\x0e\xf6=\xb8\xf6\xe87\x95\x97\xda\xd9\xb2\x9e.\xb5\xcf" + - "cX\x7f`\xab\xdd\xf7\xc8\xfd\xeeT~~\xb6\xe53" + - "\xe9\x84w\xd8\x8b-\x9ba\xaek;\xba\xce5\xb3\xc4" + - "\xf2\xf3\xf2JI/u\xf4nQ-[\xd5G\x06\xbc" + - "\x8d\xac\x91\xd4\xd4\xfcX\x16Qn@\x01@l\xed\x00" + - "@\x14\x9b\xd7\x00\xa0 \x8a\x8b\x01:\xd5\x11\xdd0\xb9" + - "[P\xad\xbc\xa1\xeb\x1cX\xde\xde6\xa4h\x8a\x9e\xe7" + - "\x93\x8f\xef\xe3\x9af\xdcl\x98Za\x95\xa9\x8e\xa8z" + - "\xe7\x12C\x1fVG\xb2\x88\x93y\x07uuK\xce\xc8" + - "o\xe0v5\xaf\x1cc1\x80\x18\x02\x88\x8d\xb3\x01\xe4" + - "Z\x86rZ\xc0dI\xb1G\xb1\x01\x04l\x80)\xce" + - "[\xa2\x19NaXSL^\xf0NB\xef\xa8+\xc3" + - "\xa3N\xf6\x03\xc8o3\x94O\x0b(\"\xa6)C\x8a" + - "\xa7\xc6\x01\xe4\xd3\x0c\xe5\x8f\x04\x14\x05!\xedY\xe1\xcc" + - "K\x00\xf2G\x0c\xe5/\x04\x14\x19K#\x03\x10?\xdd" + - "\x0f \x7f\xc1\xb0\x1f\x05\x14c\xb14\xe51\xf1\xfc8" + - "@?2\xcc5\x105\x1eOc\x1c@\xaa\xc3!\x80" + - "\\-\xd1\xd3( \xd6\xa4\xb1\x06@\x12q;@." + - "E\xe49\xc4\x9e\xc0\xb4\x87\xc4kp\x1c 7\x87\xe8" + - "}(\xa0k\xabEn\xd9J\x11\xb0\x84q\x100\x0e" + - "\xe8*\x8em\x0c\x96\x0a\x0a\xda|\xa9\xc97:<\xa1" + - "\xe7\xc7\xc2\xdd\"\xb7M5o\x0db\xa9\xa0x\x0c\x9d" + - "\x1b\x1d^\xc90\xca\x15\xd3\x1e\xe2\x0a\xda\x19\xdd\xe6\xe6" + - "&\x05\xb5\xe8ce\xcbRE\xd58\x16\xfa|\xae\x84" + - "b[X\x07\x02\xd6\x01\xba#\xa6\x92\xe7YnBB" + - "5\x0a\xe17\x05c4k\x1a[\xc6\xd0\xf7\x99\x058" + - "\x1d0\xcb\x10SQ\xfe\x05$\xa2k\xf2M\xdc\xb4x" + - "\x16\x89\x9f\xd8\x13\xea\x88\x15\xb1\x879\xb1\xcc\x1e\xb85" + - "\x1e\xb8\xd5Gj\x8e\x9b\x9b\xb89\xcf\xd1M>\xa2Z" + - "67}\xf2\xac\xac\x924\x95\xa2U\x89\x98C\x00r" + - "\x8a\xa1|\x85\x10i\x8f\xaaQX\xa9\xe8F\x8e\xf1|" + - "x\x89o)\xaa\x9f\xb7Y\x8ef[\xe1w\xb1)\xbf" + - "\xf3\xa2$o\xcf\xca*f\xa2J\xb35\x00r\x03C" + - "y\x86\x80nI1\x95\"\xb790\xd3\xc2TT]" + - "\x0115%\xba\xe9w\x89\x7fvV1\x95N\xfa\xd8" + - "\xb4\x08\xe2\xa9P\x82B\x12\xd61\x94\xb5\x0a\x88\xab&" + - "\x80<\xcaP\xb6\x05\xc42\xc27\x12\xecm\x86\xf2\xdd" + - "\x84p\xc1G\xf8\x9d\x14k[\x18\xca\x0f\x0b\xe8\x1a^" + - "L.!\xfdll\x04\x01\x1b\x01\xdd|9\xc4\xa0\xcd" + - "\xe4\x85LOH\xd7\x9db\xd6\xe4\x9bT4\x1c\xab\xdb" + - "\xb6y1Q\xb2-\xac\x01\x01k\x00\x93\xb6R\xe9\xf0" + - "\xb0LU9<\xb4f\x7f\x190\x01^\xd4\x91y\x9e" + - "2\xa8\xd3M\xafp\xdd\xf2\xbd\x14Rw-CyT" + - "\xc0V\xfc\x86\xc8t5\xde\x11\xd9\xa0U8Od\xba" + - "\x9c\xda\x1fY\xa1\x95}Md\x0a\xe0\x8dd\xb1\x12C" + - "y\xab\x80\xc9Q\xdb.a*\xaaY\xbe/:-/" + - "Ia*j\xdd\xcaN\xda\xcc\x87\xbc=@\xda\x0d\xb3" + - "|yw\xb4\x9c\x0b\x81i\x05LE\xdda\x95\x87k" + - "\xa6\xc8_\x01\x04-\xee\x1b\xc01\x15[5\xf4Y\xfd" + - "\xdcr4fO\x00UG\x94 ;M\xda']\xc2" + - "\xfa^%L\x08\x85\xf9H\xeaM\x9a\xa6az\xf9?" + - "<\xb1\xf7:\x00\xb9\x8b\xa1\xbc\\\xc0\x00C\x192S" + - "\x1fCy\x80\xd2d\x97oiy\x08@\xce2\x94\xd7" + - "\x0a\xd8\x96W\x1c\x8b\x87\xc9\xd9\xe4\xb69\xd6=l\x03" + - "\xe3f\x18o\xd6\xa8\xe1h\x85~\x0e\x09\xdb\x1cC\x04" + - "\x01q*\xd5z\x8c>\xcf\xf7\x15\xf5\xa0B9R\xa4" + - "\x87\xa1\x9c\x8d\x94[A\xb4\xe5\x0c\xe5[H\xb92\x0c" + - "\x06\xc9\xdf\x03\x0c\xe5\x92\x80\xaeFq\xac\xf7\x19\xc0," + - ";\xd4\xd1'f\x0d\x0f\xe1\x09\x100\x01\xe8:%\xcb" + - "69\xe5\xde\x10\xb2\xc4\x7f\xf1\xcc4)/\x99\x0a+" + - "Z\x17\xd0<\x8c\xcd\x15\xcb*U/\x07\xe7\xe0\xe2\xc8" + - "\xaeS\xc7\xe1\xa8a\xd9\xbaR\xe4\x00\x10\\g\x9bQ" + - "\"\x88P.\x09\xfb\xc6\x7f\x03i\xa4\x7f\x11'\x00m" + - "\x7fE^\x0d\x12\x01F\xc5\x16S\xd1k\xe5B\xa8\xeb" + - "v\xecQ\xae\xdbjg\xde\x93R\xe5\xda\xf6\x08w\xa1" + - "\x812\xd7UX-0\xd0\x8a\xa1\xc8j\x89\x0d|," + - "\xb0A\x1b/*\xaa\x16:\xb8l\xbanH\xdc\x14\xf1" + - "L\xce\xac\xd5\xf9\x86\xf9\x98\x9b\x11*v\x90\x9c\xf4\x08" + - "C\xf9\x09\xc2\x1cV\x8f\x13\xfd(z\x81\xa2" + - "r\xdd\xce\x14*#\x95\xe0\xa6\x1az\xf0\x9f\x19V\x08" + - "N^n\xcfqB\x7f\x8e\xc9h\x0a\x01\x88I@\xb7" + - "d\x18\xda\xca\x89\x19\xe0\"u6\x80\x09$\x0d=S" + - "\x08\x8as9H\x96\x1b\xd0\x96W\xb4L)\xd4D\xb5" + - "\xba\x1d\xdbpJ\xd0F-e!\xc4\x8d\xe9\xe8KM" + - "\xa38\x80\xdc,\xaa\xba\xa2]\x1a\xa2\x92\x8e\xa3\x16&" + - "\x85 \x06\xf0J\x0c(^\xcc\xd5\x861w\x0d\x15\xf7" + - "Y\x0c\xe5\xf9\x15\xc9`.%\x83\xffd(\xff\xb7\x80" + - "I\xca\x7fa\xe0oR4\x87_8\xc4\x07\xab\xd2[" + - "\xa7WH\xed*\x91\x8b#\x91\xa1\xc4\xf5\x00\xf2\x1c\x86" + - "\xf2\"\x01\xb7YN>O\xf7\x0b.\xcc\xa9v\xae\xe0" + - "\x16$-ed\xb2\xf4\xa9\xeb\xc4\x08\xb7\xfdUF\x1f" + - "6\x824\xfb\xad\xbe\xb9\xe4& |\xfd^\xa8\xa7\xec" + - "\x1b\x18\xc8\xfao/\xdf:\x00d\x91Y\xe1\xb1g\xdb" + - "\xa3wP`\x91O\xc9\"\x7fg(\x7f]\xd1\x09\x9c" + - "\xa3\x16\xf3\x1f\x0cs1\x8c\xfaI\x09\xbdwM\x8cb" + - "!\xe5\xc5r\xb7\x1f\xcb\x8d\xd8\x0f\x90k \xfa\x0c/" + - "\x96\xfd\xfc)5{1\x9b&\xfa\x95\x95\xb1\xdc\x8a{" + - "\x00rWF\xef&\x16\xbc\x9b\x0e\x05\xef\xa6E^," + - "\xc7\xfcX^\x88\xcf\x01\xe4\x16\x11\xbd\x07\x05L8f" + - "T\x13\xec|\xe9&\xceK\xdd\x90\xd4\xd4M\x1aUK\xf1" + - ")b|\x92\xa1\xfc\xbc\x80\x09n\x9a\x81v\x13BA" + - "3F\x96\xab:\xb7\xa8\x84T\xb5\xba%n\x16\x15\x9d" + - "\xebh/UT\xcd1\x09\xad\x13\xfb\xf5\x09\x9d\xc9\xbf" + - "\x9c\xc5x\xd6D\xd3\xb7$!1\x18\xa9b0\xf7\x15" + - "EBTc\xc2\x0d\xbaP\x0c\xf24\x01b\xca\xd9\xd1" + - "\xcd|\xa8rt\xb4\xa4m\xaa\xd1Q{\xe4\xfb\x899" + - "\xe0\x92\xde\xef\xfd\xdcJ:\x97\x80\xa6h\x1ew\x91\xb7" + - "V\x7f\xdbTE\xa7}\xaa:\xb7&\xaa:\x9e\xfbR" + - "\xd1\x08\xbc,\xc4*c\x14\xd8\xb019\xd5\xff3\x00" + - "\x00\xff\xff\xcb\xf9g*" +const schema_db8274f9144abc7e = "x\xda\xacY\x7f\x8c\x14\xf5\x15\x7fof\xf7\xe6\x0e\xee" + + "\xd8\x1df\xa1\xe7\xc5\xcb)\xc1X)P\x90\xd2\xc2\xb5" + + "\xf5~p\xe0\xed\xc9\x8f\x9d\xdb;4\x88\x09s\xbb\xdf" + + "\xdb\x1b\x98\x9dYff\x813 B\xa0\xc2E\xe5\x87" + + "\x92\x08\xd5F\xa8-j\xa9\x05kc\xb4h4m\xaa" + + "\xc6X5\xadMii\x93VI\xd5\x94XQ\x93\xd2" + + "\xa8\xd3\xbc\x99\x9d\x1f\xb7w\x1e\xd8\xf4\x9f\xcb\xe6\xcd\xfb" + + "~\xdf\xfb\xbe\xef\xe7}\xde\xfb\xbe\x9b\xb7Oh\xe7\xe6" + + "\xc7\x9f\x9e\x0c \xef\x89\xd78\xdf)\xbe~\xec\x9b\x87" + + "^\xdd\x05b\x13\xe7\xdcq\xba'u\xd1\xde\xf9g\x00" + + "\\\xf0b\xfcv\x94\xde\x8a\x0b\x00\xd2\x9b\xf1U\x80\xce" + + "\xef\xe6m}g\xddG\x07\xf6\x80\xd8\x84\xa1fL\x00" + + "X\xf0^|\x04%\xac\x11\x80w~x\xef\xd5\xeb\xce" + + "\xef\x96\xef\x1b\xad\x15GR\xfb\x0b\xa9}\xe2n\xf9a" + + "\xbc\x0d\xd0ys\xce\xd4D\xcd\xad=\x0f\x80\xdc\x845" + + "\x11m\x8e\xb4\xc5\x9a\x01\x94\xae\xa9\xa1\x9fW\xd7\xbc\x84" + + "\x80\xce\xeb\xb3O?\xbb\xff\xe7w}\x1f\xe4k\x11\xc1" + + "3\xbd\xb8\xf6?\x08(\xad\xa8\xa5\xfd\xee\xff\xe3s+" + + "\x8b\x07\x8e\x1c\x03\xf1Z\xff{\xb9\x96\xe3 \xe6,\xfc" + + "\xd3\xb9U+\x9e\x1c<\xee}\xf1\xdcQk\x9f\xa4\xa5" + + "\xc3\xee\xd2\x977'\xef\xee\xf8\xd6\xbe\xe3\xe4J\xd4q" + + "w\x93\x87jGP\xfaE-\xfd\xcd\xa1cx\xa9M\xfe\xdb\xd8\x00\x1c6\x00:" + + "\xb9JzB\x8b\xc9\xf2\xe9\xae@\xae\x97\x8b\x19\x93m" + + "R\xd1([\x1d\xb6\xcd\x8aB\xc9\xb6\xb0\x068\xac\x01" + + "L\xd8J\x14,A=\xac\x80\xc5\xdf\x13M\x96_\xcd" + + "LK\xe5\x0d}\x0cU\x8c\x13\xa6\xde\x0a&}H\xaa" + + "\x85\xb9\x86\xa9\x0a\x05U\x97\x93|\xecJ\xc7\xa9\xc4D" + + "\xa1\xa3\xae\xe5Q\x1e\xe2\xb0\x19?'1\x85\x85\xb5\x02" + + "\xc8\xebx\x945\x0e\x9b\xb9\xcfHL\x81Q\x89`\x86" + + "x\x94m\x0e\x9b\xf9OIL\xa1\xd9H\xd1.\xf1(" + + "o\xe501d\xdb%L\x865\xd4\xbb\xd26\xcb\xa5" + + "DL\x86\xedd\xe5\xae7\xb3\x01\xf7\x1b }\x0dj" + + "N\xe5\xebP\x85\x84\x81\xd7\xf2\x98\x0c;\xd6*\xa0\x08" + + "\x13\x92\xa5\x8fm\x8by\xa1(\x9b\x8a\xad\x1a:a;" + + "A\xe0\x8e\xa2\xb45\xe4\xe56\xd3\xc5>&\xc3\xce\xa3" + + "\xca,?\x8eY\x17\x9am\xf6R\xd34L\xb7,\x05" + + "{/\xbd\x1e@n\xe7Q^\xce\xa1\x8f\xc94\x85\xae" + + "\x9bG\xb9\x8f\xd8\xb9\xdd\x8b\xbe<\x00 gx\x94\xd7" + + "r\xd8\x92S\xca\x16\x0b\xae\xdcd\xb69\xdc1h\x03" + + "\xcf\xcc \xb9\xad!\xa3\xac\xe5{\x19\x08\xb69\x8c\x08" + + "\x1c\xe2\xc4\x85\xa4\xcb\xe8\x8e \xc3K\x9e\x88\x9f\xe4S" + + "\x17\x8fr&\xf4s\x05\xc9\x96\xf3(\xdfB~VP" + + "\xd2Op\xe8\xe3Q.q\xe8h\xc4\x1az\xb7\x01\xbc" + + "e\x07\xeez\xc2\x8c\xe1\xe6\x89\x00\x1c\x0a\x80N\xb9d" + + "\xd9&#\xf6\x0f\x80O\xfa_\x86\x1b\xabH*\xa3$" + + "\\\xb6\x19\xff\x0c\x01\x01\xac\xe8\x89\x1e\xa2\xc2\x00\xfd\x9d" + + "a\xb0\xc7\xcf\xeb!\xc3\xb2u\xa5\xc8\x00\xc0?\xd8v" + + "\xa3D\x08\"\xee\x0a\x1a\xde\xff\x0b$3\x8a)T\xf1" + + "\xe6\xc1\x08\xc7G\xe9\xc0]\x88\x05L\x86\x8f\xae*\x17" + + "\xc6\xb9\xf9\x8e\xb2=\xc4t[\xcd\xb9\xe6\xc6\xdc\xfc\x8c" + + "\x10\xa1A\xd4\xd2\xd7GB\xe9Gm\xc5@\x18Ja" + + "\x03\x1b\xf6\x03\xd3\xc2\x8a\x8a\xaa\x05\xf7_\x89g\x07\x08" + + "7\x85:\x13\xf97\x9a\xb7\x12z\xa5\xc7i\x0c\\<" + + "Lw\xf8\x00\x8f\xf2#\x04N\x8c\xbc\xdb\xc4\xa3\xad\xc0" + + "\xb9\xd8\x8c\x03\x88{;C\xb2w\x89\xbd\x86\xd8\xfe`" + + "\x84\xedcI\xb79\x11\x0f\xef\x0cw\x14\xe3|\x0ak" + + "\x01\xc4\xa3\xc4\xf6\x8fx%\xa0\xe2o\xba+\x02\x806" + + "\xefd\xdb)\x1fU\x166\x13\x95\xfa\xa7\xa2\xa1\xf7\xa9" + + "Ef\x94\xd1\x0e\xd247T\xd67\xb0\xfcR\xd4s" + + "F^\xd5\x0b\x10\xa4j\xce(\x96LfY\xa8\x1a\xba" + + "\\V4\x95\xb7\x87\x83-'\x8c\x16\xa5\x81\x07\x9dU" + + "\xa5\x16\x17\x92\x14\xaey~\xb8\xa4\x0e\xec\x01\xc8\xb6S" + + "\xe7\xb5\x1c\xc3K\x95\xd2\xd8\x09\x90\xed\"y\x06\xc3{" + + "\x95V`\x13@\xb6\x9b\xe4}\xd4\xd8y\xad\xa1$\xe3" + + "\xe3\x00\xd9>\x12\xaf\xc3\xb0(J\xb7\xb9\xdb\xaf%\xf9" + + "\x90\xdb\x1f\xc6\xbc\xfe\x90\xe1,\x80\xec:\x92o%y" + + "\x8dw\x01\xd20\xae\x07\xc8n!\xf9.\xb7A\x8c{" + + "\x0d\xe2\x0e4\x01\xb2w\x92\xfcn\x92\xd76\xba\xd7 " + + "\xedu\xe5{H~?\xc9\xeb\xaeHa\x1d\x80t\xc0" + + "m4\xf7\x93\xfcA\x92O\xc2\x14N\x02\x90\x0e\xe3\x11" + + "\x80\xec\x83$\x7f\x94\xe4\x93kR8\x19@\xfa\x91\xeb" + + "\xcf\xc3$?\x81n\x1e\xa9L\xb7\xd3\xf9hJ\x13\xf0" + + "\xd4\xb0\xba\xf2\x86\x15\x00\x96U\xde\x1c\xe8\xf1M\xc6H" + + "\xd0\xa3\x03\x13\xe1\xac\x05\x10\x13\x80N\xc90\xb4\x95\xa3" + + "\xa9\xe2R\x05\xbe\x02\x18H\x18z:\xefw\x05\x95\xc4" + + "Yn@KN\xd1\xd2\xa5\xc0\x13\xd5\xea(\xdbF\xb9" + + "\x04-\xd4\x07\xe7\x03\x04\x99e}\x99i\x14\xfb\x90\x99" + + "EUW\xb4\xcb\xc3V\xa2\\V\xf3c\xd2\x92\xab\x06" + + "ZK\xa9\xb5Oq\xf3\xb06\xc8\xc3\xeb\xa8q\x98\xc9" + + "\xa3\xdbTE\xeb" + + "*+\x1a\xb4dm%\xb7!l\x864\xab[\xd1\xf3" + + "\x16\x0e)\x1b\x181\xb3`\x94Cf\xb65k53" + + "\xd5A\xc0\xb0}\x0aJW\"c\x18\xd5\x15-\xcb\x90" + + "\xee\xd3K\xf5\xe0[Q\xd9\x92\xcekl\x09Vr\xda" + + "\xe0\xf5\xb02\xa8\xf4\xc5\xd0ut\xbf\xe8}j\x0b\x95" + + "\x07{\xcc\x0b\x8d\xff\"0\xb5y\x18\xa2\x9bM\xf2q" + + "\x80`\x10\x88\xfeDI\xdcx;p\xa2*`8\xfd" + + "B\x7f\xd8%\xdef\x02'\xf6\x0b\xc8\x05CW\xf4\x87" + + "\xabbz\x048q\xa9\x80|0UE\x7f\x9e#." + + "\xee\x04N\x9c#8~\xcb\x05m\x9e;\xed\xe8\xf8\xb8" + + "\x86\x16\x17\xd9\xed\xe8\xf8\xcfG\xf4[3\x80v\xdc^" + + "\xe1\xb8v\x8c\x8eN\xbed\x8b\xd7\xcbZ\xac\xcb\xc9\x1a" + + "\x7f v\xe9N\xdd\xb3\x93 \xcf\xabf3\xeb#/" + + "U\xcd\xa8\xb4J\x89\x95\x11>\x9b(\x17=\x87\xfd\xd2" + + "\x9c\xa0\xc5U\x8fS\xca\xc6-<\xca\xbb\"\xd4\xb9c" + + "F\xe4\xc5\xeawY\xbb{*M\xcc\xc3A)\x16\x1f" + + "\x1a\x01\x90\x1f\xe6Q>\x11y\x9c>F\x8a\x8f\xf2(" + + "?\xc5\xa1\xc0L\xd3\xf7sT\xcahFa\xb9\xaa3" + + "\x8b\x8aSU\xdf]bfQ\xd1\x99\x8e\xf62E\xd5" + + "\xca&\xa1z\xf4;bT\xf7s\x99C\xaa,3\x85" + + "\x0abc.b\xfd\xc94\xfa\x03tQ$\xe45\x08" + + "\x8e\xdf\x08\xa3\xcf\xfb\x04\x9cKL\xdanf\x03\xe3\x0c" + + "\xda\xaa\xeerF\x88\x91\xd1\xfc\xf1\xc5\xfb\x8e;\xd0\xe8" + + "mc\x97\x85\xbfp\xceyi\xd6\xae\x8c1*%\xae" + + "\xaa\xc2\xcd\x18\xaf\xbe\xae\x09K\x9c{\xcd\xc9\xf0?\x0d" + + "\x15sV\xa5\xd0\x00?h\x8c\xad!\xff\x0d\x00\x00\xff" + + "\xff\xf8\xb3\xea\x07" func init() { schemas.Register(schema_db8274f9144abc7e,