mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 02:02:26 -06:00 
			
		
		
		
	[chore] update dependencies, bump to Go 1.19.1 (#826)
* update dependencies, bump Go version to 1.19 * bump test image Go version * update golangci-lint * update gotosocial-drone-build * sign * linting, go fmt * update swagger docs * update swagger docs * whitespace * update contributing.md * fuckin whoopsie doopsie * linterino, linteroni * fix followrequest test not starting processor * fix other api/client tests not starting processor * fix remaining tests where processor not started * bump go-runners version * don't check last-webfingered-at, processor may have updated this * update swagger command * update bun to latest version * fix embed to work the same as before with new bun Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
This commit is contained in:
		
					parent
					
						
							
								00d38855d4
							
						
					
				
			
			
				commit
				
					
						a156188b3e
					
				
			
		
					 1135 changed files with 258905 additions and 137146 deletions
				
			
		
							
								
								
									
										263
									
								
								vendor/github.com/goccy/go-json/internal/runtime/rtype.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								vendor/github.com/goccy/go-json/internal/runtime/rtype.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,263 @@
 | 
			
		|||
package runtime
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Type representing reflect.rtype for noescape trick
 | 
			
		||||
type Type struct{}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Align reflect.(*rtype).Align
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Align(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) Align() int {
 | 
			
		||||
	return rtype_Align(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_FieldAlign reflect.(*rtype).FieldAlign
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_FieldAlign(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) FieldAlign() int {
 | 
			
		||||
	return rtype_FieldAlign(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Method reflect.(*rtype).Method
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Method(*Type, int) reflect.Method
 | 
			
		||||
 | 
			
		||||
func (t *Type) Method(a0 int) reflect.Method {
 | 
			
		||||
	return rtype_Method(t, a0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_MethodByName reflect.(*rtype).MethodByName
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_MethodByName(*Type, string) (reflect.Method, bool)
 | 
			
		||||
 | 
			
		||||
func (t *Type) MethodByName(a0 string) (reflect.Method, bool) {
 | 
			
		||||
	return rtype_MethodByName(t, a0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_NumMethod reflect.(*rtype).NumMethod
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_NumMethod(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) NumMethod() int {
 | 
			
		||||
	return rtype_NumMethod(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Name reflect.(*rtype).Name
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Name(*Type) string
 | 
			
		||||
 | 
			
		||||
func (t *Type) Name() string {
 | 
			
		||||
	return rtype_Name(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_PkgPath reflect.(*rtype).PkgPath
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_PkgPath(*Type) string
 | 
			
		||||
 | 
			
		||||
func (t *Type) PkgPath() string {
 | 
			
		||||
	return rtype_PkgPath(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Size reflect.(*rtype).Size
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Size(*Type) uintptr
 | 
			
		||||
 | 
			
		||||
func (t *Type) Size() uintptr {
 | 
			
		||||
	return rtype_Size(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_String reflect.(*rtype).String
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_String(*Type) string
 | 
			
		||||
 | 
			
		||||
func (t *Type) String() string {
 | 
			
		||||
	return rtype_String(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Kind reflect.(*rtype).Kind
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Kind(*Type) reflect.Kind
 | 
			
		||||
 | 
			
		||||
func (t *Type) Kind() reflect.Kind {
 | 
			
		||||
	return rtype_Kind(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Implements reflect.(*rtype).Implements
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Implements(*Type, reflect.Type) bool
 | 
			
		||||
 | 
			
		||||
func (t *Type) Implements(u reflect.Type) bool {
 | 
			
		||||
	return rtype_Implements(t, u)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_AssignableTo reflect.(*rtype).AssignableTo
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_AssignableTo(*Type, reflect.Type) bool
 | 
			
		||||
 | 
			
		||||
func (t *Type) AssignableTo(u reflect.Type) bool {
 | 
			
		||||
	return rtype_AssignableTo(t, u)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_ConvertibleTo reflect.(*rtype).ConvertibleTo
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_ConvertibleTo(*Type, reflect.Type) bool
 | 
			
		||||
 | 
			
		||||
func (t *Type) ConvertibleTo(u reflect.Type) bool {
 | 
			
		||||
	return rtype_ConvertibleTo(t, u)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Comparable reflect.(*rtype).Comparable
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Comparable(*Type) bool
 | 
			
		||||
 | 
			
		||||
func (t *Type) Comparable() bool {
 | 
			
		||||
	return rtype_Comparable(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Bits reflect.(*rtype).Bits
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Bits(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) Bits() int {
 | 
			
		||||
	return rtype_Bits(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_ChanDir reflect.(*rtype).ChanDir
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_ChanDir(*Type) reflect.ChanDir
 | 
			
		||||
 | 
			
		||||
func (t *Type) ChanDir() reflect.ChanDir {
 | 
			
		||||
	return rtype_ChanDir(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_IsVariadic reflect.(*rtype).IsVariadic
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_IsVariadic(*Type) bool
 | 
			
		||||
 | 
			
		||||
func (t *Type) IsVariadic() bool {
 | 
			
		||||
	return rtype_IsVariadic(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Elem reflect.(*rtype).Elem
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Elem(*Type) reflect.Type
 | 
			
		||||
 | 
			
		||||
func (t *Type) Elem() *Type {
 | 
			
		||||
	return Type2RType(rtype_Elem(t))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Field reflect.(*rtype).Field
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Field(*Type, int) reflect.StructField
 | 
			
		||||
 | 
			
		||||
func (t *Type) Field(i int) reflect.StructField {
 | 
			
		||||
	return rtype_Field(t, i)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_FieldByIndex reflect.(*rtype).FieldByIndex
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_FieldByIndex(*Type, []int) reflect.StructField
 | 
			
		||||
 | 
			
		||||
func (t *Type) FieldByIndex(index []int) reflect.StructField {
 | 
			
		||||
	return rtype_FieldByIndex(t, index)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_FieldByName reflect.(*rtype).FieldByName
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_FieldByName(*Type, string) (reflect.StructField, bool)
 | 
			
		||||
 | 
			
		||||
func (t *Type) FieldByName(name string) (reflect.StructField, bool) {
 | 
			
		||||
	return rtype_FieldByName(t, name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_FieldByNameFunc reflect.(*rtype).FieldByNameFunc
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_FieldByNameFunc(*Type, func(string) bool) (reflect.StructField, bool)
 | 
			
		||||
 | 
			
		||||
func (t *Type) FieldByNameFunc(match func(string) bool) (reflect.StructField, bool) {
 | 
			
		||||
	return rtype_FieldByNameFunc(t, match)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_In reflect.(*rtype).In
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_In(*Type, int) reflect.Type
 | 
			
		||||
 | 
			
		||||
func (t *Type) In(i int) reflect.Type {
 | 
			
		||||
	return rtype_In(t, i)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Key reflect.(*rtype).Key
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Key(*Type) reflect.Type
 | 
			
		||||
 | 
			
		||||
func (t *Type) Key() *Type {
 | 
			
		||||
	return Type2RType(rtype_Key(t))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Len reflect.(*rtype).Len
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Len(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) Len() int {
 | 
			
		||||
	return rtype_Len(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_NumField reflect.(*rtype).NumField
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_NumField(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) NumField() int {
 | 
			
		||||
	return rtype_NumField(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_NumIn reflect.(*rtype).NumIn
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_NumIn(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) NumIn() int {
 | 
			
		||||
	return rtype_NumIn(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_NumOut reflect.(*rtype).NumOut
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_NumOut(*Type) int
 | 
			
		||||
 | 
			
		||||
func (t *Type) NumOut() int {
 | 
			
		||||
	return rtype_NumOut(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname rtype_Out reflect.(*rtype).Out
 | 
			
		||||
//go:noescape
 | 
			
		||||
func rtype_Out(*Type, int) reflect.Type
 | 
			
		||||
 | 
			
		||||
//go:linkname PtrTo reflect.(*rtype).ptrTo
 | 
			
		||||
//go:noescape
 | 
			
		||||
func PtrTo(*Type) *Type
 | 
			
		||||
 | 
			
		||||
func (t *Type) Out(i int) reflect.Type {
 | 
			
		||||
	return rtype_Out(t, i)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:linkname IfaceIndir reflect.ifaceIndir
 | 
			
		||||
//go:noescape
 | 
			
		||||
func IfaceIndir(*Type) bool
 | 
			
		||||
 | 
			
		||||
//go:linkname RType2Type reflect.toType
 | 
			
		||||
//go:noescape
 | 
			
		||||
func RType2Type(t *Type) reflect.Type
 | 
			
		||||
 | 
			
		||||
//go:nolint structcheck
 | 
			
		||||
type emptyInterface struct {
 | 
			
		||||
	_   *Type
 | 
			
		||||
	ptr unsafe.Pointer
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Type2RType(t reflect.Type) *Type {
 | 
			
		||||
	return (*Type)(((*emptyInterface)(unsafe.Pointer(&t))).ptr)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										91
									
								
								vendor/github.com/goccy/go-json/internal/runtime/struct_field.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								vendor/github.com/goccy/go-json/internal/runtime/struct_field.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
package runtime
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"unicode"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func getTag(field reflect.StructField) string {
 | 
			
		||||
	return field.Tag.Get("json")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IsIgnoredStructField(field reflect.StructField) bool {
 | 
			
		||||
	if field.PkgPath != "" {
 | 
			
		||||
		if field.Anonymous {
 | 
			
		||||
			t := field.Type
 | 
			
		||||
			if t.Kind() == reflect.Ptr {
 | 
			
		||||
				t = t.Elem()
 | 
			
		||||
			}
 | 
			
		||||
			if t.Kind() != reflect.Struct {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			// private field
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	tag := getTag(field)
 | 
			
		||||
	return tag == "-"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type StructTag struct {
 | 
			
		||||
	Key         string
 | 
			
		||||
	IsTaggedKey bool
 | 
			
		||||
	IsOmitEmpty bool
 | 
			
		||||
	IsString    bool
 | 
			
		||||
	Field       reflect.StructField
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type StructTags []*StructTag
 | 
			
		||||
 | 
			
		||||
func (t StructTags) ExistsKey(key string) bool {
 | 
			
		||||
	for _, tt := range t {
 | 
			
		||||
		if tt.Key == key {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func isValidTag(s string) bool {
 | 
			
		||||
	if s == "" {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	for _, c := range s {
 | 
			
		||||
		switch {
 | 
			
		||||
		case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c):
 | 
			
		||||
			// Backslash and quote chars are reserved, but
 | 
			
		||||
			// otherwise any punctuation chars are allowed
 | 
			
		||||
			// in a tag name.
 | 
			
		||||
		case !unicode.IsLetter(c) && !unicode.IsDigit(c):
 | 
			
		||||
			return false
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StructTagFromField(field reflect.StructField) *StructTag {
 | 
			
		||||
	keyName := field.Name
 | 
			
		||||
	tag := getTag(field)
 | 
			
		||||
	st := &StructTag{Field: field}
 | 
			
		||||
	opts := strings.Split(tag, ",")
 | 
			
		||||
	if len(opts) > 0 {
 | 
			
		||||
		if opts[0] != "" && isValidTag(opts[0]) {
 | 
			
		||||
			keyName = opts[0]
 | 
			
		||||
			st.IsTaggedKey = true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	st.Key = keyName
 | 
			
		||||
	if len(opts) > 1 {
 | 
			
		||||
		for _, opt := range opts[1:] {
 | 
			
		||||
			switch opt {
 | 
			
		||||
			case "omitempty":
 | 
			
		||||
				st.IsOmitEmpty = true
 | 
			
		||||
			case "string":
 | 
			
		||||
				st.IsString = true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return st
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										100
									
								
								vendor/github.com/goccy/go-json/internal/runtime/type.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								vendor/github.com/goccy/go-json/internal/runtime/type.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,100 @@
 | 
			
		|||
package runtime
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SliceHeader struct {
 | 
			
		||||
	Data unsafe.Pointer
 | 
			
		||||
	Len  int
 | 
			
		||||
	Cap  int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	maxAcceptableTypeAddrRange = 1024 * 1024 * 2 // 2 Mib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type TypeAddr struct {
 | 
			
		||||
	BaseTypeAddr uintptr
 | 
			
		||||
	MaxTypeAddr  uintptr
 | 
			
		||||
	AddrRange    uintptr
 | 
			
		||||
	AddrShift    uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	typeAddr        *TypeAddr
 | 
			
		||||
	alreadyAnalyzed bool
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:linkname typelinks reflect.typelinks
 | 
			
		||||
func typelinks() ([]unsafe.Pointer, [][]int32)
 | 
			
		||||
 | 
			
		||||
//go:linkname rtypeOff reflect.rtypeOff
 | 
			
		||||
func rtypeOff(unsafe.Pointer, int32) unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
func AnalyzeTypeAddr() *TypeAddr {
 | 
			
		||||
	defer func() {
 | 
			
		||||
		alreadyAnalyzed = true
 | 
			
		||||
	}()
 | 
			
		||||
	if alreadyAnalyzed {
 | 
			
		||||
		return typeAddr
 | 
			
		||||
	}
 | 
			
		||||
	sections, offsets := typelinks()
 | 
			
		||||
	if len(sections) != 1 {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	if len(offsets) != 1 {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	section := sections[0]
 | 
			
		||||
	offset := offsets[0]
 | 
			
		||||
	var (
 | 
			
		||||
		min         uintptr = uintptr(^uint(0))
 | 
			
		||||
		max         uintptr = 0
 | 
			
		||||
		isAligned64         = true
 | 
			
		||||
		isAligned32         = true
 | 
			
		||||
	)
 | 
			
		||||
	for i := 0; i < len(offset); i++ {
 | 
			
		||||
		typ := (*Type)(rtypeOff(section, offset[i]))
 | 
			
		||||
		addr := uintptr(unsafe.Pointer(typ))
 | 
			
		||||
		if min > addr {
 | 
			
		||||
			min = addr
 | 
			
		||||
		}
 | 
			
		||||
		if max < addr {
 | 
			
		||||
			max = addr
 | 
			
		||||
		}
 | 
			
		||||
		if typ.Kind() == reflect.Ptr {
 | 
			
		||||
			addr = uintptr(unsafe.Pointer(typ.Elem()))
 | 
			
		||||
			if min > addr {
 | 
			
		||||
				min = addr
 | 
			
		||||
			}
 | 
			
		||||
			if max < addr {
 | 
			
		||||
				max = addr
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		isAligned64 = isAligned64 && (addr-min)&63 == 0
 | 
			
		||||
		isAligned32 = isAligned32 && (addr-min)&31 == 0
 | 
			
		||||
	}
 | 
			
		||||
	addrRange := max - min
 | 
			
		||||
	if addrRange == 0 {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	var addrShift uintptr
 | 
			
		||||
	if isAligned64 {
 | 
			
		||||
		addrShift = 6
 | 
			
		||||
	} else if isAligned32 {
 | 
			
		||||
		addrShift = 5
 | 
			
		||||
	}
 | 
			
		||||
	cacheSize := addrRange >> addrShift
 | 
			
		||||
	if cacheSize > maxAcceptableTypeAddrRange {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	typeAddr = &TypeAddr{
 | 
			
		||||
		BaseTypeAddr: min,
 | 
			
		||||
		MaxTypeAddr:  max,
 | 
			
		||||
		AddrRange:    addrRange,
 | 
			
		||||
		AddrShift:    addrShift,
 | 
			
		||||
	}
 | 
			
		||||
	return typeAddr
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue